簡體   English   中英

如何使用線程/后台工作程序C#實現SerialPort?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM