有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java XbeeException:找不到端口:/dev/tty。usbserialA6005uPi

我尝试使用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)

请问,有人能解释一下这个错误是什么意思吗?有人能帮我找到解决办法吗

提前感谢:)


共 (3) 个答案

  1. # 1 楼答案

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

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

    在用户不在同一组的情况下,添加它是最基本的:sudousermod-a-G dialout sam

    最后,更改ttyUSB0的权限如下: sudo chmod a+rw/dev/ttyUSB0

    现在,如果让示例运行,它将正确执行

  2. # 2 楼答案

    这里的一个线索可能是OP首先提到了/dev/tty上设备的问题。美国航空。。。。这表明在OSX上使用/dev/ttyUSB0是USB端口的Linux命名,所以可能是在pi上运行这个? 因此,有两件事需要检查: 1.在Mac上,FTDI设备的热插拔存在问题。搜索与使用KEXT加载/卸载正确驱动程序相关的解决方案。 2.我在pi中发现,随机地,USB设备被重新分配,因此昨天的my/dev/ttyUSB0可能是今天的my/dev/ttyUSB1,因为我有多个USB设备连接到集线器。如果您不是在Pi上,而是在另一个Linux复选框中,则会出现这种情况

    通常,当使用USB设备时,没有可靠的枚举。不要期望USB连接会一小时一小时地或一天一天地保持不变。尝试在Windows上使用,并在连接/断开同一设备时观察COM端口号的上升

    您可以按照tomlogic的建议手动枚举,并始终运行: ls/dev/tty*| grep'[usb | usb]' 因此,您可以在系统上看到所有与USB相关的tty设备(osx/*nix)(cmd将在所有类似nix的系统上工作)

  3. # 3 楼答案

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

    如果查看dev目录,您的usbserial tty的名称是什么

    ls /dev/tty.usbserial*

    您是将该路径名传递到程序中,还是将其硬编码到源代码中的某个位置?不管它是什么,您只需要将它更新为适当的值