中易网

纵向冗余校验LRC C语言程序

答案:3  悬赏:20  
解决时间 2021-03-03 00:05
纵向冗余校验LRC C语言程序
最佳答案
11
全部回答

参考答案:已发送!

LRC校验的数据发送格式 起始字符(1个字符)+数据(2n个字符)+校验值(2个字符)+结束字符(2个:回车+换行)。 LRC校验值计算 数据(2n个字符)两两组成一个16进制的数值,然后将这些数值相加,将所得加值与256求模,然后用256减去所得模值,得到的数值即为检验值(即:sum%256后取反,再加1)。 范 例 发送数值 :01050BE7FF0009 数值分析 :-- 起始字符;01050BE7FF00 -- 数据值; 09 -- 检 验值 ; 其后还有回车换行(未标出)。 数据值拆分:010508070000 -->0x01 0x05 0x0B 0xE7 0xFF 0x00 求和: 0x01+0x05+0x0B+0xE7+0xFF+0x00 =0x01F7; 取模,取反: 0x1F7%0x100=0xF7 0xF7 取反 0x08 加1: 0x08+1=0x09 (校验值) C语言算法: uchar data[17]={0x3a,0x30,0x31,0x30,0x35, 0x00,0x00,0x00,0x00,//no 0x00,0x00,0x00,0x00,//status 0x00,0x00, //LRCData 0x0d,0x0a }; //******************************************************************************* // 语法格式:uchar LRC_Check(uchar *data,uchar length); // 实现功能:LRC数据检测算法程序 // 参数: 无 // 返回值: LRC检验值 //****************************************** uchar LRC_Check(uchar *data,uchar length) { uchar i; uint k; uchar result; uchar lrcdata[length]; for(i=1;i0x40) lrcdata[i-1]=data[i]-0x41+10; else lrcdata[i-1]=data[i]-0x30; } k=0; for(i=0;i
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯