java - comm.jar 通信串口java

标签 java serial-port

我在使用 comm.jar 时遇到问题。

问题是我连接了设备,并使用此代码在池中启动了应用程序

 public static void main(String[] args) {
        Enumeration portList;
        CommPortIdentifier portId = null;
        portList = CommPortIdentifier.getPortIdentifiers();
        while (portList.hasMoreElements()) {
            portId = (CommPortIdentifier) portList.nextElement();
            System.out.println("port::" + portId.getName());

        }
        while (true) {
            try {
                Thread.sleep(2000);
            } catch (InterruptedException ex) {
                Logger.getLogger(JavaComPortFinding.class.getName()).log(Level.SEVERE, null, ex);
            }
            main(args);
        }
    }

输出:

port::COM1
port::COM10

经过一次轮询后,我已弹出该设备。我仍然得到的答复是

port::COM1
port::COM10

任何人都可以帮助我/建议在投票中获得动态响应。

最佳答案

您可以尝试类似的操作,因为每次都应该重新创建 CommPortIdentifier。

class TestProgram
{
    public static void main(String[] args)
    {
        while(true)
        {
            try
            {
                Thread.sleep(2000);
            }
            catch(InterruptedException ex)
            {
                Logger.getLogger(TestProgram.class.getName()).log(Level.SEVERE, null, ex);
            }

            scanPorts();
        }
    }

    private static void scanPorts()
    {
        Enumeration portList;
        CommPortIdentifier portId = null;
        portList = CommPortIdentifier.getPortIdentifiers();

        while (portList.hasMoreElements())
        {
            portId = (CommPortIdentifier) portList.nextElement();
            System.out.println("port::" + portId.getName());

        }
    }
}

编辑:

我刚刚在 Windows XP SP3 上使用 USB 上的黑莓手机测试了该程序。当我启动该程序时,我看到正常的 COM1 和两个 BlackBerry 的 COM 端口。一旦我断开 BlackBerry 的连接,这些端口就会保留在设备管理器中。如果我手动删除它们,它们就会在程序中消失(无需重新启动)。

关于java - comm.jar 通信串口java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15385455/

相关文章:

java - 获取java项目中的包列表

java - 加入笛卡尔积

java - 将 tomcat(作为 Spring tcServer)重定向到不同的端口

macos - 是否有终端模拟器可以让我通过串行端口发送原始字节?

java - Eclipse 说我有编译错误,但我没有 - 如何修复?

Java - 以 netbeans 形式向按钮添加方法

ubuntu - 在 Ubuntu 上使用 open2300

c# - .NET 中的 SerialPort 是非托管资源吗?我的包装类是否正确?

c++ - 如何 "usb to tty"?

c++ - 虚拟 COM 端口到 Socket 通信