ubuntu上用java识别linux串行端口
我正在尝试用Java连接ubuntu上的串行应用程序
在搜索和读取资源之后,我添加了comm.jar和RXTXcomm。在图书馆里
我使用以下代码来标识组件。在我的系统中有三个端口,但在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);
}
# 1 楼答案
看起来您正在筛选出所需的端口。A/dev/tty是一种特殊字符设备。。。不是串行端口,所以
应该永远不要匹配您的字符串
要证明这一点,请尝试在可用端口上迭代。我不知道RXTX是否可以检测到tty,但请使用它并让我们知道
参考: http://rxtx.qbang.org/wiki/index.php/Discovering_available_comm_ports
编辑: 所以你没有任何串行设备来测试?我所做的就是确保您已正确安装了所有内容,包括此文件中描述的属性文件
http://rxtx.qbang.org/pub/rxtx/rxtx-2.0-7pre2/INSTALL
完成后,安装一个空调制解调器模拟器或查找一个串行设备进行测试
# 2 楼答案
在我的例子中,我使用的是Ubuntu,我的笔记本没有任何串行或并行端口
因此,您必须模拟这种端口:
运行它:
根据输出,注意创建的“设备”:
停止socat[CTRL]+[C],并将其符号链接到RXTX将识别为设备的位置,因为前缀为“tty”:
现在,再次运行socat
现在,使用以下代码,您将看到2个虚拟端口:
系统。输出: