读取串行数据

本文关键字:数据 读取 | 更新日期: 2023-09-27 18:13:06

我在用这个砸我的头。

我正在为一台测试血液的机器编写一个串行应用程序。它按行发送信息,以'r'n结尾。

问题是每次我运行机器时,它都会漏掉一些行,或者重复一些行。我停止并重新启动,然后数据就可以正常通过。

我使用DataReceived事件:

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

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

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

读取串行数据

由于覆盖了this,您正在获得竞争条件。每次都是。这些事件的发生顺序有点乱,或者离你的应用程序太近而无法处理。考虑使用线程安全的方法来存储数据,例如将其添加到缓冲区或StringBuilder中,并在其周围进行一些并发保护。