使用以下java代码我将列出com端口:
import gnu.io.*;
public class DataInputStream {
public static void main(String[] args){
new DataInputStream().listPorts();
}
public static void listPorts()
{
System.out.println("in listPorts");
java.util.Enumeration<CommPortIdentifier> portEnum = CommPortIdentifier.getPortIdentifiers();
while ( portEnum.hasMoreElements() )
{
CommPortIdentifier portIdentifier = portEnum.nextElement();
System.out.println(portIdentifier.getName() + " - " + getPortName(portIdentifier.getPortType()) );
}
}
public static String getPortName ( int portType )
{
System.out.println("in getPortName");
switch ( portType )
{
case CommPortIdentifier.PORT_I2C:
return "I2C";
case CommPortIdentifier.PORT_PARALLEL:
return "Parallel";
case CommPortIdentifier.PORT_RAW:
return "Raw";
case CommPortIdentifier.PORT_RS485:
return "RS485";
case CommPortIdentifier.PORT_SERIAL:
return "Serial";
default:
return "unknown Type";
}
}
}
它在intelliJ中执行,没有任何异常,但没有列出的COM端口。似乎没有达到getPortName方法,因为不打印println。
我也尝试使用cmd命令列出com端口:
C:\>wmic path Win32_SerialPort
并使用powershell命令:
PS> Get-WMIObject Win32_SerialPort
在cmd中,它说“没有可用的实例”。但是,这是什么意思? powershell命令什么都不做。没有错误消息但也没有输出。
但是,我可以在com端口插入设备,而Windows可以识别它们,所以它们显然在工作。我是否需要一些特殊权限才能访问COM端口?我做错了什么?