使用python API进行XBee节点发现而没有响应

时间:2015-08-25 15:44:08

标签: python xbee discovery

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

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

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

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

我该怎么办? 非常感谢,

更新

在评论中解决......

1 个答案:

答案 0 :(得分:1)

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

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