纵向冗余校验LRC C语言程序
答案:3 悬赏:20
解决时间 2021-03-03 00:05
- 提问者网友:伴他一生,无悔
- 2021-03-02 19:13
纵向冗余校验LRC C语言程序
最佳答案
- 二级知识专家网友:如果这是命
- 2021-03-02 19:41
11
全部回答
- 1楼网友:浪女动了心
- 2021-03-02 22:09
参考答案:已发送!
- 2楼网友:萌萌哒小可爱
- 2021-03-02 20:56
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
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |