10进制收发都没问题,16进制发送时,我用串口调试助手接收都是正确的,只有16进制接收时有问题,求大神赐教,如何正确接收16进制数据。
char lbuffer[10]; //用以提取接收缓冲区数据
。。。
若我用串口调试助手发送1234
当接收过之后
if(lbuffer[1] == 2){} //此if就进不去
if(lbuffer[1] == '2'){} //这个if可以进去
若我用串口调试助手发送16进制12 fe 34 ac
然后我接收的数据都是此16进制对应10进制ASIC码值
求继续赐教
应该是调试助手发送数据的问题,应该是把16进制对应10进制ASIC码值发生出去,你可以对接收和发生的数据进行统计.
char lbuffer[4]; //用以提取接收缓冲区数据
。。。
若我令lbuffer[4] = {0x12,0xfe,0x34,0xac};
然后发送出去,我的串口调试助手也只能按16进制接收正常
若我用串口调试助手发送16进制12 fe 34 ac
然后我接收的数据都是此16进制对应10进制ASIC码值if(lbuffer[1] == 0xfe){}是进不去的
求继续赐教
是数据类型的问题。
char lbuffer[4];这里是char,而你想要显示的是16进制。你可以自己转一下。
最好用unsigned char。下面的代码,你可以学习借鉴下。
//ASCII To Char