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