改掉了,能校验了。程序如下
u8 ascii_tohex(u8 ascii_data)//ascii转hex函数
{
u8 hex_data=0;//定义hex变量存储转换结果
if(ascii_data>=0x30&&ascii_data<=0x39)
hex_data=ascii_data-0x30;//若转换内容为字符'0-9',则转成对应数字0-9
else
hex_data=ascii_data-0x37;//若转换内容为字符'a-f',则转成数字10-15
return hex_data;//返回转换结果,非以上字符,不在hex(0-f)范围内,默认0
}
for(i=0; i<COM2.RX_Cnt; i++) TX1_write2buff(RX2_Buffer[i]); //收到的数据原样返回
for(i=0; i<10; i++) rxbuf[i]=RX2_Buffer[i+1];
for(i=0; i<10; i++) TX1_write2buff(rxbuf[i]);
for(i=0; i<10; i++) rxbuf[i]=ascii_tohex(rxbuf[i]);
for(i=0; i<10; i++) TX1_write2buff(rxbuf[i]);
//for(i=0; i<10; i+2) (rxbuf[i]<<4)|rxbuf[i+1];
rxbuf[10]=(rxbuf[0]<<4)|rxbuf[1];
rxbuf[11]=(rxbuf[2]<<4)|rxbuf[3];
rxbuf[12]=(rxbuf[4]<<4)|rxbuf[5];
rxbuf[13]=(rxbuf[6]<<4)|rxbuf[7];
rxbuf[14]=(rxbuf[8]<<4)|rxbuf[9];
rxbuf[15]=rxbuf[10]^rxbuf[11]^rxbuf[12]^rxbuf[13]^rxbuf[14];
for(i=10; i<16; i++) TX1_write2buff(rxbuf[i]);
通过串口返回的数据是
02 33 36 30 30 32 44 36 38 38 35 F6 03
33 36 30 30 32 44 36 38 38 35
03 06 00 00 02 0D 06 08 08 05
36 00 2D 68 85
F6
剩下就是要把00 2D 68 85合并成一个十进制的数2975877
目前还没有头绪,搞好了,再报告。
|