如何用C#绘制流数据图

cab*_*gef 2 c# events charts serial-port

我需要绘制流数据(9600波特)的图形,这是来自串行端口的2-4字节数据包.在绘图之前需要处理数据包.目前,我正在针对每个完整的数据包提出一个事件,这会导致图形表单上的响应问题.

哪个是此问题的最佳解决方案:

  • 以定时间隔(即500毫秒)缓冲数据并在事件中提升缓冲数据
  • 构建缓冲区并在轮询时为缓冲数据/空缓冲区实例化对象轮询
  • 其他(?)

pet*_*hen 5

我肯定会限制更新率.对于这样的应用,通常每300毫秒就足够了.

基于此,一个好的实现将是一个读取串行端口并将其添加到缓冲区的工作线程.UI线程可以使用计时器来查询数据并更新显示.

使用单独的线程,工作线程可以以更高的优先级运行,因此负载峰值可能会延迟显示更新,但不会丢失任何数据.

另一个技巧是不使用固定计时器,而是在更新完成后重新启动计时器.因此,如果更新需要很长时间,例如由于高系统负载,则更新速度会降低,从而有效降低负载.