如何使用javax.comm检测串行端口连接断开?

如何使用javax.comm检测串行端口连接断开?,java,javax.comm,Java,Javax.comm,当串行端口(RS232)的连接中断/断开时,我如何检测它并向用户报告 正如任何时候都可能发生的那样,我想我应该使用一个单独的线程 我的连接类型是:发送消息-接收消息RS232未检测到物理连接的“状态”。因此,我想在连接/断开连接的情况下,不可能直接获取事件。可能唯一的方法是发送一些信息并检测是否缺少答案(或hearbeat或其他…。您对硬件或远程设备有多大的控制权?您可能能够对流量控制线路执行某些操作:(即,如果您不使用RTS/CTS流量控制,但您可以使您的目标设备断言/解除断言CTS,则当设备

当串行端口(RS232)的连接中断/断开时,我如何检测它并向用户报告

正如任何时候都可能发生的那样,我想我应该使用一个单独的线程


我的连接类型是:发送消息-接收消息RS232未检测到物理连接的“状态”。因此,我想在连接/断开连接的情况下,不可能直接获取事件。可能唯一的方法是发送一些信息并检测是否缺少答案(或hearbeat或其他…。

您对硬件或远程设备有多大的控制权?您可能能够对流量控制线路执行某些操作:(即,如果您不使用RTS/CTS流量控制,但您可以使您的目标设备断言/解除断言CTS,则当设备断开连接时,您可能会检测到CTS中的更改。)但请注意;由于硬件的差异,这可能在一个硬件上工作正常,而在另一个硬件上不工作。在一般情况下,我同意上面@MrD的观点,即最可靠/可移植的解决方案是实现一些心跳消息(您发送消息,等待响应,如TCP/IP PING),如果在某个超时内没有收到响应,则生成“断开”事件。

很高兴知道,谢谢。然后,如果发送消息不成功,我将检测断开连接。在串行端口上,“发送”无论如何都会成功;您需要发送一条生成响应的消息,如果没有收到预期的响应,请执行某些操作。澄清:您是否询问如何检测远程串行设备(例如,终端、调制解调器、arduino或其他设备)是否已删除,或如何检测串行端口本身是否已断开(例如,usbserial适配器没有插上?)这是两种截然不同的情况。根据我的经验,如果usb加密狗在串行端口打开时被拔下,许多javax.comm实现就会完全崩溃(特别是在windows上)。因此,检测它不会是一个问题:)