java - CommPortIdentifier.getPortIdentifiers() RXTX 未列出所有端口

标签 java bluetooth serial-port rxtx

我首先尝试列出 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

ttyUSB0 permission changes after restart

关于java - CommPortIdentifier.getPortIdentifiers() RXTX 未列出所有端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33480769/

相关文章:

java - 使用 apache commons 电子邮件库出现错误必须先发出 starttls 命令。请帮忙

java - Android Java Bixolon SPP-R300 打印图像和蓝牙

iphone - HID 报告描述符(使用 iPhone)

java - 蓝牙安卓错误

C#串口检查设备是否连接

C# - 通过串行端口从设备获取所有数据并检测控制字符(ACK、SOH、...)

Java : Retrieve Column names from ResultSet

Java 小程序 HttpClient AccessControlException

java - 如何查看 Apache Derby 是否已安装并正在运行?

c - 在 Windows 中轮询 CTS 线路的状态