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