从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()
返回null
,portId.isCurrentlyOwned
返回false
。另一方面,使用putty连接到同一个端口就可以了。
你有什么想法吗?我使用的是Win7 x64操作系统和64位Java 1.7,部署服务器是JBoss 7.2.0
我已经尝试禁用我要连接的COM端口,重新启动并再次启用它。不幸的是,它没有帮助。