我尝试使用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)
请有人解释这个错误的含义吗?有人可以帮我找到解决方案吗?
提前致谢:)
答案 0 :(得分:0)
您的XBee模块的串行端口看起来使用了错误的路径名:Could not find port: /dev/tty.usbserial-A6005uPi
。
如果你查看dev目录,你的usbserial ttys的名字是什么?
ls /dev/tty.usbserial*
您是将该路径名传递给程序,还是在源代码中的某处硬编码?无论是什么,您只需要将其更新为适当的值。
答案 1 :(得分:0)
。解决方案的步骤是:
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
现在如果要运行示例,它将正确执行
答案 2 :(得分:0)
这里的一个线索可能是OP首先提到/dev/tty.usbserial上的设备问题....这表明在OSX上使用而/ dev / ttyUSB0是Linux命名的USB端口,所以也许是在pi上运行这个? 所以要检查的几件事是: 1.在Mac上,FTDI设备的热插拔存在问题。搜索与使用KEXT加载/卸载正确的驱动程序相关的解决方案。 2.我已经在pi中随机发现USB设备被重新分配,所以我的/ dev / ttyUSB0昨天可能是我的/ dev / ttyUSB1,当我有多个USB设备连接到集线器时。如果你不是Pi,而是另一个Linux盒,请检查是否会发生这种情况。
通常,在使用USB设备时,没有可靠的枚举。不要指望每小时或每天都能保持USB连接保持不变。尝试在Windows上使用,并在连接/断开同一设备时观察COM端口号。
您可以通过执行与tomlogic建议类似的操作来手动枚举并始终运行: ls / dev / tty * | grep'[usb | USB]' 所以你可以在你的系统上看到所有与USB相关的tty设备(osx / * nix)(cmd可以在所有类似nix的系统上运行)。