我有以下问题。我有一个应该与计算机通信的串行端口设备。事实上它是 Arduino Due 板,但我不认为它是相关的。
我使用 CreateFile 打开端口,然后使用 GetCommState()&SetCommState() 和 GetCommTimeouts()&SetCommTimeouts() 设置参数。
端口已正确打开 - 没有问题。但是此时我想检查设备是否已连接。所以我发送了一个特定的消息。该设备应该以某种方式响应,以便我知道它已连接。
现在解决问题:只有在创建端口之后(在发送握手请求之前)放置 Sleep(1000) 才有效。看起来 WinAPI 需要一些时间才能开始使用该端口。因为睡眠解决方案通常不可用,我需要找到一些替代方案......
它不起作用我的意思是 ReadFile 超时。即使超时设置为 5 秒,它也会超时 - 请注意,睡眠间隔仅为一秒。所以看起来握手请求甚至没有发送。如果我将超时设置为 1 秒并将睡眠间隔设置为一秒,它就可以工作。如果我将超时设置为 5 秒但没有睡眠它不起作用。看到问题了吗?
我将尝试一些 NetworkMonitor,但我有点确定问题不在于设备......