Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => Visual C# => Konuyu başlatan: görkem - 15 Mart 2019, 16:59:30

Başlık: Seri port algoritma sorusu
Gönderen: görkem - 15 Mart 2019, 16:59:30
Arkadaşlar merhaba,

Seri porttan ReadLine komutu kullanarak string veri çekiyorum 1000 er byte şeklinde verileri pc ye gönderiyorum
fakat 1000 byte ın içinde NewLine karakteride mevcut. 1000 byte olmadan veri alma sonlanıyor doğal olarak. Nasıl bir algoritma kullanmalıyım ki NewLine karekterlerini yoksayabiliyim ?

Başlık: Ynt: Seri port algoritma sorusu
Gönderen: quarko - 15 Mart 2019, 17:16:43
ReadLine ile okuyorsan '\n' karakterini görene kadar okur. Onun yerine Read veya ReadExisting komutları olması lazım. Okumayı öyle gerçekleştirirsen, '\n' karakterlerini atlayabilirsin.
Başlık: Ynt: Seri port algoritma sorusu
Gönderen: görkem - 15 Mart 2019, 17:38:01
o komutlar ile veri kaçırıyor fakat readline ile veri kaçırmıyor işin içinden çıkamadım bir türlü
Başlık: Ynt: Seri port algoritma sorusu
Gönderen: brandice5 - 15 Mart 2019, 17:43:37
ReceivedBytesThreshold değerini 1000 yap.
Başlık: Ynt: Seri port algoritma sorusu
Gönderen: görkem - 15 Mart 2019, 17:53:53
mantığını şu şekilde ayarlamıştım
timer ile veri gelip gelmediğini kontrol ediyorum.ilk bir byte işaret byte ı gönderiyorum pc ye sonra sonsuz döngü içerisinde readline komutunu kullanıyorum  1000 byte veri sağlıklı şekilde alınıyor taki newline karakteri 1000 byte verinin içinde olana kadar.

ben eğer ReceivedBytesThreshold  değerini 1000 yaparsam işaret byte ını kullanamayacağım

açıkcası c# da seriport u hiç verimli kullanamadam usb de sorun yaşamadım  fakat seri port hep sorun çıkarttı bana

stabil haberleşmeyi seri portta asenkron olarak tam manasıyla nasıl yapabiliriz
Başlık: Ynt: Seri port algoritma sorusu
Gönderen: Endorfin35+ - 15 Mart 2019, 20:08:09
Bir ara benzer bir sorunla ugrasmistim. Gonderdugun verinin sonuna kendi ozel karakterini koysan, pc tarafinda ozel karakterini goresiye kadar okusan, bir kac parca olursa sonradan birlestirsen olur belki...
Başlık: Ynt: Seri port algoritma sorusu
Gönderen: görkem - 15 Mart 2019, 20:15:54
Readline haricinde bir türlü veri alamıyorum alabilsem dediğinizi yapabilirim
Başlık: Ynt: Seri port algoritma sorusu
Gönderen: quarko - 15 Mart 2019, 20:51:42
Veri gelip gelmediğini timer ile kontrol etmen zaten ilk hatan. DateReceived olayı tetiklenecek şekilde ayarla. O zaman ReadLine a da mecbur kalmazsın. Veri geldiğinde eksiksiz bir şekilde alır, düzgün bir parser yazabilirsen işini halledebilirsin.
Başlık: Ynt: Seri port algoritma sorusu
Gönderen: Gediz1337 - 16 Mart 2019, 13:44:18
Bence de DataReceived kullanmak daha makul bir yöntem ama bir şekilde DataReceived kullanmadan halletmek durumundaysanız farklı bir yolu deneyebilirsiniz. Çok düzgün bir yöntem değil ama, porta ait NewLine property (https://docs.microsoft.com/en-us/dotnet/api/system.io.ports.serialport.newline?view=netframework-4.7.2)sini "\n" dışında bir karakter yapmayı denediniz mi?
Başlık: Ynt: Seri port algoritma sorusu
Gönderen: foseydon - 04 Nisan 2019, 10:33:40
C# seri port uygulamasinda en mantikli yontem polling. bir timer kurun, veriyi orda toplayin. readline'in veri kacirma ile alakasi yok, o sadece veriyi okuma sekli. isterseniz readbyte ile byte olarakta okuyabilirsiniz. veriyi string yerine ham okumak daha mantikli, bir utility class yazin kendinize bu tarz data cevrim isleri icin her zaman kullanirsiniz.
Başlık: Ynt: Seri port algoritma sorusu
Gönderen: cripple - 04 Nisan 2019, 13:23:06
timer ile kontrol ederek seri port tan data okunduğunda veri kaybı ihtimali yüksektir. Event kullanmak çok daha mantıklı SerialDataReceivedEventHandler fonksiyonu ile event i aktif edebilirsiniz. Daha sonra da ReadLine kullanmak yerine (zaten kelime anlamı satırı oku demek oluyor \n geldiğinde bu fonksiyon durmak üzere yazılmıştır) ReadByte veya ReadChar fonksiyonlarından herhangi birini kullanrak byte byte okuyabilrsiniz. Okuduğunuz bir buffer a alıp parsing işlemleri ile kullanırsınız.
Başlık: Ynt: Seri port algoritma sorusu
Gönderen: foseydon - 05 Nisan 2019, 10:14:55
http://www.sparxeng.com/blog/software/must-use-net-system-io-ports-serialport
https://www.hanselman.com/blog/PerformanceOfSystemIOPortsVersusUnmanagedSerialPortCode.aspx