0

目前我正在开发一个程序,该程序将同时通过串行端口从激光位移传感器获取测量数据,并将实时绘制数据图表。我从未在 C# 中广泛使用 I/O,更不用说在图表控件中处理大型数据集了。

现在我使用后台工作人员从串行端口连续读取数据并将其移动到一个数组中,并且在从端口读取每个数字后,后台工作人员报告通过进度报告有一个新的可用数字。从报告处理程序中,我在图表上绘制了这个新点,并重新计算了平均值、众数、标准差、控制上限和下限等。其他一些图表和视图端口也使用新数据进行了更新。这应该能够连续进行。

(对于那些想知道的人,我把所有这些信息都记下来只是因为这个网站的随机建议在过去有很大的帮助)

现在这是我的问题:

我想将捕获的数据保存到文本文件中,但不能中断数据捕获或绘图。我最好将采样的数据立即写入文本文件并仅将最近的 500 个点复制到数组中吗?然后我可以每 10 分钟左右开始一个新的文本文件以保持大小限制,然后添加数据捕获的时间和日期以供以后参考。有没有办法将图表绑定到队列之类的东西,然后每次我向队列添加一个值时,它都会丢弃最旧的点?我需要一种方法来处理图表系列中早于 500 个样本的点,因为随着越来越多的点被添加,它似乎会减慢图表控制。

这是我第一次尝试多线程,所以如果我做错了什么,请尽量不要跳到我的喉咙里。

提前感谢您的所有建议!任何指导将不胜感激。

4

1 回答 1

0

对于您的排队问题,请查看有关有限大小队列的线程。

对于您的日志记录,您能否编写第二个处理程序,在低优先级线程上运行,记录事物而不是绘制它们?

于 2012-05-24T03:31:18.200 回答