我首先尝试列出 Ubuntu 14.04 LTS 上的端口,但并未检测到所有端口,它仅显示 tty。我想访问 hidraw ,见下文。
我对每个人都有锁定文件的读/写权限。
- 文件 RXTXcomm.jar 应位于 JDKDIR/jre/lib/ext/下
- 必要的库(例如,对于 Linux 32 位,librxtxSerial.so)应位于 JDKDIR/jre/bin/下
- lib/bin 中还有 librxtxSerial.so
librxtxSerial.so 适用于 x86_64(我的计算机:Intel i7 4790k 运行 Ubuntu 64 位)
dpkg --print-architecture
amd64
uname -a
Linux KrantzUbuntu 3.13.0-65-generic #106-Ubuntu SMP Fri Oct 222:08:27 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
当我在终端中列出连接的端口时,我得到这些:
/dev/hidraw4 - Broadcom_Corp_BCM20702A0_54271EFCD756
/dev/input/event14 - Broadcom_Corp_BCM20702A0_54271EFCD756
/dev/input/mouse1 - Broadcom_Corp_BCM20702A0_54271EFCD756
/dev/input/event2 - Logitech_Gaming_Mouse_G400
/dev/input/mouse0 - Logitech_Gaming_Mouse_G400
/dev/hidraw0 - Logitech_Gaming_Mouse_G400
/dev/usb/hiddev0 - Logitech_Gaming_Mouse_G400
/dev/hidraw1 - Logitech_Gaming_Mouse_G400
/dev/input/event3 - CM_Storm_Quickfire_TKL_6keys
/dev/hidraw2 - CM_Storm_Quickfire_TKL_6keys
/dev/input/event4 - CM_Storm_Quickfire_TKL_6keys
/dev/hidraw3 - CM_Storm_Quickfire_TKL_6keys
我稍后要用的是/dev/hidraw4,这是一个蓝牙手机。
我重新编译了 RXTXCommDriver 类,搜索 Linux 上的更多端口并添加:
if(osName.equals("Linux"))
{
String[] Temp = {
"sr",
"hidraw",
"usb",
"input",
"sr0",
"ttyS", // linux Serial Ports
"ttySA", // for the IPAQs
"ttyUSB", // for USB frobs
"rfcomm", // bluetooth serial device
"ttyircomm", // linux IrCommdevices (IrDA serial emu)
};
CandidatePortPrefixes=Temp;
}
但仍然没有列出hidraw。
最佳答案
尝试以下步骤(我确实希望它们能帮助您解决问题):
- 检查 .so 文件是否位于您的类路径中。您可以下载预建的 二进制文件,32 位和 64 位。可以在此线程中找到链接:RXTX can't list port on ubuntu
验证您确实拥有所需的权限(例如 USB0):
sudo chmod 666 /dev/ttyUSB0
注意:此功能仅在您重新启动计算机之前才会生效,因此,如果它解决了您的问题,您可能需要创建一条 udev 规则(Google:udev usb 权限)以永久获取解决这个问题。
我很确定您已经找到了此代码片段,但以防万一您没有找到,我将其留在这里:Discovering comm ports
来源(以防万一有人想阅读完整的文章/问题/答案):
RXTX can't list port on ubuntu
CommPortIdentifier.getPortIdentifiers with zero ports on Linux
关于java - CommPortIdentifier.getPortIdentifiers() RXTX 未列出所有端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33480769/