读取串行数据

时间:2013-05-10 15:01:16

标签: c# serial-port readline

我正在抨击我。

我正在为测试血液的机器编写一个串行应用程序。它以\r\n终止的行基础发送信息。

问题在于,每次运行机器时都会错过一些线路,或者重复它们。我停下来重新开始,然后数据很好。

我正在使用DataReceived事件:

try
{
    this.the = thePort.ReadLine();
}
catch (TimeoutException ex) {}

我完全感到困惑的是,为什么有时它会错过第一行,即S1表示通信已经开始,同时它会在此之后复制数据。

我可以通过将每行读取附加到文本框来看到这一点。

1 个答案:

答案 0 :(得分:3)

由于你每次都覆盖了这个,你就会遇到竞争状态。这些事件会稍微不按顺序发射,也可能太靠近,以免您的应用程序应对。考虑使用一种线程安全的方法来处理数据,例如将其添加到缓冲区或StringBuilder中,并在其周围提供一些并发保护。