C#中的连续RS485通信和UI

时间:2013-09-03 06:56:31

标签: c# backgroundworker

我有RS485从属设备连接到计算机。计算机向设备询问一些问题并等待回复。

通信应该是持续的用户界面,以显示来自设备的数据并实时控制它们。

我开发了一些使用bacgroundWorker进行RS485通信的应用程序。

我不确定,但我认为这次使用它不是正确的方法,因为用户界面元素无法从backgroundWorker更改或更新。

我可以使用backgroundWorker和全局数据变量,然后在timer事件上更新UI。但我担心这个解决方案。 谢谢!

2 个答案:

答案 0 :(得分:3)

您不需要使用后台工作程序,因为串行端口支持异步操作 - 您订阅DataReceived并在打开端口后,将定期使用接收到的数据调用您的事件。

然后,您需要缓冲数据,直到您构建完整的消息数据包(您可能会获得数据,并且无法保证您将获得完整的数据包),然后更新您的UI(通常使用BeginInvoke将控制权传递回UI线程)

答案 1 :(得分:-1)

我设计了远程监控系统,通过RS-485与控制器配合使用。它实现为Windows服务,它在SQL Server中写入数据。 UI应用程序(它是我上一版本中的Web应用程序)从SQL获取数据。在之前的版本中,我使用了命名管道。