繁体   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