使用pythonapi在没有响应的情况下发现XBee节点

2024-05-14 23:13:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用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软件,发现功能工作得很好。。。在

我能做什么? 非常感谢

更新:

在评论中解决。。。在


Tags: 代码import命令apiserial路由器atser
1条回答
网友
1楼 · 发布于 2024-05-14 23:13:02

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)

相关问题 更多 >

    热门问题