我需要图形流数据(9600波特),这是来自一个串行端口的2-4字节数据包。在绘制图形之前,需要对数据包进行处理。目前,我在每个完整的数据包上引发一个事件,这会导致图形表单上的响应问题。
这是解决这一问题的最佳办法:
在事件中按时间间隔(即500 milliseconds)
。
发布于 2009-06-21 20:36:15
我肯定会限制更新率。对于这样的应用程序,每300毫秒一次通常就足够了。
基于此,一个很好的实现将是一个工作线程,它读取串行端口并将其添加到缓冲区。UI线程可以使用计时器查询数据并更新显示。
使用单独的线程,工作线程可以以更高的优先级运行,因此加载尖峰可能会延迟显示更新,但不会丢失数据。
另一个技巧是不使用固定的计时器,但是在更新完成后重新启动定时器。因此,如果更新需要很长的时间,例如由于高系统负载,您的更新就会慢下来,从而有效地减少负载。
https://stackoverflow.com/questions/1024472
复制相似问题