2015-08-25 24 views
0

我试图使用python获取XBee网络(API模式)的数据,所以我使用python-xbee库和AT'ND'命令尝试发现所有的XBee单位(我会贴上我的代码只是为了下面ND命令):XBee节点发现使用python API没有响应

#!/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段显示器将XBee路由器API板连接到Arduino Uno,以及使用sparkfun uart板连接到计算机的XBee协调器API板。

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

我该怎么办? 非常感谢,

UPDATE:

在评论...解决

+0

'#!的/ usr/bin中/ python'和'SER =序列。串行('COM7',9600)'在同一个脚本?你创建一个符号链接(用于/ dev/ttyXXX)?你的操作系统是什么?你在草图中定义任何端口(串行)? – dsgdfg

+0

您只能连接2个参数。请阅读以下内容:http://knowledge.digi.com/articles/Knowledge_Base_Article/Parity-settings-on-module如果您阅读了奇偶校验,停止位等设置 – dsgdfg

+0

。我将删除消息。因为不是你的正确答案。或者检查你的扫描程序串口参数! – dsgdfg

回答

1

变化xbee = ZigBee(ser)xbee = ZigBee(ser, escaped=true)

说明:默认情况下,API框架不被转义,即ZigBee的/ xbee对象以ATAP1模式运行。实际设备(协调员)可能不是这种情况。所以,一个解决办法是创建的XBee/ZigBee的对象时,通过逃脱= true参数或配置您的设备是在ATP1模式 xbee = ZigBee(ser)应该xbee = ZigBee(ser, escaped=true)