3

我正在使用rxtx在 Java 中使用提供 USB 通信端口的 FTDI2232H 进行串行 I/O 处理。它工作得很好,有一个例外:如果我拔下 USB 电缆,使 COM 端口在运行时消失,它会左右喷出异常:

java.io.IOException: No error in nativeavailable
at gnu.io.RXTXPort.nativeavailable(Native Method)
at gnu.io.RXTXPort$SerialInputStream.read(RXTXPort.java:1427)
at gnu.io.RXTXPort$SerialInputStream.read(RXTXPort.java:1339)

当我再次重新插入电缆时,它不会恢复。

有什么方法可以让 rxtx 在 USB 通信端口连接/断开时正常工作?(我尝试向 rxtx 邮件列表发帖,但由于某种奇怪的原因,即使我订阅了该列表,我也无法发送消息。我已向列表管理员发送电子邮件,但没有收到任何回复。)

如果没有,是否有另一个串行 I/O 框架可以做到这一点?

4

2 回答 2

0

听上去,我不知道这在 Java 中是否可行,但是有一条 Windows 消息被广播 - WM_DEVICECHANGE消息,您可能需要拦截此消息,如果它是设备弹出,请优雅地关闭rxtx 代码。这是一个示例代码,用于检查 CDROM 驱动器中 CD 的插入/移除(它不是 Java)。

编辑:在此处添加了您可能感兴趣的另一个链接。

希望这会有所帮助,最好的问候,汤姆。

于 2010-01-26T22:01:15.810 回答
0

出色地。我们使用 WM_DEVICECHANGE 并用 C++ 编码并准备 DLL,然后通过 JNI 从 JAva 应用程序访问它。所以我们会收到连接和断开连接的通知

于 2010-03-12T09:24:33.223 回答