当串行端口(RS232)的连接中断/断开连接时,我如何检测它并报告给用户?
正如随时可能发生的那样,我想我应该使用一个单独的线程。
我的连接类型是:发送消息 - 接收消息
RS232 不会检测到物理连接的"状态"。所以我想在连接/断开连接的情况下不可能直接获取事件。可能唯一的方法是发送一些东西并检测答案是否丢失(或听途说或其他什么......
您对硬件或远程设备有多少控制权?您可以使用流控制线执行某些操作:(即,如果您未使用 RTS/CTS 流控制,但可以使目标设备断言/取消断言 CTS,则在设备断开连接时,您可能会检测到 CTS 的变化。但要注意;这可能在一件硬件上工作正常,但由于硬件差异而在另一件硬件上不起作用。在一般情况下,我同意上面的@MrD,最可靠/可移植的解决方案是实现一些心跳消息传递(您发送消息,等待响应,如 TCP/IP PING),并在一段时间内没有收到响应时生成"断开连接"事件。