0

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

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

谢谢!

4

1 回答 1

0

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

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

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

于 2012-05-25T18:31:13.057 回答