首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xbee在乒乓期间接收乱码数据

Xbee在乒乓期间接收乱码数据
EN

Stack Overflow用户
提问于 2018-03-13 19:52:37
回答 1查看 47关注 0票数 1

我正在尝试从连接到我的计算机的协调器xbee发送和接收数据。路由器xbee连接到我的arduino,并且应该在收到消息时发回一条消息。

下面是我的python脚本在计算机上运行的代码:

代码语言:javascript
复制
#!/usr/bin/python
#this code runs on the xbee coordinator that is set to API mode 2

import serial
from xbee import ZigBee
from xbee.helpers.dispatch import Dispatch
import time

PORT = '/dev/tty.usbserial-A900UF4T'
BAUD_RATE = 9600

UNKNOWN = '\xff\xfe' 
WHERE = '\x00\x13\xA2\x00\x40\x98\xDA\x08'
dataString='Hello\n'

# Open serial port
ser = serial.Serial(PORT, BAUD_RATE, interCharTimeout=0.5)


#sends data to xbee address
def sendData(address, datatosend):
    zb.send('tx', dest_addr_long = address, dest_addr = UNKNOWN, data = datatosend)

def recvData (data):
    print data



zb = ZigBee(ser, callback=recvData)


#test data sending method
ack = '0013A2004098DA02'
while True:
    try:
        sendData(WHERE, dataString)

    except KeyboardInterrupt:
        break

zb.halt()
ser.close()

这是我得到的回应:

代码语言:javascript
复制
{'retries': '\x00', 'frame_id': '\x01', 'deliver_status': '\x00', 'dest_addr': '\x03\xb1', 'discover_status': '\x00', 'id': 'tx_status'}
{'retries': '\x00', 'frame_id': '\x01', 'deliver_status': '\x00', 'dest_addr': '\x03\xb1', 'discover_status': '\x00', 'id': 'tx_status'}
{'retries': '\x00', 'frame_id': '\x01', 'deliver_status': '\x00', 'dest_addr': '\x03\xb1', 'discover_status': '\x00', 'id': 'tx_status'}
{'retries': '\x00', 'frame_id': '\x01', 'deliver_status': '\x00', 'dest_addr': '\x03\xb1', 'discover_status': '\x00', 'id': 'tx_status'}
{'retries': '\x00', 'frame_id': '\x01', 'deliver_status': '\x00', 'dest_addr': '\x03\xb1', 'discover_status': '\x00', 'id': 'tx_status'}
{'retries': '\x00', 'frame_id': '\x01', 'deliver_status': '\x00', 'dest_addr': '\x03\xb1', 'discover_status': '\x00', 'id': 'tx_status'}
{'retries': '\x00', 'frame_id': '\x01', 'deliver_status': '\x00', 'dest_addr': '\x03\xb1', 'discover_status': '\x00', 'id': 'tx_status'}
{'retries': '\x00', 'frame_id': '\x01', 'deliver_status': '\x00', 'dest_addr': '\x03\xb1', 'discover_status': '\x00', 'id': 'tx_status'}
{'retries': '\x00', 'frame_id': '\x01', 'deliver_status': '\x00', 'dest_addr': '\x03\xb1', 'discover_status': '\x00', 'id': 'tx_status'}
EN

回答 1

Stack Overflow用户

发布于 2018-03-14 22:48:39

您的回调接收到一个字典,其中的XBee框架已转换为字段。在您的示例中,您将看到成功传送到路由器设备的tx_status响应帧。您可能希望尝试使用XCTU (或终端程序)将路由器设备连接到您的PC,以确认它正在以预期的波特率输出数据。然后,您可以确认您在路由器上输入的任何数据都会到达协调器。

调试完这部分后,您就可以关注Arduino代码无法工作的原因了。Arduino看到来自协调器的数据了吗?如果Arduino只是每隔几秒钟发送一条消息,而不等待数据,那么协调器会接收到它吗?也许你已经交换了你的tx/rx引脚,或者你在XBee和Arduino上的波特率配置不匹配。或者您将路由器XBee配置为API模式,而Arduino期望使用透明串行模式。

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

https://stackoverflow.com/questions/49255487

复制
相关文章

相似问题

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