我正在编写一个类来处理与外部设备的所有串行通信(即读写)。数据以20Hz流式传输到计算机,偶尔也会将数据写入设备。然后,该类将通过事件将有效数据输出到主UI。 我想把这个类放在一个单独的线程中,因为我之前的代码在设备中引起了一些“断断续续”,因为它在主UI线程中。
我只是不确定如何使用线程/后台工作程序构造和实现SerialPort类,因为我在这方面缺乏经验。
只有数据接收事件存在于线程/后台工作者中? 如何将数据传入和传出创建的线程/后台工作程序?
非常感谢任何提示或建议!
答案 0 :(得分:1)
我的第一个提示是你应该把它想象成网络(Socket)通信。线程问题大致相同。通过他们拥有的MSDN文档(如果我没记错),有两种不同的方法,即异步和同步。我个人会使用其中一种异步方式。
您还可以查看新的任务库。
如果您还有其他问题,请继续查看并回来=)
同样来自带有线程example的msdn库串口,这是控制台,但无论如何。
答案 1 :(得分:0)
您只需在另一个线程中实现SerialPort的实际使用。当需要“通知”您的UI时,您可以使用“BeginInvoke”来获取在UI线程内运行的实际UI处理。
类似的东西:
string s = _port.ReadLine();
form.BeginInvoke((MethodInvoker)delegate
{
_textbox.Text = s;
});
答案 2 :(得分:0)
只需使用DataReceived
事件。