我正在尝试使用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);
}
答案 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的帮助和支持。