6
void connect ( String portName ) throws Exception
{
    CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier(portName);
    if ( portIdentifier.isCurrentlyOwned() )
    {
        System.out.println("Error: Port is currently in use");
    }
    else
    {
        System.out.println(portIdentifier.getCurrentOwner());
        CommPort commPort = portIdentifier.open(this.getClass().getName(),2000);

        if ( commPort instanceof SerialPort )
        {
            SerialPort serialPort = (SerialPort) commPort;
            serialPort.setSerialPortParams(115200,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);

            InputStream in = serialPort.getInputStream();
            OutputStream out = serialPort.getOutputStream();

            (new Thread(new SerialReader(in))).start();
            (new Thread(new SerialWriter(out))).start();

        }
        else
        {
            System.out.println("Error: Only serial ports are handled by this example.");
        }
    }     
}

正在给

gnu.io.PortInUseException: Unknown Application
    at gnu.io.CommPortIdentifier.open(CommPortIdentifier.java:354)

我在 Windows 7 家庭 64 位中使用 RXTX 和 Java。

4

5 回答 5

15

检查您的机器上是否存在 /var/lock 文件夹。


mkdir /var/lock
chmod go+rwx /var/lock

于 2013-12-24T13:46:07.847 回答
3

重新启动系统/禁用端口。
实际问题是程序运行时端口打开并且程序终止后没有关闭。
有用。

于 2012-01-29T16:16:05.020 回答
2

我遇到了这个问题,因为该端口实际上正在使用中。以前的 javaw.exe 实例出现在 Windows 任务管理器中,它占用了端口。

之前的 java 进程挂起的原因是硬件问题:将我碰巧使用的 USB-2 串行转换器插入 USB-2 端口时,一切正常。当插入 USB-3 端口时,RXTX CommPortIdentifier 代码将挂起,然后 Java 的后续实例收到 PortInUseException。

于 2012-07-05T15:26:11.453 回答
0

我使用 Process Explorer 找到了一个带有句柄的进程\Device\PCISerial0并关闭了句柄。如果您的 com 端口不在 PCI 卡上,则名称可能不同。

于 2014-12-10T13:46:22.180 回答
0

对于 Windows 打开 Eclipse(或您的 ide)下的任务管理器,找到 Java 应用程序。右键单击它->结束任务

于 2019-03-20T13:42:09.843 回答