【问题标题】:CommPortIdentifier.getPortIdentifiers() RXTX not listing all portsCommPortIdentifier.getPortIdentifiers() RXTX 未列出所有端口
【发布时间】:2015-11-02 15:09:56
【问题描述】:

我试图首先列出 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 Running Ubuntu 64 bit)

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。

【问题讨论】:

  • 您能否提供更多详细信息...

标签: java bluetooth serial-port rxtx


【解决方案1】:

尝试这些步骤(我希望它们能帮助您解决问题):

  • 检查 .so 文件是否在您的类路径中。您可以下载预建的 二进制文件,32 位和 64 位。可以在此线程中找到链接:RXTX can't list port on ubuntu
  • 确认您确实拥有所需的权限(例如 USB0):

    sudo chmod 666 /dev/ttyUSB0
    

    注意:这只会在您重新启动计算机之前处于活动状态,因此如果它解决了您的问题,您可能需要创建一个 udev 规则(Google:udev usb 权限)以永久获取解决这个问题。

我很确定你已经找到了这个 sn-p,但以防万一你没有我会把它留在这里:Discovering comm ports

来源(以防万一有人想阅读完整的文章/问题/答案):

RXTX can't list port on ubuntu

CommPortIdentifier.getPortIdentifiers with zero ports on Linux

ttyUSB0 permission changes after restart

【讨论】:

  • 之前完成了所有这些,我知道我的设置是正确的,因为它确实找到了 tty 端口,但是仍然找不到 Broadcom hidraw 端口。我已经重新编译了 RXTXCommDriver 类,因此它会搜索 hidraw,如我的问题中所见。也许它应该以其他方式编写,而不仅仅是“hidraw”?
  • @Jakkra 你试过这个吗? Please note that on Ubuntu 11.04, the Arduino Uno and possibly others are recognised as /dev/ttyACMxx . The RXTX library only searches through /dev/ttySxx, so you need to make symlinks if your distro does the same, so for example ln -s /dev/ttyACM0 /dev/ttyS33 . 我不确定这是否仍然是 Ubuntu 14.04 上的问题,但我不知何故无法找到有关该主题的一些实际指导,似乎没有多少人遇到 commportIdentifier 的任何问题.
  • @DrAhmedJava 很高兴听到这个消息!
  • @Seth 非常感谢你!它适用于我的机器。真棒有用!