.NET SerialPort sınıfını kullanarak seri bağlantı noktalarından veri okuma konusunda birçok soru okudum, ancak önerilen yaklaşımların hiçbiri benim için tamamen etkili olmadı..NET çerçevesini kullanarak seri bağlantı noktasını okumak için doğru yol nedir?
SerialPort port = new SerialPort("COM1");
port.DataReceived += new SerialDataReceivedEventHandler(MyDataReceivedHandler);
Ve olay işleyicisi: Burada
şimdilik kullanıyorum kodudurvoid MyDataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
int count = port.BytesToRead;
byte[] ByteArray = new byte[count];
port.Read(ByteArray, 0, count);
}
Ama hala bazen bazı verileri özlüyorum. Olay işleyicisindeki verileri farklı bir şekilde okumaya çalıştım ama şanssız.
.NET 4.5, SerialPort akışında kullanılabilir gibi görünen ReadAsync yönteminde olduğu gibi, bazı eşzamansız görevleri yapmak için yeni olanaklar getirdiğinden, bu durumları ele almak için önerilen yaklaşımın ne olacağını merak ediyorum.
Sorunuz gerçekten belirsizdir. "Bazen bazı verileri eksik özlüyorum" diye anlatıyor makinanızı anlatmak "arabam bazen komik bir ses çıkarır" ve ne kadar maliyetinin düzeltileceğini sorar. Belki ilgili bir soruya [bu cevap] (http://stackoverflow.com/a/2966357/62576) yardımcı olabilir. Ancak, yardım istiyorsanız çok daha spesifik olmanız gerektiğini düşünüyorum; olduğu gibi, bu konuyla ilgili diğer sorulara bakarak cevaplanamayacak pek bir şey yok. –
Haklısınız, neler olup bittiğini daha iyi göstermek için birlikte gerçek bir örnek koyacağım ... –
RS232 veya 485 üzerinden bir seri iletişim protokolü uygulamak gerçekten çok zor bir iş. Çok fazla deneyim gerektirir. Bunu eski eski DOS günlerinden beri uyguluyorum ve hala bazı ortak tuzaklarda sıkışıp kaldım. Neden seri haberleşmeyle ilgili güvenilir bir üçüncü taraf teklifi bulmaya çalışmıyorsunuz? Muhtemelen kendinize düşecek olan çok fazla, çok sayıda böcekleri ütülemiş olacaklar :-) Eğer bu bir egzersiz ise, o zaman devam edin, son olarak seri haberleşmeye hakim olmak için büyük bir memnuniyet veriyor! :-) – Loudenvier