如何在linux中选择正确的活动串口?

时间:2013-02-18 09:04:33

标签: java linux serial-port usb

我正在尝试使用java与微控制器进行通信。 在Windows中,我只需使用“COM4”,我的代码就可以完美运行。 在linux中我试图使用“/ dev / ttyUSB0”。但给我一个错误“无法找到串口”。

我使用dmesg | grep tty查看活动串口。这是一种正确的方法吗?

我该如何解决这个问题?我是linux的新手,所以请用简单的语言解释

这是我的代码

Enumeration portIdentifiers = CommPortIdentifier.getPortIdentifiers();

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

2 个答案:

答案 0 :(得分:1)

lsusb应该显示串口到USB转换器

lsusb | grep -i serial

在我的系统上给出

  

总线001设备005:ID 067b:2303 Prolific Technology,Inc。PL2303串行端口

ls -l /dev/ttyUSB*
  

crw-rw ---- 1 root dialout 188,0 Feb 2 10:30 / dev / ttyUSB0

然后我可以用

访问它
cat /dev/ttyUSB0

需要访问端口的用户必须位于组dialout或系统中的任何组中。您可以使用

添加用户
adduser <user-name> dialout

答案 1 :(得分:0)

显然java通信API没有linux实现http://www.oracle.com/technetwork/java/index-139971.html,这就是为什么我的代码无效。

我安装了RXTX库进行串口通信,代码工作正常。 感谢nos和Olaf Dietsche的帮助和支持。