0

我创建了一个 Java GUI,它在下拉菜单中列出了所有串行端口,用户从中选择正确的端口并单击连接。然后建立与 Arduino 的连接,用户可以执行一些操作。我使用 Fazecast JSerialComm 获得可用端口:

SerialPort[] ports = SerialPort.getCommPorts();

我抓住端口并将结果放入下拉列表中。这可以完美地工作,但只有在启动我的 Java GUI 之前将 Arduino 插入 Mac 时。有没有办法在 Java 中检测热插拔设备?我已经考虑过定期(大约每秒)获取 com 端口,但对我来说,这似乎是一个非常优雅的解决方案。

4

1 回答 1

0

更新:我发现另一个用户回答了这个问题:

串行通信管理器具有 API 来动态查找 COMxx 等串行端口名称。只需连接您的 USB-USRT IC,SCM 库就会告诉您它的设备节点。只是谷歌的串行通信管理器。它托管在 GitHub 上。

源代码


您可以通过在尝试使用以下命令打开端口后检查端口是否打开来执行此操作:

SerialPort[] serialPorts = SerialPort.getCommPorts();
        SerialPort liveSerialPort = null;
        for (SerialPort p: serialPorts) {
            p.openPort();
            if (p.isOpen()) {
                liveSerialPort = p;
                System.out.println("HERE opened port = " + liveSerialPort.getSystemPortName());
                break;
            }
        }
于 2022-01-05T21:44:22.797 回答