关于Zigbee_cc2530解决串口显示头几个乱码要怎么解决?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Zigbee_cc2530解决串口显示头几个乱码要怎么解决?相关的知识,希望对你有一定的参考价值。

有解释说在simpleCollector.c中的zb_ReceiveDataIndication()函数中添加
HalUARTWrite(0, buf, (byte)osal_strlen((void*)buf ));
HalUARTWrite(0,"\n",1);
谁能告诉我zb_ReceiveDataIndication()函数在下图哪一类里可以找到?
我是进行温度采集的,采集到的温度经过usb串口转换后在电脑上就显示成那样了,怎样可以显示正常的温度呢?非常感谢……

(1)串口初始化
1.在sapi.c中加入#include"MT_UART.h"头文件,这里注意一定要可以预编译。
2.如下图所示,在sapi.c的SAPI_Init( byte task_id )函数中加入这两句话MT_UartInit();//串口初始化代码和
MT_UartRegisterTaskID(task_id);//登记任务号
(2)在simpleCollector.c中添加头文件#include"MT_UART.h"
(3)在simpleCollector.c中的zb_ReceiveDataIndication()函数中添加
HalUARTWrite(0, buf, (byte)osal_strlen((void*)buf ));
HalUARTWrite(0,"\n",1);
参考技术A 在项目配置选项卡C/C++Compiler -> Preprocessor ->Defined symbols
预编译处加入以下一些内容
ZIGBEEPRO
ZTOOL_P1
xMT_TASK
xMT_SYS_FUNC
xMT_ZDO_FUNC
LCD_SUPPORTED=DEBUG
也即是将原来的
ZIGBEEPRO
ZTOOL_P1
MT_TASK
MT_SYS_FUNC
MT_ZDO_FUNC
LCD_SUPPORTED=DEBUG
分别MT_TASK,MT_SYS_FUNC ,MT_ZDO_FUNC加上x。
参考技术B 串口调试助手中勾选 16进制 方式显示!还有看波特率调对没有 参考技术C 把电脑关了

关于Arduino的串口中断

外部每50ms向Arduino串口发送一帧数据,我需要及时的把接收到的数据从缓冲区读取出来,并且加以处理.也就是说Arduino收到数据后,能立马进入一个中断服务程序,但是Arduino应该怎么做呢? Q:845053559.。。。我头都要大了

如果想用真正的串口中断,你需要去学习avr芯片相关知识才可以(Arduino使用的就是avr芯片 ATmega系列),因为绝大多数东西被Arduino隐藏了,你看不到也用不了,甚至会坏,比如强行手动使用串口中断会导致所有Serial函数无法使用等等。 参考技术A 我也有相同的问题。我要DIY一个平衡车。串口的陀螺仪(MPU6050)每50ms传输一帧数据给arduino。假如程序运行一个loop需要200ms,是不是就没有办法确保每一帧的数据都接收到呢?就算不写很多的主程序,尽量减少main loop的运行时间,抓过来的数据还是比较乱。会漏掉数据。或者数据错误。。。想了好几天了,没有解决的方法。不知道是不是我的想法彻头彻尾的就是错的。难道说不一定要每一帧的数据都收到?是不是每一个loop抓到一组数据就行了?追问

我想了下,6050每次给Arduino传数据时,都是以0作为起始信号,1作为一帧数据结束。能不能通过RX引脚的电平变化来触发一次外部中断?

追答

你也是串口的那种6050吗?我的那款是以0x55作为数据包头的。

参考技术B void setup()

Serial.begin(9600);


void loop()

while (Serial.available() > 0) //如果串口接收到任何数据

执行函数;
delay(2);

if (a == Serial.read()) //如果串口接收到特定的值

执行函数;
Serial.println(a);

追问

我的loop()函数年还有其他东西啊!加入loo()p里面还有一个延时函数delay(2000);那么就要延时2秒多才能读一次缓冲区的数据,而串口是没50毫秒收到一帧数据,每帧数据30个字节。我不能做到及时处理数据啊

追答

在延时的2s内,你不用坐着等啊,可以做很多事,比如去掉长延时,改成一个定器中断,在中断里面检测串口数据,或者更狠一点,
for(次数)
检测串口数据;短延时;
让这个时间=2s

本回答被提问者采纳

以上是关于关于Zigbee_cc2530解决串口显示头几个乱码要怎么解决?的主要内容,如果未能解决你的问题,请参考以下文章

51单片机(CC2530)发送按键次数到串口助手显示 实现功能:按1次按键 串口助手显示1 再按一次 显示2 以此

CC2530开发模块与51单片机如何实现串口通信

Zigbee无线传感网 CC2530+DHT11&DS18B20 温湿度采集 串口上位机显示

CC2530的串口通信原理与应用

如何使用串口调试工具收发cc2530串口数据?

CC2530 串口收发字符串