我正在尝试使用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路由器API板连接到一个Arduino Uno,有一个7段显示器,一个XBee协调器API板连接到计算机使用sparkfun uart板。在
其他AT命令正常工作,但是我需要在发送命令之前发现所有可能的XBee路由器单元。如果我使用X-CTU软件,发现功能工作得很好。。。在
我能做什么? 非常感谢
更新:
在评论中解决。。。在
将
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)
相关问题 更多 >
编程相关推荐