连续RS485通信和C#中的UI
本文关键字:中的 UI RS485 通信 连续 | 更新日期: 2023-09-27 18:29:55
我有RS485从设备连接到计算机。计算机向设备询问一些问题并等待响应。
通信应与用户界面保持一致,以显示来自设备的数据并实时控制它们。
我使用bacgroundWorker开发了一些RS485通信的应用程序。
我不确定,但我认为这不是这次使用它的正确方式,因为用户界面元素不能从backgroundWorker更改或更新。
我可能会使用backgroundWorker和全局数据变量,然后在计时器事件上更新UI。但我对这个解决方案感到担忧。谢谢
您不需要使用后台工作程序,因为串行端口支持异步操作-您订阅了DataReceived
,打开端口后,您的事件将使用接收到的数据定期调用。
然后,您需要缓冲数据,直到您建立了一个完整的消息包(您可能会得到零星的数据,不能保证您会得到完整的数据包),然后更新您的UI(通常使用BeginInvoke将控制权传递回您的UI线程)
我设计了一个远程监控系统,该系统通过RS-485与控制器协同工作。它实现为在SQL Server中写入数据的Windows服务。UI应用程序(它是我上一个版本中的Web应用程序)从SQL中获取数据。在以前的版本中,我使用了命名管道。