📄 lrc-check-function.txt
字号:
LRC 错误校验用于 ASCII 模式。这个错误校验码是一个 8 位二进制数,可作为 2 个
ASCII 十六进制字节传送。计算 LRC 码时,仅设备地址、功能代码、数据块字节参加
运算,而冒号 ( : ) 、回车符号 (CR) 、换行字符 (LF) 不参加运算。具体计算 LRC 码的步骤为:
① 需运算的所有字节相加,所得之和丢弃进位。
② 将上步计算出的 8 位字节取反或由 FFH 减去该 8 位字节。
③ 将取反后的值加 1 即为 LRC 码。
接收端判断接收到的信息是否正确的简单方法是:将除冒号 ( : ) 、回车
符号 (CR) 、换行字符 (LF) 以外的所有字节,包括 LRC 码相加并丢弃进位,若结
果为 0 ,则表明信息传送正确,否则出错。
lrc=0; /* LRC 字节初始化
y=x+1;
while (y--) /* 传送消息 0~x为字符,包括起始标记
{
if(y==x)
lrc=data_in2[y];
else if(y!=0)
{
lrc+=data_in2[y]; /* 累加
if((lrc&0x0f)>9)
lrc+=6;
}
}
lrc&=0x0f;
lrc=(~(lrc))+1; //取反加一
LRC校验是将本次传送的数据的各bit位分别进行异或,其结果作LRC,用HEX表示。命令字不参加验算。
例如N个字节数据块传送时
static unsigned char LRC(auchMsg,usDataLen)
unsigned char *auchMsg ; /* 要进行计算的消息 */
//unsigned short usDataLen ; /* LRC 要处理的字节的数量*/
//{ unsigned char uchLRC = 0 ; /* LRC 字节初始化 */
//while (usDataLen--) /* 传送消息 */
//uchLRC += *auchMsg++ ; /* 累加*/
//return ((unsigned char)(-((char_uchLRC))) ;
//}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -