我希望你能帮我找出我的配置有什么问题。
我必须连接到ZigBee节点,一个通过usb连接到我的mac,另一个通过tx/rx端口连接到raspberry pi 3。
我编写了两个脚本,一个用于发送Xee帧数据包(从mac),另一个用于读取数据包(到pi)。这两个脚本基于python库。
这些脚本在mac上有如下内容:
import serial
from xbee import XBee, ZigBee
serial_port = serial.Serial('/dev/tty.usbserial-A5025UGJ', 9600)
xbee = ZigBee(serial_port, escaped=True)
# coordinator = 00 13 A2 00 40 8B B1 5A
while True:
try:
# Send AT packet
xbee.send('tx',frame_id='A', dest_addr_long='\x00\x13\xA2\x00\x40\x8B\xB1\x5A', data='test')
parameter = xbee.wait_read_frame()
print 'parameter='
print parameter
except KeyboardInterrupt:
break
serial_port.close()关于Pi:
import serial
from xbee import XBee, ZigBee
serial_port = serial.Serial('/dev/serial0', 9600)
xbee = ZigBee(serial_port, escaped=True)
while True:
try:
# Receive AT packet
parameter = xbee.wait_read_frame()
print 'parameter='
print parameter
except KeyboardInterrupt:
break
serial_port.close()第一个脚本的输出如下(发送方):
parameter= {“retries”:“\x00”,“框架_id”:“a”,“传递状态”:“\x00”,“dest_addr”:“\x00\x00”,“发现_状态”:“\x00”,“id”:“tx_status”}
第二个脚本的输出如下(接收方):
parameter= {'source_addr_long':'\x00\x13\xa2\x00@\x8b\xb1L','rf_data':'test','source_addr':‘\xa3 3\x19’,'id':'rx',‘选项’:'\x01'}
现在,如果启动Node-Red 0.17.3,并使用连接到调试输出模块的“串行输入”模块,如果换行符是基于char "\n“的,则无法看到任何传入。端口与脚本(/dev/serial0 0)相同。
[
{
"id": "e6aa5379.9fd8c",
"type": "debug",
"z": "35e84ae.5ae88b6",
"name": "",
"active": true,
"console": "false",
"complete": "true",
"x": 432.5,
"y": 213,
"wires": []
},
{
"id": "63563843.bba178",
"type": "serial in",
"z": "35e84ae.5ae88b6",
"name": "",
"serial": "fbf0b4fa.9b2918",
"x": 209.5,
"y": 201,
"wires": [
[
"e6aa5379.9fd8c"
]
]
},
{
"id": "fbf0b4fa.9b2918",
"type": "serial-port",
"z": "",
"serialport": "/dev/serial0",
"serialbaud": "9600",
"databits": "8",
"parity": "none",
"stopbits": "1",
"newline": "\\n",
"bin": "false",
"out": "char",
"addchar": false
}
]如果我在每次5000 ms的时间后更改“串行”节点的配置,设置“拆分”,并交付“二进制缓冲区”,这就是调试视图中的结果:
126,0,125,49,144,0,125,51,162,0,64,139,177,76,163,25,1,112,114,111,118,97,13
有人知道如何找到使用XBee API框架拆分输入的正确方法吗?
发布于 2017-07-06 15:06:23
我对节点红色一无所知,但是您需要解析字节流来提取帧。这将需要更多的工作来转义进出的数据,但我认为您可以使用API模式2 (ATAP = 2),其中当框架字节(0x7E)在帧中出现时被转义,因此您可能会在该字节上拆分。
https://stackoverflow.com/questions/44944162
复制相似问题