推广 热搜:
 |  行业设备  |  机械制造  |  机器视觉  |  机械自动化  |  仪器仪表  |  工业机器人  |  编程开发  |  嵌入式  |  电子技术  |  工控自动化  |  电工电气 频道

LRC校验算法C语言程序

   日期:2019-02-20     浏览:38    评论:0    
核心提示:LRC校验的数据发送格式起始字符(1个字符)+数据(2n个字符)+校验值(2个字符)+结束字符(2个:回车+换行)。LRC校验值计算数据
 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;i<length+1;i++)

{

if(data[i]>0x40)

lrcdata[i-1]=data[i]-0x41+10;

else

lrcdata[i-1]=data[i]-0x30;

}

k=0;

for(i=0;i<length/2;i++)

{

k+=(lrcdata[2*i]*16+lrcdata[2*i+1]);

}

k=k%256;

k=256-k;

result=k%256;

return result;

}

 

 
打赏
 
更多>同类编程
0相关评论

推荐图文
推荐编程
点击排行

网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报