微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用ubuntu上的java串口识别

我试图用Java连接Ubuntu上的一个串行应用程序

在search和阅读资源之后,我在库中添加comm.jar和RXTXcomm.jar。

我使用下面的代码来确定comports。 在我的系统中有三个端口,但在ports.hasMoreElements()方法显示为false。

请查看代码并帮助我。

String wantedPortName = "/dev/ttya"; ///dev/ttyS0 و /dev/ttyS1 نیز تست شد Enumeration portIdentifiers = CommPortIdentifier.getPortIdentifiers(); CommPortIdentifier portId = null; // will be set if port found while (portIdentifiers.hasMoreElements()) { CommPortIdentifier pid = (CommPortIdentifier) portIdentifiers.nextElement(); if(pid.getPortType() == CommPortIdentifier.PORT_SERIAL && pid.getName().equals(wantedPortName)) { portId = pid; break; } } if(portId == null) { System.err.println("Could not find serial port " + wantedPortName); System.exit(1); }

无法使用串行电缆debugging内核驱动程序

如何在Linux中播放MIDIinput

清除串口缓冲区

Linux串口读取 – 我可以改变input缓冲区的大小吗?

解除对boost :: asio :: serial_port的同步读取

在我的情况下,我使用Ubuntu,而我的笔记本没有任何串口或并口。

所以,你必须模拟这种类型的端口:

apt-get install socat

运行:

socat -d -d pty,raw,echo=0,pty,echo=0

根据输出,注意“设备”创建:

2014/02/05 01:04:32 socat[7411] N PTY is /dev/pts/2 2014/02/05 01:04:32 socat[7411] N PTY is /dev/pts/3 2014/02/05 01:04:32 socat[7411] N starting data transfer loop with FDs [3,3] and [5,5]

根据“tty”前缀停止socat [CTRL] + [C]并将其链接到RXTX将识别为设备的位置:

sudo ln -s /dev/pts/2 /dev/ttyUSB02 sudo ln -s /dev/pts/3 /dev/ttyUSB03

现在,再次运行socat

socat -d -d pty,echo=0 pty,echo=0

现在,使用以下代码,您将看到2个虚拟端口:

Enumeration portList = CommPortIdentifier.getPortIdentifiers();//this line was false System.out.println(portList.hasMoreElements()); while(portList.hasMoreElements()){ System.out.println("Has more elements"); CommPortIdentifier portId = (CommPortIdentifier) portList.nextElement(); if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) { System.out.println(portId.getName()); } else{ System.out.println(portId.getName()); } }

System.out的:

true Has more elements /dev/ttyUSB03 Has more elements /dev/ttyUSB02

看起来你正在筛选出你想要的端口。 一个/ dev / tty是一个特殊的字符设备…不是一个串口所以

if(pid.getPortType() == CommPortIdentifier.PORT_SERIAL && pid.getName().equals(wantedPortName))

不应该匹配你的字符串。

为了证明这一点,请尝试迭代可用的端口。 我不知道RXTX是否可以检测到一个tty,但是可以用它来告诉我们。

参考: http : //rxtx.qbang.org/wiki/index.PHP/discovering_available_comm_ports

编辑:所以你没有任何串行设备来测试? 我所坐的是确保你已经正确安装了一切,包括这个文件中描述的属性文件

http://rxtx.qbang.org/pub/rxtx/rxtx-2.0-7pre2/INSTALL

一旦完成,安装一个空调制解调器仿真器或找到一个串行设备来测试。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐