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

450803313   2014-7-26 22:48 楼主
我用了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)

  • d.PNG
  • dd.PNG

回复评论 (5)

加‘0’转换成ASCII
点赞  2014-7-26 23:16
引用: moonyuan 发表于 2014-7-26 23:16
加‘0’转换成ASCII

能解释再清楚些么,如果是这样,那以后数据要用HalUARTWrite(..,buffer,..)发送数据时,都要把buffer指向的缓存区数据一个个读出来么,我将(是uint8)B=40读入到PC,直接读进去为什么不行呢?是不是HalUARTWrite(..,buffer,..)函数机制不太好呢,谢谢
点赞  2014-7-28 22:08
你加的0很明显是char类型的,可以把加0和不加0的结果都贴出来下,方便分析。你问的是为什么要加0,但是这个0 是你自己加上去的啊,我们并不知道不加0是什么结果,而加0你认为是对的,难道就是对的。
点赞  2014-9-2 11:19
打印出来的是'4','0',40输出来是0x28,显示出来是乱码
点赞  2014-9-3 14:03
看到Z-stack2.5.1a协议栈的simpleApp例程,里面也有类似的情况
*pBuf++ = (sensorReading / 10 ) + '0';    // convent msb to ascii
不过看注释,应该就如二楼所说,是转换为ASII码
点赞  2014-9-5 15:09
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复