我已經閱讀了很多關於如何使用.NET SerialPort類從串口讀取數據的問題,但沒有一種推薦方法對我來說已經證明是完全有效的。使用.NET框架讀取串行端口的正確方法是什麼?
這裏是我用現在的代碼:
SerialPort port = new SerialPort("COM1");
port.DataReceived += new SerialDataReceivedEventHandler(MyDataReceivedHandler);
和事件處理程序:
void MyDataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
int count = port.BytesToRead;
byte[] ByteArray = new byte[count];
port.Read(ByteArray, 0, count);
}
但我仍然有時會丟失一些數據。我嘗試了不同的方式來閱讀事件處理程序中的數據,但沒有運氣。
由於.NET 4.5帶來了一些新的可能性來完成一些異步任務,例如ReadAsync方法似乎可以用在串口數據流上,我很好奇看到什麼是處理這些情況的推薦方法。
您的問題是非常含糊。 「有時候我仍然錯過了一些數據」就像告訴你的機械師「我的車有時會發出有趣的噪音」,並詢問需要多少費用才能修復。也許[這個答案](http://stackoverflow.com/a/2966357/62576)相關的問題可能會有所幫助。但是,如果你需要幫助,我認爲你需要更加具體。事實上,沒有太多的東西不能通過查看關於這個主題的其他問題來回答。 –
你是對的,我會把一個真實的例子放在一起,以更好地說明發生了什麼...... –
通過RS232或485實現串行通信協議是一項非常非常艱鉅的任務。它需要很多的經驗。自從老DOS時代以來,我一直在執行這個操作,但仍然陷入了一些常見的陷阱。你爲什麼不嘗試找到一個可靠的第三方產品來處理串行通信?他們可能已經解決了你會陷入自己的所有許多錯誤:-)如果這是一個練習,那麼繼續,它會給予終端掌握串行通信非常滿意! :-) – Loudenvier