使用 C# 图表控件进行数据处理
本文关键字:数据处理 控件 使用 | 更新日期: 2023-09-27 18:35:05
目前,我正在开发一个程序,该程序将通过串行端口同时从激光位移传感器获取测量数据,并将实时绘制数据。我从未在 c# 中广泛使用过 I/O,在图表控件中处理大型数据集时更是如此。
现在,我使用后台工作线程从串行端口连续读取数据并将其移动到数组中,并且在从端口读取每个数字后,后台工作程序报告有一个新数字可通过进度报告使用。从报表中,我在图表上绘制了这个新点,并重新计算平均值、众数、标准差、控制上限和下限等。其他一些图形和视口也会使用新数据进行更新。这应该能够连续进行。
(对于那些想知道的人,我把所有这些信息放下来只是因为这个网站的随机建议在过去是一个很大的帮助)
现在这是我的问题:
我想将捕获的数据保存到文本文件中,但无法中断数据捕获或绘图。我是否最好将立即采样的数据写入文本文件,只将最近的 500 个点复制到数组中?然后,我可以每 10 分钟左右启动一个新的文本文件以保持大小限制,然后添加数据捕获的时间和日期以供以后参考。有没有办法将图表绑定到队列之类的东西,然后每次我向队列添加一个值时,它都会丢弃最旧的点?我需要一种方法来处理图表系列中早于 500 个样本的点,因为随着添加越来越多的点,它似乎会减慢图表控件的速度。
这是我第一次尝试多线程,所以如果我做了一些非常错误的事情,请尽量不要跳到我的喉咙里。
提前感谢您的所有建议!任何指导将不胜感激。
对于您的队列问题,请查看此有关有限大小队列的线程。
对于您的日志记录内容,您能否编写第二个处理程序,在低优先级线程上运行,用于记录内容而不是绘制它们?