改掉了,能校驗了。程序如下
u8 ascii_tohex(u8 ascii_data)//ascii轉(zhuǎn)hex函數(shù)
{
u8 hex_data=0;//定義hex變量存儲轉(zhuǎn)換結(jié)果
if(ascii_data>=0x30&&ascii_data<=0x39)
hex_data=ascii_data-0x30;//若轉(zhuǎn)換內(nèi)容為字符'0-9',則轉(zhuǎn)成對應數(shù)字0-9
else
hex_data=ascii_data-0x37;//若轉(zhuǎn)換內(nèi)容為字符'a-f',則轉(zhuǎn)成數(shù)字10-15
return hex_data;//返回轉(zhuǎn)換結(jié)果,非以上字符,不在hex(0-f)范圍內(nèi),默認0
}
for(i=0; i<COM2.RX_Cnt; i++) TX1_write2buff(RX2_Buffer[i]); //收到的數(shù)據(jù)原樣返回
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]);
通過串口返回的數(shù)據(jù)是
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合并成一個十進制的數(shù)2975877
目前還沒有頭緒,搞好了,再報告。
|