微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > 射频无线通信设计 > Zigbee串口发送数据给PC为何要加 '0'(很不解)

Zigbee串口发送数据给PC为何要加 '0'(很不解)

时间:10-02 整理:3721RD 点击:
我用了nv;
uint8 A=40;
uint8 B;
...
osal_nv_write(TEST_NV,1,1,&A);
osal_nv_read(TEST_NV,1,1,&B);//
Buffer[0] = B / 10 + '0' ;
Buffer[1] = B % 10 + '0' ;
HalUARTWrite(0,Buffer,2);
....
以上写法确实可以成功将数据40写入串口助手,但是为什么要将B拆开发送,而且还个位十位运算上加上'0'?(参考自《Zigbee无线传感网络设计与实现》P118)


加‘0’转换成ASCII

能解释再清楚些么,如果是这样,那以后数据要用HalUARTWrite(..,buffer,..)发送数据时,都要把buffer指向的缓存区数据一个个读出来么,我将(是uint8)B=40读入到PC,直接读进去为什么不行呢?是不是HalUARTWrite(..,buffer,..)函数机制不太好呢,谢谢

你加的0很明显是char类型的,可以把加0和不加0的结果都贴出来下,方便分析。你问的是为什么要加0,但是这个0 是你自己加上去的啊,我们并不知道不加0是什么结果,而加0你认为是对的,难道就是对的。

打印出来的是'4','0',40输出来是0x28,显示出来是乱码

看到Z-stack2.5.1a协议栈的simpleApp例程,里面也有类似的情况
*pBuf++ = (sensorReading / 10 ) + '0'; // convent msb to ascii
不过看注释,应该就如二楼所说,是转换为ASII码

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top