我需要從串行端口獲取傳入數據,將'ReadExisting'字符串放入隊列中,然後重新進入用戶界面。C#如何將串行輸入數據放入隊列並使用背景工作器取消隊列
在de-que過程中,我將格式化傳入的字符串以刪除不需要的字符,添加LineFeeds(傳入中沒有EOL字符)等,並將字符串的各個部分發布到多個控件中(列表框,文本框)進行查看。
這是據我已經能夠去創建傳入數據字符串(RxString):
private void serialPort1_DataReceived(object sender,
System.IO.Ports.SerialDataReceivedEventArgs e)
{
RxString = serialPort1.ReadExisting();
this.Invoke(new EventHandler(DisplayText));
}
我能夠得到傳入的數據,但是當我嘗試對其進行格式化和顯示一些進來的數據丟失或丟失或者某些內容變得不可讀。如果我沒有格式化文本&直接發送到列表框中,數據全部存在,但由於所有額外的代碼字符而無法使用。
我想使用backgroundworker處理(DisplayText),以便串行數據可以進入隊列,以便在背景工作人員將信息放置在屏幕上時不會丟失。除非有更好的辦法。
沒有必要用「C#」來標題。這就是標籤的用途。 –
非常不清楚,您沒有發佈實際格式化代碼,因此包含錯誤。在調用之前首先組裝整個響應通常非常重要,當您不調試時,ReadExisting()通常只返回一個或兩個字符。如果可以,請利用ReadLine()。 –
串口的末端是什麼?它使用什麼協議? – dbasnett