
C-示例根据ISO / IEC 13239计算或检查CRC16
LRI64
附录B
C-为例计算或检查CRC16
根据ISO / IEC 13239
循环冗余校验(CRC)计算包含在一个消息中的所有数据,从
的标志,通过对数据的结束的开始。这个CRC是从VCD用来LRI64和
从LRI64到VCD 。
向所计算出的加额外保护,防止移误差,进一步转化
CRC而成。计算出的CRC校验码的补是连接到值
消息以供传输。
用于检查接收到的消息的2字节的CRC码也常常包括在再
计算,为便于使用。在这种情况下,给定的预期值所产生的CRC
F0B8h的残基
表20 。
CRC定义
CRC定义
CRC类型
ISO / IEC
13239
长
16位
多项式
X
16
+ X
12
+ X
5
+ 1
= Ox8408
方向
落后
预设
FFFFH
残留
F0B8h
22.1
CRC计算示例
本实施例中的C语言表示计算CRC对一组给定的一个方法
字节包括消息。
#定义
#定义
#定义
#定义
#定义
#定义
POLYNOMIAL0x8408//
PRESET_VALUE0xFFFF
CHECK_VALUE0xF0B8
x^16 + x^12 + x^5 + 1
NUMBER_OF_BYTES4 //例: 4个数据字节
CALC_CRC1
CHECK_CRC0
无效的主要( )
{
unsigned int类型current_crc_value ;
无符号字符array_of_databytes [ NUMBER_OF_BYTES + 2] = {1, 2,3,
4, 0x91, 0x39};
INT
number_of_databytes = NUMBER_OF_BYTES ;
INT
calculate_or_check_crc ;
INT
I,J ;
calculate_or_check_crc = CALC_CRC ;
// calculate_or_check_crc = CHECK_CRC ; //这可能是其他
例子
如果( calculate_or_check_crc == CALC_CRC )
{
number_of_databytes = NUMBER_OF_BYTES ;
}
48/52