CRC-8校验方法

CRC-8校验方法
CRC-8校验方法

CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。

CRC校验可以简单地描述为:例如我们要发送一些数据(信息字段),为了避免一些干扰以及在接收端的对读取的数据进行判断是否接受的是真实的数据,这时我们就要加上校验数据(即CRC 校验码),来判断接收的数据是否正确。在发送端,根据要传送的k位二进制码序列,以一定的规则(CRC校验有不同的规则。这个规则,在差错控制理论中称为“生成多项式”。)产生一个校验用的r 位校验码(CRC码),附在原始信息后边,构成一个新的二进制码序列数共k+r位,然后发送出去。在接收端,根据信息码和CRC码之间所遵循的规则(即与发送时生成CRC校验码相同的规则)进行检验,校验采用计算机的模二除法,即除数和被除数(即生成多项式)做异或运算,进行异或运算时除数和被除数最高位对齐,进行按位异或运算,若最终的数据能被除尽,则传输正确;否则,传输错误。

CRC8即最终生成的CRC校验码为1字节,其生成多项式,生成多项式为g(x)=x8+x5+x4+1,相当于g(x)=1·x8+0·x7+0·x6+1·x5+1·x4+0·x3+0·x2+0·x1+1·x0,即对应的二进制数为100110001。

CRC8校验算法:

1.CRC8校验的一般性算法:

例如:信息字段代码为: 00000 ————对应m(x)=x8+x

生成多项式为:g(x)=x8+x5+x4+1 ————对应g(x)的二进制代码为:100110001

现在我们将要对2字节数据0x0102生成CRC8校验码,并最终将生成的1字节CRC校验码跟在0x0102的后面,即0x01 02 ##,(##即8为CRC码),最终生成的3字节数据就是经CRC8校验生成的数据。

先计算x8m(x)=x16+x9,对应的2进制数为:100000 。可以看到这样运算所得到的结果其实就是将信息字段代码的数左移8位。因为最终要将生成的8位CRC8校验码附在信息字段的后面,所以要将信息字段的数左移8位。最后用x8m(x)得到的二进制数对生成多项式g(x)进行模二运算,最终的余数(其二进制数的位数一定比生成多项式g(x)的位数小)就是所要的CRC8校验码。

100000

^ 100110001

---------------------------

000110

^ 100110 001

---------------------------

010101 00100000

^ 10011 0001

---------------------------

00110 00110000

^ 100 110001

---------------------------

^ 10 0110001

---------------------------

00 10010110

对x8m(x)做模二运算取余得10010110(0x96),这个8位的二进制数就是CRC8校验码。所以,经CRC8校验后研发送的数据就是0x010296。

2.CRC8校验在DS18B20中的应用:

以上分析的是常规的CRC8校验方法。在DS18B20中,有两处用到CRC。一是DS18B20的8字节的序列号,最后一字节是前面七个字节的CRC码,这是为了保证序列号的唯一性与正确性;另一个是在DS18B20内部9字节的高速温度存储器,其第9字节是前面8个字节的CRC校验码,这是为了温度数据传输的正确性。而在DS18B20中生成CRC码所用到的方法不同于常规生成算法,它采用的是逆序CRC信息单元编码算法,该CRC的生成是由DS18B20中的多项式寄存器通过其中所包含的移位寄存器以及异或门对输入该多项式寄存器的每一位二进制数做一定的运算所得到的CRC码(可以查看Maxim官网上DS18B20的应用笔记Note27,专门介绍DS18B20CRC详细生成过程)。在此列举两种DS18B20CRC校验的C程序。

A.按位运算方法

1/********************************************************/

2/*DS18B20的CRC8校验程序*/

3/********************************************************/

4uchar calcrc_1byte(uchar abyte)

5{

6 uchar i,crc_1byte;

7 crc_1byte=0; //设定crc_1byte初值为0

8for(i = 0; i < 8; i++)

9 {

10if(((crc_1byte^abyte)&0x01))

11 {

12 crc_1byte^=0x18;

13 crc_1byte>>=1;

14 crc_1byte|=0x80;

15 }

16else

17 crc_1byte>>=1;

18 abyte>>=1;

19 }

20return crc_1byte;

21}

22uchar calcrc_bytes(uchar *p,uchar len)

23{

24 uchar crc=0;

25while(len--) //len为总共要校验的字节数

26 {

27 crc=calcrc_1byte(crc^*p++);

28 }

29return crc; //若最终返回的crc为0,则数据传输正确

30}

B.查表法

unsigned char crc_array[256] = {

0x00, 0x5e, 0xbc, 0xe2, 0x61, 0x3f,

0xdd, 0x83,

0xc2, 0x9c, 0x7e, 0x20, 0xa3, 0xfd, 0x1f, 0x41,

0x9d, 0xc3, 0x21, 0x7f, 0xfc, 0xa2, 0x40, 0x1e,

0x5f, 0x01, 0xe3, 0xbd, 0x3e, 0x60,

0x82, 0xdc,

0x23, 0x7d, 0x9f, 0xc1, 0x42, 0x1c, 0xfe, 0xa0,

0xe1, 0xbf, 0x5d, 0x03, 0x80, 0xde,

0x3c, 0x62,

0xbe, 0xe0, 0x02, 0x5c, 0xdf, 0x81,

0x63, 0x3d,

0x7c, 0x22, 0xc0, 0x9e, 0x1d, 0x43,

0xa1, 0xff,

0x46, 0x18, 0xfa, 0xa4, 0x27, 0x79,

0x9b, 0xc5,

0x84, 0xda, 0x38, 0x66, 0xe5, 0xbb,

0x59, 0x07,

0xdb, 0x85, 0x67, 0x39, 0xba, 0xe4,

0x06, 0x58,

0x19, 0x47, 0xa5, 0xfb, 0x78, 0x26,

0xc4, 0x9a,

0x65, 0x3b, 0xd9, 0x87, 0x04, 0x5a,

0xb8, 0xe6,

0xa7, 0xf9, 0x1b, 0x45, 0xc6, 0x98,

0x7a, 0x24,

0xf8, 0xa6, 0x44, 0x1a, 0x99, 0xc7,

0x25, 0x7b,

0x3a, 0x64, 0x86, 0xd8, 0x5b, 0x05,

0xe7, 0xb9,

0x8c, 0xd2, 0x30, 0x6e, 0xed, 0xb3,

0x51, 0x0f,

0x4e, 0x10, 0xf2, 0xac, 0x2f, 0x71,

0x93, 0xcd,

0x11, 0x4f, 0xad, 0xf3, 0x70, 0x2e, 0xcc, 0x92,

0xd3, 0x8d, 0x6f, 0x31, 0xb2, 0xec,

0x0e, 0x50,

0xaf, 0xf1, 0x13, 0x4d, 0xce, 0x90,

0x72, 0x2c,

0x6d, 0x33, 0xd1, 0x8f, 0x0c, 0x52,

0xb0, 0xee,

0x32, 0x6c, 0x8e, 0xd0, 0x53, 0x0d,

0xef, 0xb1,

0xf0, 0xae, 0x4c, 0x12, 0x91, 0xcf, 0x2d, 0x73,

0xca, 0x94, 0x76, 0x28, 0xab, 0xf5,

0x17, 0x49,

0x08, 0x56, 0xb4, 0xea, 0x69, 0x37,

0xd5, 0x8b,

0x57, 0x09, 0xeb, 0xb5, 0x36, 0x68,

0x8a, 0xd4,

0x95, 0xcb, 0x29, 0x77, 0xf4, 0xaa,

0x48, 0x16,

0xe9, 0xb7, 0x55, 0x0b, 0x88, 0xd6,

0x34, 0x6a,

0x2b, 0x75, 0x97, 0xc9, 0x4a, 0x14,

0xf6, 0xa8,

0x74, 0x2a, 0xc8, 0x96, 0x15, 0x4b,

0xa9, 0xf7,

0xb6, 0xe8, 0x0a, 0x54, 0xd7, 0x89,

0x6b, 0x35,

};

unsigned char CRC8_Table(unsigned char *p, char counter)

{

unsigned char crc8 = 0;

for( ; counter > 0; counter--)

{

crc8 = CRC8Table[crc8^*p]; //查表得到CRC码

p++;

}

return crc8;

}

DS18B20的两种校验CRC码的方法本质上都是一样的。查表法是对0x00~0xff这256个数依次生成与每一个数对应的CRC码所组合成的表,每次算一字节数据的CRC码不用经过

calcrc_1byte(uchar abyte)这个函数对每个数据的最低位进行判断是1还是0,而直接通过查表的方式直接提取出crc8^*p的CRC码,其运行效率相对按位运算方法更高,但是查表法所列的表却很占空间。

CRC16校验程序

CRC16校验程序 -------------------------------------------------------------------------------- 作者:转载 //CRC16校验在通讯中应用广泛,这里不对其理论进行讨论,只对常见的3种 //实现方法进行测试。方法1选用了一种常见的查表方法,类似的还有512字 //节、256字等查找表的,至于查找表的生成,这里也略过。 // ---------------- POPULAR POLYNOMIALS ---------------- // CCITT:x^16 + x^12 + x^5 + x^0 (0x1021) // CRC-16: x^16 + x^15 + x^2 + x^0 (0x8005) #define CRC_16_POLYNOMIALS 0x8005 // -------------------------------------------------------------- // CRC16计算方法1:使用2个256长度的校验表 // -------------------------------------------------------------- const BYTE chCRCHTalbe[] = // CRC 高位字节值表{ 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 }; const BYTE chCRCLTalbe[] = // CRC 低位字节值表{ 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7,

细菌鉴定及检测方法

细菌鉴定及检测方法 一、启动条件 1、目的样出现坏包,若批次相同,取表现性状相同的任意一包进行细菌初步鉴 定。若批次不同则分别进行细菌初步鉴定。 2、随机样出现坏包,必须进行细菌初步鉴定。 二、胀包 1、记录批次。 2、及时用72%的酒精对样品的外表进行消毒,尽量不损坏封合待以后检查。在 超净台内以无菌操作剪开包装,再避开横竖封处剪开一个圆形或三角形。3、对样品进行微生物划线培养。 3.1采用普通营养琼脂培养基做细菌的划线培养36±1℃、48小时。 3.2分别吸取10毫升样品到两个无菌的小试管中,,分别在80和100℃的水 浴中加热10分钟,冷却用营养琼脂分别做芽孢(36±1℃、72小时) 和耐热芽孢(55±1℃、72小时)的划线培养。 3.3采用普通营养琼脂培养基或快速检测培养基做嗜冷菌/低温菌的划线培 养(4—6℃ 10天或21±0.5℃ 25小时)。 3.4 必须用高盐察氏或虎红琼脂培养基做霉菌和酵母菌的划线培养 (25—28℃ 5--7天) 4、对样品做感官检测。 5、用PH计检测样品的PH值。 6、将样品倒掉,进行包装密封性检查,并进行记录。 7、记录菌落特征。 8、选区不同形态的单一菌落进行坚定。 8.1 革兰氏阴性菌和阳性菌的鉴定: 8.1.1涂片、革兰氏染色、镜检。或结晶紫染色、镜检、氢氧化钾拉 丝试验。 8.1.2革兰氏染色、结晶紫染色方法见《微生物检测》 8.1.3氢氧化钾拉丝试验 在微生物载物片上滴一滴3%氢氧化钾,用接种针从培养皿上的

菌落中挑取微生物,放在氢氧化钾溶液中用力搅拌。7—10秒后,抬 起针头,观察针头和玻片之间是否有丝状物,如果15—20 秒后二者 之间无丝状物,停止搅拌。 判定:无丝状物阳性;有丝状物阴性。 8.2 过氧化氢酶试验(或过氧化氢酶试纸)(产气试验): 试剂:10%过氧化氢溶液 步骤:在微生物载物片上滴一滴10%过氧化氢,用接种针从培养皿上的菌落中挑取微生物,放在过氧化氢溶液中看是否有气体产生。 判定:产气阳性;不产气阴性。 8.3氧化酶试验 试剂:含1%四甲基双噻二胺和99%的乙醇溶液。 步骤:用上述试剂将一张滤纸浸透(或直接采用氧化酶试纸条),然后进行细菌培养物的涂片试验。 判定:30秒内使显色物质变为深蓝色阳性,不变色阴性。 三、酸包 1、发现酸包后,及时将料液快速转入无菌瓶中。 2、记录批次 3、其它项目检测同胀包。

CRC16校验C语言程序源码 (附完整的可执行的C语言代码)

CRC16校验C语言程序源码(附完整的可执行的C语言代码) //CRC16校验在通讯中应用广泛,这里不对其理论进行讨论,只对常见的2种 //实现方法进行测试。 方法一:查表法(256长度的校验表) 速度快,准确,但是对于单片机设备存储占用大,且校验表长度大,输入时容易出现错误。 // ---------------- POPULAR POLYNOMIALS ---------------- // CCITT: x^16 + x^12 + x^5 + x^0 (0x1021) // CRC-16: x^16 + x^15 + x^2 + x^0 (0x8005) #define CRC_16_POLYNOMIALS 0x8005 const BYTE chCRCHTalbe[] = // CRC 高位字节值表 { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 }; const BYTE chCRCLTalbe[] = // CRC 低位字节值表 { 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,

CRC16校验-C语言代码

//CRC16校验在通讯中应用广泛,这里不对其理论进行讨论,只对常见的3种 //实现方法进行测试。方法1选用了一种常见的查表方法,类似的还有512字 //节、256字等查找表的,至于查找表的生成,这里也略过。 // ---------------- POPULAR POLYNOMIALS ---------------- // CCITT: x^16 + x^12 + x^5 + x^0 (0x1021) // CRC-16: x^16 + x^15 + x^2 + x^0 (0x8005) #define CRC_16_POLYNOMIALS 0x8005 // -------------------------------------------------------------- // CRC16计算方法1:使用2个256长度的校验表 // -------------------------------------------------------------- const BYTE chCRCHTalbe[] = // CRC 高位字节值表 { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 }; const BYTE chCRCLTalbe[] = // CRC 低位字节值表{ 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9,

crc校验码详细介绍看懂了就会了

循环冗余校验码( CRC)的基本原理是:在K 位信息码后再拼接R位的校验码,整个编码长度为N 位,因此,这种编码又叫( N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x) 。根据G(x) 可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。校验码的具体生成过程为:假设发送信息用信息多项式C(X)表示,将C(x) 左移R位,则可表示成C(x)*2 的R次方,这样C(x) 的右边就会空出R位,这就是校验码的位置。通过C(x)*2 的R次方除以生成多项式G(x) 得到的余数就是校验码。编辑本段几个基本概念 1、多项式与二进制数码 多项式和二进制数有直接对应关系:x 的最高幂次对应二进制数的最高位,以下各位对应多项式的各幂次,有此幂次项对应1,无此幂次项对应0。可以看出:x 的最高幂次为R,转换成对应的二进制数有R+1位。 多项式包括生成多项式G(x)和信息多项式C(x) 。如生成多项式为 G(x)=x^4+x^3+x+1 ,可转换为二进制数码11011。而发送信息位1111 ,可转换为数据多项式为C(x)=x^3+x^2+x+1 。 2、生成多项式是接受方和发送方的一个约定,也就是一个二进制数,在整个传输过程中,这个数始终保持不变。 在发送方,利用生成多项式对信息多项式做模2 除生成校验码。在接受方利用生成多项式对收到的编码多项式做模2 除检测和确定错误位置。 应满足以下条件: a、生成多项式的最高位和最低位必须为1。 b、当被传送信息( CRC码)任何一位发生错误时,被生成多项式做除后应该使余数不为0。 c、不同位发生错误时,应该使余数不同。 d、对余数继续做除,应使余数循环。 3 CRC码的生成步骤 1、将x 的最高次幂为R的生成多项式G(x) 转换成对应的R+1位二进制数。 2、将信息码左移R位,相当与对应的信息多项式C(x)*2 的R次方。 3、用生成多项式(二进制数)对信息码做除,得到R 位的余数。 4、将余数拼到信息码左移后空出的位置,得到完整的CRC码。 例】假设使用的生成多项式是G(x)=x^3+x+1 。4 位的原始报文为1010, 求编码后的报文。 解:

检测鉴定方案

检测鉴定方案 辛集市书香园小区4#楼 检测鉴定方案 一、工程概况: 辛集市书香园小区4#楼位于辛集市教育大道东侧,辛集市一中北邻。该楼为六层砖混结构,一层为储藏间,二至六层为住宅。工程于2006年4月份开工建设,2007年11月份竣工验收,建筑面积平方米。 该工程由辛集市博远房地产开发有限公司开发,河北天艺建筑设计有限公司设计,石家庄中天监理公司监理,辛集市天久住宅建设有限责任公司第七施工处施工。 现该4#楼已入住后多户住宅发现墙体裂缝,为了解该楼建筑工程质量状况,辛集市博远房地产开发有限公司委托河北省建筑工程质量检测中心对该楼工程质量现状进行检测鉴定。 二、依据标准 1、委托书 2、《民用建筑可靠性鉴定标准》(GB50292-1999) 3、《建筑结构检测技术标准》(GB50344-2004) 4、《砌体工程现场检测技术标准》(GB/T50315-2000) 5、《建筑结构荷载规范》(GB50009-2001) 6、《砌体结构设计规范》(GB50003-2001)

7、《建筑抗震设计规范》(GB50011-2001) 8、相关技术资料 三、检测内容 1、基础检测 对该建筑物基础各项工程做法进行检测,纵墙(○17~○18×○A轴处)与横量墙(○A~○B×①轴处)分别开挖一处基础测坑。为便于检测,测坑上部开挖尺寸宜控制在1000mm×1000mm左右,经放坡后测坑底部尺寸应控制在600mm×600mm左右,测坑开挖深度为基础灰土层下皮100mm,测坑内部需将余土清理干净,使基础垫层及大放脚轮廓鲜明,表面无积土。测坑开挖需避开雨水管附近,如测坑周围有堆积物不便开挖,经现场检测人员同意可调换适当位置进行,并做好记录。 检测基础工程实际做法,对其标高、尺寸、材料、损伤等逐一进行检测,检查结果绘制成图并详细记录。 检测工具:洋镐、大锤、铁锹、盒尺、钢尺、水平尺、数字测距仪、数码相机、记录簿等。 检测完毕后及时将测坑进行回填,回填时应分层逐一夯实,恢复表面散水及地面。 2、砌体砂浆强度检测 砂浆强度检测 对该建筑物砌体用砂浆强度进行实地检测,每层随机抽

检测鉴定报告范本

报告编号:××××共8页第1 页工程名称名称要与现有学校名称一致,如与原始资料不符要在括号内注明(原某某学校)工程地点现在名称 委托单位现在名称 鉴定时间×年×月×日至×月×日检验类别委托 鉴定项目安全及抗震鉴定 仪器设备检测所使用设备名称 鉴定依据详见附页 鉴定结论及处理意见 1.鉴定结论 1)有无影响结构安全性缺陷。 2)检测材料强度值是否满足《建筑抗震鉴定标准》规定。 3)抗震构造措施是否满足要求,如不满足,需说明哪里不满足什么标准或规范的要求。 4)安全性等级和试修性评估等级,并注明等级含义。(例:该工程的安全性等级为C su,(安全性不符合标准要求,显著影响整体承载),适修性评估等级为:B'r/ B r (稍难修,改造后的功能尚可达到现行设计标准要求,适修性尚好,宜予修复或改造)。) 2.加固建议 根据鉴定结论,需要加固的项目给出加固建议,如需拆除,则此条改为拆除;如满足各项要求,则无需此条。 (本页以下无正文) 单位名称(盖章) 年月日

报告编号:××××共8页第2 页 1.工程概况 包括建成年份,建筑面积,结构形式,层数,楼板形式,基础形式,基本尺寸;原勘察设计单位,施工单位,监理单位,质检部门,产权所有人等,如果没有资料可查,应注明。 写明鉴定原由。(例:为了保证河北省中小学校舍安全工程顺利实施,按照国务院关于中小学校舍安全工程的统一部署及《全国中小学校舍安全工程实施方案》和《全国中小学校舍安全工程技术指南》的要求,依据《河北省中小学校舍鉴定实施细则》和《河北省中小学校舍安全排查实施细则》,×单位接受委托于×年×月×日~×月×日对以上工程进行了建筑物抗震鉴定与安全性鉴定。) 注明当地设防烈度。 图1该项目正立面图(建筑实体照片) 2.抗震鉴定依据 2.1 该工程设计文件、设计变更及地质勘查报告; 2.2《建筑抗震鉴定标准》(GB 50023-2009); 2.3《民用建筑可靠性鉴定标准》(GB 50292-1999); 2.4《建筑工程抗震设防分类标准》(GB 50223-2008); 2.5《建筑抗震设计规范》(GB 50011-2001)(2008版); 2.6《建筑结构检测技术标准》(GB/T 50344-2004)。 3.鉴定内容、要求及方法 3.1鉴定内容及要求 此次抗震鉴定包括下列内容及要求: 3.1.1搜集该工程的勘察报告、施工和竣工验收的相关原始资料;当资料不全时,应根据鉴定的需要进行补充实测。 3.1.2调查该工程现状与原始资料相符合的程度、施工质量和维护状况,普查相关的非抗震缺陷,工程现状调查又包括如下内容:1)该建筑的使用状况与原设计或竣工时有无不同;2)该建筑存在的缺陷是否仍属于“现状良好”的范围,并从结构受力的角度,检查结构的使用与原设计有无明显的变化;3)检测结构材料的实际强度等级。

CRC16校验产生函数

CRC16校验产生函数 /****************************************************************************** * Function Name : crc16 * Input : 数据缓冲区指针:puchMsg ,数据长度:usDataLen * Return : 16 位CRC校验码 * Description : 产生16 位CRC校验码 *******************************************************************************/ INT16U crc16(INT8U *puchMsg, INT8U usDataLen) { INT8U uchCRCHi=0xFF ; /* 高CRC字节初始化*/ INT8U uchCRCLo=0xFF ; /* 低CRC字节初始化*/ INT16U uIndex; /* CRC循环中的索引*/ while(usDataLen--) /* 传输消息缓冲区*/ { uIndex =uchCRCHi^*puchMsg++ ; /* 计算CRC */ uchCRCHi=uchCRCLo^auchCRCHi[uIndex] ; uchCRCLo=auchCRCLo[uIndex]; } return (uchCRCHi<<8|uchCRCLo); } /* CRC 高位字节值表*/ const INT8U code auchCRCHi[] = { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,

检测仪器校验管理规范

1.0 目的 对检测仪器进行有效的控制,以保证其测量精度满足使用要求,确保所使用的检测仪器处于良好的运行状态。2.0 适用范围 适用于本公司所有的检测仪器。 3.0 职责 3.1品质部: 3.1.1负责所有检测仪器的统计,并制定校验计划; 3.1.2实施可内校检测仪器的内部校验工作; 3.1.3负责外校检测仪器的送外校验工作,包括外校机构的选择与联络及外校实施跟进; 3.1.4异常量测仪器的送修,调整及报废鉴定。 3.1.5负责校准用的标准件和校验记录报告的保存。 3.2使用部门: 3.2.1负责本部门的检测仪器和量具的正确使用、维护和保养; 3.2.2保证本部门的检测仪器和量具不超出校准周期; 3.2.3当检测仪器出现异常时及时报告品质部。 4.0 相关文件 《检测设备控制程序》、《内校作业指导书》 5.0 定义 5.1校准:在规定条件下,为确保仪器仪表的指示值(或实物量具所代表的值)与被校准仪器仪表相对应的值之间 的关系,而执行的一组程序操作。 5.2校准周期:两次校准周期的长短。根据仪器仪表的稳定性、校准目的及使用频率和国家标准来设定校准周期的 长短。 5.3内校:根据国家或国际标准或外校合格的标准件进行内部校准。 5.4外校:由国家认可的校验单位或仪器设备的原供应厂商执行校验,校验系统追溯国家和国际系统。 6.0 输入 《检测设备一览表》、《年度检测仪器校验计划》 7.0 输出 《内校报告》、《外校报告》、《报废申请单》、《品质异常单》 8.0程序内容 流程图程序 内容 执行者作业内容(图示栏)

制 定校验计划计 量 员 1、从《检测设备一览表》(表单一)中筛选出需要校验的仪器设备清单; 2、依据检测仪器的使用频率、情况变化等故障来设定它的校验周期(内校周 期一般为3个月,外校周期为1年); 3、拟定《年度检测仪器校验计划》(表单二),并呈报审批。 计划审核品质主管、副总经理 校验实施计量员 、 品质 主管 、 外校机 构 1、内校由计量员在厂内完成,详细参照《内校作业指导书》。 2、外校: 1)品质主管对外校机构进行筛选、选择,并确定校验的具体时间; 2)计量员通知各使用人外校的具体时间安排,并陪同外校,同时记录各外校仪器的校验结果。 3、外校机构按约定的时间进行外校。 校 验结果判定计量员 、 外校机 构 1、内校完成后,计量员按实际校验结果对仪器校验合格与否进行判定, 并粘贴相应校验标签: 2、外校仪器由外校机构进行判定,并出具相应的校验标签; 3、本公司对校验不合格的检测仪器不实行限制范围内的使用; 4、针对外校不合格的仪器,计量员要进行确认并记录。 勾选校验 方式。 勾选校验日期 安排的月份。 2、品质主管审核。 3、副总经理批准。计量员拟定。 Y N 校验合格时贴此标签。 A 校验不合格时贴此标签,同 时由计量员进行修复作业, 若能修复并经校验合格,则 粘贴《校验合格标签》。 校验不合格且不能修 复时贴此标签。

安全性鉴定方法及步骤

框架结构安全性检测鉴定方法及步骤 一、检测鉴定依据 1.《民用建筑可靠性鉴定标准》GB 50292-1999 2.《建筑结构荷载规范》GBJ 9—87 3.《回弹法检测混凝土抗压强度技术规程》(J GJ/T 23-92) 4.《混凝土结构设计规范》GBJ 10—89 5.《危险房屋鉴定标准》JGJ 125—99 6.《混凝土结构加固技术规范》(C ECS 25:90) 7.《钻芯法检测混凝土强度技术规程》(C ECS 03:88) 8.原工程相关资料:包括工程设计图纸、设计变更、施工记录、 地质勘查报告、使用功能及荷载变更、历次加固方案和修复 处理方案、改造的相关资料等 二、鉴定内容 1、调查及检测 ①结构基本情况勘察检查结构的布置形式、结构及其支承构造、构件及其连接构造、结构的细部尺寸及相关的几何参数。 ②结构使用条件核实:检查结构上的作用、建筑物的内外环境及使用历史。 ③地基及基础的检查:当无地基基础的相关资料时,应检查场地类别、地基土情况、地基稳定性及地基变形等情况,主要通过局部开挖,调查现有基础工作状态,观测其整体及局部变形(沉降)情况及其在上部结构中的反应。如有问题,需作进一步检测。 ④材料性能检测分析检测主体承重结构材料的强度:混凝土结构检测梁板、柱子的混凝土强度、混凝土碳化深度,检测保护层厚度、钢筋分布情况等。

混凝土强度检测可采用拔出法、回弹法、取芯法及回弹超声综合法等,钢筋分布及混凝土保护层厚度用扫描仪扫描检测。 混凝土强度检测采用随机抽取的办法,抽检构件数量约为总体构件数量的30%(指主要构件),位置可根据现场条件适当选取,钢筋分布检测选取有代表性的构件及重要的构件进行。 ⑤承重结构情况检查检查结构的体系,房屋的整体性连接、房屋局部易损部位的构造、检查框架梁、板、柱子的裂缝及承重砖墙的裂缝变形等。 2、理论计算分析 根据现场检测所得到的主体承重结构材料强度,结合原工程图纸和调查情况,进行整体结构计算,分析结构构件的承载能力等是否满足相关设计规范的要求。计算分析时,结构构件材料按原设计(或设计变更)和现场实测指标两种情况综合考虑取用,几何参数按设计图纸(或设计变更)并结合现有建筑的实际情况取用。 3、建筑结构安全性鉴定 安全性鉴定按照现行标准要求(《民用建筑可靠性鉴定标准》GB 50292-1999),分构件、子单元、鉴定单元三个层次进行,每一个层次又分为四个安全性和三个使用性等级,按照标准规定的检查项目和步骤,结合现场调查和原设计有关资料以及计算结果,逐层进行。最后,综合分析得出整个建筑的安全性评价。 4、结论及建议 根据鉴定结果,对结构的整体安全度作出评价。 当鉴定结果不符合标准要求时,结合建筑物的实际情况及结构的使用功能要求等提出加固处理方案,并通过经济技术比较,推荐最优的加固方案。

CRC循环冗余校验(CCITT-16)

CRC 循环冗余校验(CCITT-16) START MOVLW DATAe MOVWF ADDR ;将[e 00]余式表首地址DATAe 存入ADDR SWAPF BYTEa ,0ANDLW 0FH ;求e 和e 指定的[e 00]余式高字节的相对地址ADDWF ADDR ,1 ;取其绝对地址,存入ADDR MOVF ADDR ,0 ;把这一绝对地址再存入W CALL TABLE ;查表,返回时h e 00放 W 中 MOVWF RESULTh ;把 h e 00 存 RESULTh MOVLW 16ADDWF ADDR ,0;求e 指定的[e 00] 式低字节的绝对地址CALL TABLE ;查表,返回时l e 00放W 中 MOVWF RESULTl ;把l e 00存入RESUL MOVLW DATAf MOVWF ADDR ;将[f 00]余式表首 址DATAf 存入ADDR MOVF BYTEa ,0ANDLW 0FH ;求f 和f 指定的[f 0 余式高字节的相对址 ADDWF ADDR ,1;取其绝对地址,存ADDR MOVF ADDR ,0;把这一绝对地址再存W CALL TABLE ;查表,返回时h f 00放 W 中 XORWF RESULTh ,0;h e 00与h f 00异或, h a 00,存入W XORWF BYTEb ,0;h a 00与b 异或,h abc ,存入W MOVF BYTEa ;h abc 存入BYTEa MOVLW 16ADDWF ADDR ,0;求f 指定的[f 00]式低字节的绝对地址CALL TABLE ;查表,返回时l f 00放W 中

检测仪器校验方法和记录.

目录 沥青针入度测定仪校验方法 (1) 沥青延度测定仪校验方法 (3) 沥青软化点测定仪校验方法 (5) 马歇尔电动击实仪校验方法 (7) 恒温水浴校验方法 (9) 针片状规准仪校验方法 (11) 沥青路面用粗集料压碎值仪检验方法 (13) 负压筛析仪校验方法 (15) 坍落度筒及捣棒校验方法 (17) 水泥砼粗集料压碎值检验方法 (19) 抗压夹具校验方法 (21) 砂浆稠度仪校验方法 (23) 混凝土贯入阻力仪(含测针)校验方法 (25) 光电式液塑限联合测定仪校验方法 (27) 无侧限抗压试模的校验方法 (29) 砂浆、水泥砼试模的校验方法 (31) 洛杉矶磨耗试验机校验方法 (34) 路面弯沉仪校验方法 (36) 土工电动击实仪校验方法 (38) 电热鼓风干燥箱校验方法 (40) 钢丝反复弯曲试验机校验方法 (42) 水泥胶砂试模校验方法 (44) 雷氏夹校验方法 (46) 恒温恒湿养护箱校验方法 (49) 振筛机校验方法 (51) 容量筒校验方法 (53) 砂、石标准筛校验方法 (55) 混凝土标准养护室校验方法 (59) 试验室用混凝土搅拌机校验方法 (61) 冷冻箱校验方法 (63) 沥青混合料自动拌和机校验方法 (65) 动力触探(标准贯入)仪校验方法 (67) 灌砂仪校验方法 (69) 比重瓶校验方法 (71) 净浆标准稠度与凝结时间测定仪校验方法 (73) 检定证书背面格式 (76)

本方法适用于新的、使用中和检修后的试验室用沥青针入度测定仪的校验。 1、概述 该仪器适用于测定石油沥青、液体石油沥青蒸馏后或乳化沥青蒸发后残留物的针入度。以100g荷重5秒钟内在垂直方向插入沥青试样的深度以鉴定沥青硬度。 仪器由电路系统、荷重连杆、标准针、时间控制系统组成。 2、技术要求 2.1 仪器应有以下标志:名称、型号规格、制造厂、出厂编号、出厂日期等。 2.2仪器外观完好、附件齐全、并附有产品合格证书和产品使用说明书。 2.3针和针连杆在无明显摩擦下垂直运动,并能指示针贯入深度精确到0.1mm。 2.4针和连杆及附加砝码合重为100±0.05g。 2.5针长50±1mm,直径为1.00~1.02mm,针尖直径0.14~0.16mm,针尖总长5.9~6.7mm。 2.6盛样皿:内径55±1mm,深度35±1mm。 2.7恒温水槽:控温的准确度为±0.1℃。 2.8贯入时间:控制在5秒。 3、校验条件 3.1校验用的设备仪器 3.1.1分度值为0.02 mm的游标卡尺和分度值为0.001mm的外径千分尺。 3.1.2分度值为0.01g的电子天平。 3.1.3分度值为0.1秒的秒表。 3.1.4分度值为0.1℃的温度计。 3.2所校验用计量器具必须经计量检定合格,并且在计量检定有效周期内。 3.3石油沥青针入度仪应在15~30℃室温且环境清洁、无腐蚀性气体下校验。 4、校验项目和校验方法 4.1按技术要求2.1、2.2、2.3条对仪器的外观及运转情况进行检查。 4.2用分析天平对针和连杆以及附加砝码合重进行称重,测三次,求平均值,重量在100±0.05g。 4.3用游标卡尺、钢直尺测量标准针的直径和长度,并用万能角度尺测量针尖锥体角度。 4.4用万能尺测量标准针最大偏离度,测三次取平均值。 5、校验结果处理和校验周期 5.1经校验,满足2.1~2.8条要求的针入度仪即为合格,发给校验合格证书。任何一条技术要求不合格,均为校验不合格,发给校验通知书。 5.2该仪器校验周期为一年。在维修后应提前校验。

CRC16校验C语言程序源码-(附完整的可执行的C语言代码)

CRC16校验C语言程序源码-(附完整的可执行的C语言代码)

CRC16校验C语言程序源码(附完整的可执行的C语言代码) //CRC16校验在通讯中应用广泛,这里不对其理论进行讨论,只对常见的2种 //实现方法进行测试。 方法一:查表法(256长度的校验表) 速度快,准确,但是对于单片机设备存储占用大,且校验表长度大,输入时容易出现错误。 // ---------------- POPULAR POLYNOMIALS ---------------- // CCITT: x^16 + x^12 + x^5 + x^0 (0x1021) // CRC-16: x^16 + x^15 + x^2 + x^0 (0x8005) #define CRC_16_POLYNOMIALS 0x8005 const BYTE chCRCHTalbe[] = // CRC 高位字节值表 { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 }; const BYTE chCRCLTalbe[] = // CRC 低位字节值表 { 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E,

相关文档
最新文档