【问题标题】:XBee node discovery using python API without responseXBee 节点发现使用 python API 没有响应
【发布时间】:2015-08-25 15:44:08
【问题描述】:

我正在尝试使用 python 获取 XBee 网络(API 模式)的数据,因此我正在使用 python-xbee 库和 AT 'ND' 命令来尝试发现所有 XBee 单元(我将将我的代码粘贴到下面的 ND 命令中):

#!/usr/bin/python
from xbee import ZigBee 
import serial

ser = serial.Serial('COM7', 9600)
xbee = ZigBee(ser)

xbee.at(command='ND')
xbeeAddrs = []
while True:
    try:
        newXBeeR = xbee.wait_read_frame()
        print newXBeeR
        xbeeAddrs.append(newXBeeR['parameter']['source_addr_long'])
    except KeyboardInterrupt:
        break
ser.close()

但是没有响应消息并且代码在等待一帧时挂起。

对于最简单的测试,我有一个 XBee Router API 板连接到具有 7 段显示器的 Arduino Uno,还有一个 XBee Coordinator API 板使用 sparkfun uart 板连接到计算机。

其他 AT 命令正常工作,但是我需要在发送命令之前发现所有可能的 XBee 路由器单元。如果我使用 X-CTU 软件,发现功能可以完美运行...

我能做什么? 非常感谢,

更新:

在 cmets 中求解...

【问题讨论】:

  • #!/usr/bin/pythonser = serial.Serial('COM7', 9600) 在同一个脚本中?您创建了一个符号链接(用于 /dev/ttyXXX)?你的操作系统是什么?您在草图中定义任何端口(串行)?
  • 您无法仅使用 2 个参数进行连接。阅读:knowledge.digi.com/articles/Knowledge_Base_Article/… 其中奇偶校验、停止位等设置
  • 如果您阅读。我将删除消息。因为不是你的正确答案。或者检查你的扫描程序串行参数!
  • 感谢 SDilmac,对于同一脚本中的 #!/usr/bin/pythonser = serial.Serial('COM7', 9600),这是由于测试原因,而 Node Discover 无法正常工作。我已经检查了您的链接,但是 在我看来没有什么可以帮助我:(
  • 正确的 COM 端口和波特率?开发板是否处于 API 模式 (ATAP=1)?

标签: python xbee discovery


【解决方案1】:

xbee = ZigBee(ser) 更改为xbee = ZigBee(ser, escaped=true)

说明:默认情况下 API 帧不转义,即 zigbee/xbee 对象在 ATAP1 模式下运行。实际设备(协调器)可能不是这种情况。因此,一种解决方法是在创建 xbee/zigbee 对象或将您的设备配置为处于 ATP1 模式时传递 escaped=true 参数 xbee = ZigBee(ser) 应该是 xbee = ZigBee(ser, escaped=true)

【讨论】:

    猜你喜欢
    • 2015-10-15
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 2015-04-11
    • 2018-12-29
    • 1970-01-01
    相关资源
    最近更新 更多