【问题标题】:jSerialComm: dynamically detect available serial ports (hotplug device)jSerialComm:动态检测可用串口(热插拔设备)
【发布时间】:2021-10-25 07:18:24
【问题描述】:

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

SerialPort[] ports = SerialPort.getCommPorts();

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

【问题讨论】:

    标签: java serial-port hotplugging


    【解决方案1】:

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

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

    src


    您可以通过在尝试打开端口后检查端口是否打开来做到这一点:

    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;
                }
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-16
      • 1970-01-01
      • 2017-05-25
      • 1970-01-01
      • 2014-05-05
      • 1970-01-01
      • 1970-01-01
      • 2013-04-03
      相关资源
      最近更新 更多