我用了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)
能解释再清楚些么,如果是这样,那以后数据要用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码