如何通过CommPortIdentifier找到COM端口

时间:2013-02-09 08:49:39

标签: java serial-port modbus

我是整个modbus和串口通讯概念的新手,所以即使这是一个非常棒的问题,请耐心等待我!

好的,所以我试图使用modbus协议和RS 232端口读取存储在寄存器中的值。我编写了这段代码,但没有找到串口"COM 4"。我做错了什么?

String wantedPortName = "COM 4" ;

Enumeration portIdentifiers = CommPortIdentifier.getPortIdentifiers();

CommPortIdentifier portId = null;  
while (portIdentifiers.hasMoreElements()) {
    CommPortIdentifier pid = (CommPortIdentifier) portIdentifiers.nextElement();
    if (pid.getPortType() == CommPortIdentifier.PORT_SERIAL
            && pid.getName().equals(wantedPortName)) {
        portId = pid;
        break;
    }
}
if (portId == null) {
    System.err.println("Could not find serial port " + wantedPortName);
    System.exit(1);
}

2 个答案:

答案 0 :(得分:3)

看起来不错,在wantedPortName中尝试没有空白:

String wantedPortName = "COM4" ;

[EDITED]

你能试试这个:

final CommPortIdentifier portId = CommPortIdentifier.getPortIdentifier("COM1");
System.err.println(portId.getName());

答案 1 :(得分:1)

在这种情况下,“equals()”仅在引用相同时才返回true。由于您正在测试两个不同的字符串对象,因此它总是会失败。您必须改为使用“compareTo()”:

if (pid.getPortType() == CommPortIdentifier.PORT_SERIAL
        && (pid.getName().compareTO(wantedPortName)==0) ) {
    portId = pid;
    break;
}