我一直在研究xbee的3路通信。我已经找到了1个协调器和2个路由器的配置。问题是我似乎无法找到测试此通信的代码。我只需要一个简单的代码,协调器可以同时向路由器发送不同的消息。老实说,我很难过。有人可以帮忙吗?
答案 0 :(得分:0)
首先,您需要Digi提供的XCTU。如果您想发送和接收数据,您可以使用此软件。
如果您想编写自己的程序,我建议您使用xbee。这个python模块有你需要的任何东西:如何读取路由器或终端设备发送的数据包的示例,以及如何从协调器向远程设备发送远程命令的示例,反之亦然。
示例1 - 读取从远程设备发送的数据包:
from xbee import ZigBee
import serial
PORT = '/dev/ttyAMA0' #change AMA0 to USB0 or another port if is necessary
BAUD_RATE = 9600 #the baudrate
# Open serial port
ser = serial.Serial(PORT, BAUD_RATE)
# Create API object
xbee = ZigBee(ser)
# Continuously read and print packets
while True:
try:
response = xbee.wait_read_frame()
print(response)
except KeyboardInterrupt:
ser.colose()
break
示例2 - 向设备发送远程命令:
from xbee import ZigBee
import serial
ser = serial.Serial('/dev/ttyAMA0', 9600)
xbee = ZigBee(ser)
#send command to change Pin 4 of the Xbee to LOW
xbee.send('remote_at',
frame_id='A',
dest_addr_long='\x00\x13\xA2\x00\x40\x24\x20\x7D', #this is the serial address(like the MAC address) of the device. You can read it with XCTU(SH and SL parameters) or you can read it from the back of the device
options='\x02',
command='D4', #pin4
parameter='\x04') #change status to low(\x05 for high status)
#send 1 packet/second with the status of the pins
xbee.send('remote_at',
frame_id='B',
dest_addr_long='\x00\x13\xA2\x00\x40\x24\x20\x7D',
options='\x02',
command='IR', #sample rate parameter
parameter='\x03\xE8') #1000 in hex
#write the above changes
xbee.send('remote_at',
frame_id='C',
dest_addr_long='\x00\x13\xA2\x00\x40\x24\x20\x7D',
options='\x02',
command='WR')
我希望这会有所帮助。