首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法读取Raspberry Pi 3上的XBee Api框架,节点红色v0.17.3

无法读取Raspberry Pi 3上的XBee Api框架,节点红色v0.17.3
EN

Stack Overflow用户
提问于 2017-07-06 08:55:47
回答 1查看 751关注 0票数 3

我希望你能帮我找出我的配置有什么问题。

我必须连接到ZigBee节点,一个通过usb连接到我的mac,另一个通过tx/rx端口连接到raspberry pi 3。

我编写了两个脚本,一个用于发送Xee帧数据包(从mac),另一个用于读取数据包(到pi)。这两个脚本基于python库。

这些脚本在mac上有如下内容:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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)相同。

代码语言:javascript
复制
[
    {
        "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框架拆分输入的正确方法吗?

EN

回答 1

Stack Overflow用户

发布于 2017-07-06 15:06:23

我对节点红色一无所知,但是您需要解析字节流来提取帧。这将需要更多的工作来转义进出的数据,但我认为您可以使用API模式2 (ATAP = 2),其中当框架字节(0x7E)在帧中出现时被转义,因此您可能会在该字节上拆分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44944162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档