使用PureJavaComm打开串行端口会导致PortInUseException

时间:2014-08-29 17:32:02

标签: java exception jboss serial-port windows-7-x64

从COM3读取GPS信号,我正在尝试使用PureJavaComm(http://www.sparetimelabs.com/purejavacomm/purejavacomm.php)通过Java连接到端口

使用下面的代码找到并列出所有系统COM端口:

    List<String> list = new ArrayList<String>();

    Enumeration portList = CommPortIdentifier.getPortIdentifiers();
    while (portList.hasMoreElements()) {
        CommPortIdentifier portId = (CommPortIdentifier) portList.nextElement();
        if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
            list.add(portId.getName());
        }
    }
    System.out.println("Ports: " + list.toString());

然而,如果我试图通过使用下面的代码连接到一个端口,我得到一个PortInUseException。奇怪的是,通过在所有com端口上使用代码,甚至是模拟的代码,都会出现异常。

    try {
        portId = CommPortIdentifier.getPortIdentifier("COM3");
    } catch (NoSuchPortException e1) {
        e1.printStackTrace();
    }

    SerialPort serialPort = null;
    try {
         serialPort = (SerialPort) portId.open("GpsApp", 2000);
         serialPort.close();
    } catch (PortInUseException e) {
        log.error(e);
    }

portId.currentOwner()返回nullportId.isCurrentlyOwned返回false。另一方面,使用putty连接到同一个端口就可以了。

你有什么想法吗?我使用的是Win7 x64操作系统和64位Java 1.7,部署服务器是JBoss 7.2.0

我已经尝试禁用我要连接的COM端口,重新启动并再次启用它。不幸的是,它没有帮助。

0 个答案:

没有答案