0

我正在尝试使用 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);
  }
4

2 回答 2

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 18 10:30 /dev/ttyUSB0

然后我可以访问它

cat /dev/ttyUSB0

需要访问端口的用户必须在组dialout或系统中的任何组中。您可以添加用户

adduser <user-name> dialout
于 2013-02-18T09:34:12.450 回答
0

显然 java 通信 API 没有 linux 实现http://www.oracle.com/technetwork/java/index-139971.html这就是我的代码不起作用的原因。

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

于 2013-02-19T09:43:25.407 回答