正如标题所说,我正在寻找一种方法将AT命令发送到远程xbee并读取响应。 我的代码是在python中,我使用的是digi-xbee库。
另一个问题:我使用AT命令的目的是获取该远程xbee设备的节点ID,当最后一个向我发送消息时,我不想对网络进行全面扫描,我只是想获得它的节点ID,显然节点id不会进入帧内。所以我不得不向它发送一个AT命令,所以他把它的节点ID发回给我。如果您有任何可能有用的建议,请告诉我,我们可以提供任何有用的建议。
PS。我试图在回调函数中使用read_device_info(),该函数在收到数据时启动,但它没有工作。它在函数之外工作但不在内部!
提前致谢
答案 0 :(得分:0)
当您收到消息时,您会收到一个xbee_message对象,首先您必须定义一个数据接收回调函数并将其添加到设备。在该消息中,您调用remote_device_get_64bit_addr()。
答案 1 :(得分:0)
有一种向远程Xbee发送命令的方法:首先,连接到本地XBee,然后将命令发送到本地Xbee,以便本地Xbee可以将remote_command发送到远程XBee。
以下是详细信息:
我的命令是:7E 00 10 17 01 00 13 A2 00 41 47 XX XX FF FE 02 50 32 05 C5
,使用XCTU生成。将远程XBee的引脚DIO12设置为digital out, high [5]
是一个远程AT命令。创建一个原始字节数组。
raw = bytearray([0x7E,0x00,0x10,0x17,0x01,0x00,0x13,0xA2,0x00,0x41,0x47,0xXX,0xXX, 0xFF,0xFE,0x02,0x50,0x32,0x05,0xC5])
from digi.xbee.packets.common import RemoteATCommandPacket
ATpacket = RemoteATCommandPacket.create_packet(raw, OperatingMode.API_MODE)
device.send_packet(ATpacket)
奖金:创建数据包的更简单方法:
ATpacket = RemoteATCommandPacket(1,XBee16BitAddress.from_hex_string("0013A2004147XXXX"),XBee16BitAddress.from_hex_string("FFFE"),2,"P2",bytearray([0x05]))