Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 查找串行端口_Java - Fatal编程技术网

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记住,如果这个答案对您有用,那么您应该将其标记为已接受的答案(答案分数下面的绿色复选标记)