目前我正忙于使用 C# 进行串行端口编程,并且对这些东西非常陌生。我已经构建了一个控制台应用程序......在这个应用程序中,我每 200 毫秒轮询一次 RS 232 设备。设备每次必须以一个字节响应来响应轮询。
大多数时候,我通过数据接收事件得到预期的字节。但是,有时接收到的数据事件没有触发......甚至,我尝试在每次轮询后读取可用字节......我没有得到预期的字节。
在花了很多时间没有运气之后,我在串口应用程序运行时不小心打开了浏览器。突然,每次轮询的数据接收事件开始触发......打开浏览器后,几秒钟后该事件没有再次触发。我尝试打开其他一些应用程序,同样的行为仍在继续。几秒钟后,事件被触发,之后没有事件。似乎如果 CPU 很忙,则接收到的数据事件工作正常。
有人可以遇到同样的问题吗?请就如何确保每次都触发 Data Received 事件提出建议。谢谢!
请在下面找到示例代码。
Every 200 ms.
Serial.Parity = System.IO.Ports.Parity.Mark;
Thread.Sleep(2);
Serial.Write(0x01, 0, 1);
Thread.Sleep(1);
Serial.Parity = System.IO.Ports.Parity.Space;
Thread.Sleep(2);`