[英]How to implement SerialPort with thread/background worker C#?
我正在編寫一個類,該類將處理與外部設備的所有串行通信(即讀取和寫入)。 數據以20Hz的速度流式傳輸到計算機,偶爾也將數據寫入設備。 然后,該類將通過事件將有效數據輸出到主UI。 我想將此類放在單獨的線程中,因為我的先前代碼由於在主UI線程中而在設備中引起了一些“卡頓”。
我只是不確定如何使用線程/后台工作者來構造和實現SerialPort類,因為我對此領域沒有經驗。
線程/后台工作程序中是否僅會存在數據接收事件? 您如何將數據傳入和傳出創建的線程/后台工作者?
任何提示或建議將不勝感激!
我的第一個提示是,您應該將其視為網絡(套接字)通信。 線程問題大致相同。 通過他們的MSDN文檔(如果我沒記錯的話),可以通過兩種不同的方式來做到這一點,即異步和同步。 我個人將使用異步方式之一。
您還可以查看新的任務庫。
開始查看該內容,如果還有其他問題,請返回=)
同樣從msdn庫的帶有線程示例的串行端口到控制台,但是無論如何。
您只需在另一個線程中實現SerialPort的實際使用即可。 當需要“通知”用戶界面時,可以使用“ BeginInvoke”來獲取實際的用戶界面處理,以在用戶界面線程中運行。
就像是:
string s = _port.ReadLine();
form.BeginInvoke((MethodInvoker)delegate
{
_textbox.Text = s;
});
只需使用DataReceived
事件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.