使用c#图表控件进行数据处理

时间:2012-05-25 18:18:41

标签: c# .net visual-studio-2010

我有一个快速的问题给大家。这是我第一次处理串行I / O,并想知道最有效的方法是什么。我将通过rs-232从激光读取。

从研究它可以看出,我可以通过使用后台工作程序从串口创建缓冲区,然后让主线程访问该缓冲区来绘制和分析点来实现这一点。有没有更有效/可靠的方法来做到这一点,或者这种方法是我最好的选择?

谢谢!

1 个答案:

答案 0 :(得分:0)

您如何从设备读取取决于如何从中检索数据。我有一个应用程序从应变仪(连接到仪表)获取数据。这个仪表自动吐出读数,所以我不必轮询它。因此,我只使用SerialPort的DataReceived事件并将数据添加到数组中。

我使用位于UI线程上的Microsoft Chart Control(内置于.NET 4.0中),因此必须从UI线程更新它。数据速度非常快(每秒约100个点),所以我要做的是在启动一个新数组的同时构建一个100点数组和BeginInvoke(Winforms)阵列到UI线程。这样UI就会定期更新(每秒约1次更新)。

另一方面,如果您的设备需要轮询(每次都需要询问数据),那么您将需要一个位于紧密循环轮询中的专用线程。