【发布时间】:2014-02-18 21:23:33
【问题描述】:
我正在考虑在我的程序中正确处理串行端口通信的最佳方法。我有一些设备向我发送数据,我使用 DataRecieved 事件和其中的 ReadExisting 方法接收它。它读取的所有内容都放在缓冲区中,当最后一行等于某个字符串时,我开始将其解析为某种数据包。
除此之外,当我向这个设备发送数据并等待响应时,我标记标志
bool isReady = false;
while(!isReady)
Thread.Sleep(500);
在数据解析方法中,我将此标志设置为 true,因此当我收到数据包数据时,代码可以跳出此循环并根据需要继续工作。但在我看来,这不是一个干净/好的方法。有时会出现问题,如果设备不发送我需要的数据包,那么程序就会永远卡在循环中。
我想知道,你们如何在代码中解决这种情况?
谢谢,抱歉英语不好。
【问题讨论】:
-
听起来您正在使用 DataReceived 事件。不要使用它,你对它没有用处。直接调用 Read() 即可。
标签: serial-port interrupt-handling