日期:2014-05-17  浏览次数:20599 次

java串口通信,报javax.comm.NoSuchPortException错误
通过蓝牙连接读卡器,正常连接上,其端口为COM4,然后我用
 System.out.println("---0");
CommPortIdentifier portId = CommPortIdentifier.getPortIdentifier("COM4");
System.out.println("---1");
SerialPort Sport = (SerialPort) portId.open("test", 2000);
System.out.println("---2");
连接端口4,在CommPortIdentifier.getPortIdentifier("COM4");这里报javax.comm.NoSuchPortException错误,我的环境配置是
javax.comm.properties放在java_home\jre\lib\下
comm.jar放在java_home\jre\lib\ext\下
win32com.dll放在java_home\jre\bin\下

我用上面的环境配置在台式机上运行代码
int i=0;
Enumeration portEnum = javax.comm.CommPortIdentifier.getPortIdentifiers(); 
System.out.println(portEnum.hasMoreElements());
    while (portEnum.hasMoreElements()){ 
              javax.comm.CommPortIdentifier portId = (CommPortIdentifier) portEnum.nextElement(); 
              String portName = portId.getName(); 
              int portType = portId.getPortType(); 
              i++; 
              System.out.println( "第[" + i + "]个端口,名称[" + portName + "],类型[" + (portType==CommPortIdentifier.PORT_SERIAL?"RS-232串口":"IEEE 1284并口") + "]" ); 
    } 

   
   /* System.out.println("---0");
CommPortIdentifier portId = CommPortIdentifier.getPortIdentifier("COM4");
System.out.println("---1");
SerialPort Sport = (SerialPort) portId.open("test", 2000);
System.out.println("---2");
*/
能打印出2个并口,说明我的环境没有错。
但是在笔记本上就得不到一个端口。
我不知道出错的原因在哪?寻求帮助,谢谢。
java 串口

------解决方案--------------------
先确认你的pc和本的系统是不是都是32位,jre是否都是32位,然后确认你在本上是否将串口通讯的那几个dll文件放对地方,在程序中应该能用System.load()获取到dll库。
排除以上原因后,一般报这个异常代表指定的端口不能用,所以需要看一下硬件连接的端口是否正确,pc上是com4,本上不一定是。