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 的系统)。
我尝试 运行 使用 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 的系统)。