XbeeException:找不到端口:/dev/tty.usbserial-A6005uPi

XbeeException : Could not find port: /dev/tty.usbserial-A6005uPi

我尝试 运行 使用 XBee 的 API 的示例。

当我在 Eclipse 中执行程序时,出现此错误:

Stable Library
=========================================
Native lib Version = RXTX-2.2pre2
Java lib Version   = RXTX-2.1-7
WARNING:  RXTX Version mismatch
    Jar version = RXTX-2.1-7
    native lib Version = RXTX-2.2pre2
[2015-12-01 08:56:35,652] [main] [ERROR] [com.rapplogic.xbee.examples.ApiAtExample] at command failed 
com.rapplogic.xbee.api.XBeeException: Could not find port: /dev/tty.usbserial-A6005uPi
    at com.rapplogic.xbee.SerialPortConnection.openSerialPort(SerialPortConnection.java:94)
    at com.rapplogic.xbee.SerialPortConnection.openSerialPort(SerialPortConnection.java:61)
    at com.rapplogic.xbee.api.XBee.open(XBee.java:132)
    at com.rapplogic.xbee.examples.ApiAtExample.<init>(ApiAtExample.java:53)
    at com.rapplogic.xbee.examples.ApiAtExample.main(ApiAtExample.java:76)

拜托,谁能解释一下这个错误是什么意思?有人可以帮我找到解决方案吗?

提前致谢:)

您似乎使用了错误的 XBee 模块串口路径名:Could not find port: /dev/tty.usbserial-A6005uPi

如果你查看 dev 目录,你的 usbserial ttys 的名称是什么?

ls /dev/tty.usbserial*

您是将该路径名传递到程序中,还是硬编码在源代码中的某处?不管是什么,你只需要将它更新为合适的值即可。

。解决的步骤是:
1、验证ttyUSB0组: ls -la /dev/ttyUSB0 crwxrwx--x 1 root dialout 188, 0 Dec 2 10:01 /dev/ttyUSB0

然后在这种情况下验证用户 "sam" 是否存在于同一组(拨出)中:id -Gn sam sam adm cdrom sudo dip plugdev lpadmin sambashare,

如果用户不在同一组中,则首先添加它:sudo usermod -a -G dialout sam

最后,像这样更改 ttyUSB0 的权限: sudo chmod a+rw /dev/ttyUSB0

现在如果将示例放入 运行 它将正确执行

这里的一个线索可能是 OP 首先提到 /dev/tty.usbserial 上的设备问题....这表明在 OSX 上使用,而 /dev/ttyUSB0 是Linux USB 端口的命名,所以也许 运行 在 pi 上使用它? 所以要检查的几件事是: 1. Mac FTDI 设备的热插拔有问题。搜索与使用 KEXT load/unload 正确的驱动程序相关的解决方案。 2. 我在 pi 中发现,USB 设备会随机重新分配,所以当我有多个 USB 设备连接到集线器时,我昨天的 /dev/ttyUSB0 今天可能是我的 /dev/ttyUSB1。如果您不在 Pi 上,而是在另一个 Linux 框上,请检查是否会发生这种情况。

通常在使用 USB 设备时没有可靠的枚举。不要期望 USB 连接每时每刻或每天都保持不变。尝试在 Windows 上使用并观察您的 COM 端口号随着您 connect/disconnect 同一设备的攀升。

您可以通过执行类似于 tomlogic 建议的操作来手动枚举,并且总是 运行: ls /dev/tty* | grep '[usb|USB]' 所以你可以看到你系统上所有与 USB 相关的 tty 设备(osx/*nix)(cmd 将适用于所有类似 nix 的系统)。