Java 查找串行端口
我已经搜索了一些代码,这些代码可以表示我所使用的串行端口。我发现了这个:Java 查找串行端口,java,Java,我已经搜索了一些代码,这些代码可以表示我所使用的串行端口。我发现了这个: Enumeration pList = CommPortIdentifier.getPortIdentifiers(); // Process the list.CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier("/dev/tty1"); while (pList.hasMoreElements()) { CommPort
Enumeration pList = CommPortIdentifier.getPortIdentifiers();
// Process the list.CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier("/dev/tty1");
while (pList.hasMoreElements()) {
CommPortIdentifier cpi = (CommPortIdentifier) pList.nextElement();
System.out.print("Port " + cpi.getName() + " ");
if (cpi.getPortType() == CommPortIdentifier.PORT_SERIAL) {
System.out.println("is a Serial Port: " + cpi);
} else if (cpi.getPortType() == CommPortIdentifier.PORT_PARALLEL) {
System.out.println("is a Parallel Port: " + cpi);
} else {
System.out.println("is an Unknown Port: " + cpi);
}
}
但它不起作用,似乎pList没有任何元素。
可能我的计算机没有任何串行端口,在这种情况下,我如何检查它?如果您使用的是RXTX库,下面应该提供计算机上可用COM端口的列表:
List<String> list = new ArrayList<>();
Enumeration thePorts = CommPortIdentifier.getPortIdentifiers();
while (thePorts.hasMoreElements())
{
CommPortIdentifier com = (CommPortIdentifier) thePorts.nextElement();
switch (com.getPortType())
{
case CommPortIdentifier.PORT_SERIAL:
list.add(com.getName());
}
}
List List=new ArrayList();
枚举端口=CommPortIdentifier.getPortIdentifiers();
while(ports.hasMoreElements())
{
CommPortIdentifier com=(CommPortIdentifier)thePorts.nextElement();
开关(com.getPortType())
{
外壳CommPortIdentifier.PORT_串行:
add(com.getName());
}
}
您可以使用设备管理器在Windows中检查可用的COM端口。导航到端口(COM和LPT)
。大多数台式计算机将提供COM1
。其他设备(如USB虚拟COM端口)也将显示在列表中(如果存在)
RXTX有非常具体的安装说明。可以找到这些说明
通常,您必须执行以下操作:
rxtxSerial.dll
和rxtxParallel.dll
复制到JRE/bin
目录中。在Windows中,这将是C:\ProgramFiles(x86)\Java\jre7\bin
或基于您的计算机的类似内容李>
rxtx
JAR文件复制到C:\ProgramFiles(x86)\Java\jre7\lib\ext
李>
注意:如果您在Netbeans这样的IDE中运行,您可能需要将这些文件放在JDK/jre
下,您可以使用该库。它是纯java,不需要额外的本机lib
SerialPort[] ports = SerialPort.getCommPorts();
for (SerialPort port: ports)
System.out.println(port.getSystemPortName());
您如何知道pList没有元素的可能副本?您正在使用调试器吗?如果你仅仅基于打印语句,是否会抛出任何异常?非常感谢!!!!祝你有史以来最美好的一周,另一个小问题是,每台计算机都有这些端口,笔记本电脑也有这些端口吗?不客气-顺便说一句,欢迎使用SO!如果此答案对您有效,请选择它作为问题的答案。
COM1
通常指计算机上的物理端口(与USB虚拟COM端口相反)。如果计算机有一个物理串行端口,它应该有COM1
可用,无论它是笔记本电脑还是台式机。很抱歉打扰您,但我在运行此程序时出现了一个错误“java.lang.unsatifiedlinkerror:no rxtxSerial in java.library.path loading gnu.io.RXTXCommDriver”是跳转的错误,你知道为什么吗?我在项目中添加了rxtx api,但是我没有gnu,我应该将其添加到项目中吗?@user3194834记住,如果这个答案对您有用,那么您应该将其标记为已接受的答案(答案分数下面的绿色复选标记)