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。
检查计算机上是否存在/ var / lock文件夹。
mkdir /var/lock
chmod go+rwx /var/lock
重新启动系统/禁用端口。 实际问题是当程序运行端口打开并且在程序终止后它没有关闭。 有用。
我遇到了这个问题,因为端口实际上正在使用中。之前的javaw.exe实例出现在Windows任务管理器中,它占用了端口。
以前的java进程挂起的原因是硬件问题:将我碰巧使用的USB-2-serial转换器插入USB-2端口时,一切正常。当插入USB-3端口时,RXTX CommPortIdentifier代码将挂起,然后Java的后续实例收到PortInUseException。
我使用Process Explorer找到一个带有句柄\Device\PCISerial0
并关闭句柄的进程。如果您的COM端口不在PCI卡上,则名称可能不同。
对于Eclipse(或您的ide)下的Windows Open Task Manager,找到Java应用程序。右键单击它 - >结束任务