0

我正在开发一个应用程序,该应用程序需要能够通过 Windows 操作系统上的串行通信与设备进行通信。该应用程序是用 Java 编写的。我正在使用 jSSC 库。(Javax.comm 有问题,RxTx 除了非官方更新外不支持 Java 8)这些设备可以使用串行端口直接连接到 PC,或者使用 USB 到串行转换器。

我的问题:Windows 上的 COM 端口是动态的。这引发了定义要连接到哪个通信端口的问题。有没有办法自动确定要连接到哪个 COM 端口?

到目前为止,我能够提出的唯一解决方案包括扫描所有 com 端口以查找活动端口,保存此列表,然后要求用户插入设备并执行另一次扫描 - 然后额外的 COM 端口将成为连接至。

或者,设备将响应特定的“识别”数据包:我可以打开每个 COM 端口并发送此数据包并评估响应。这存在其他设备在短时间内被劫持的风险,这并不理想。

4

1 回答 1

0

为了动态检测端口,需要调用操作系统特定的函数。SCM 库提供用于动态检测端口的 API。

try {
    scm.registerUSBHotPlugEventListener(this, PRODUCT_VID, PRODUCT_PID, null);
    if(scm.isUSBDevConnected(PRODUCT_VID, PRODUCT_PID, null)) {
        USBhotplugEventQueue.offer(SerialComUSB.DEV_ADDED);
    }
} catch (Exception e) {
    e.printStackTrace();
}
于 2016-03-10T04:55:39.437 回答