CRC校验原理及其C语言实现-机电之家网PLC技术网

CRC校验原理及其C语言实现-机电之家网PLC技术网

ID:45657025

大小:117.50 KB

页数:14页

时间:2019-11-15

CRC校验原理及其C语言实现-机电之家网PLC技术网_第1页
CRC校验原理及其C语言实现-机电之家网PLC技术网_第2页
CRC校验原理及其C语言实现-机电之家网PLC技术网_第3页
CRC校验原理及其C语言实现-机电之家网PLC技术网_第4页
CRC校验原理及其C语言实现-机电之家网PLC技术网_第5页
资源描述:

《CRC校验原理及其C语言实现-机电之家网PLC技术网》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、CRC校验原理及其C语言实现-机电之家网PLC技术网————————————————————————————————作者:————————————————————————————————日期:14CRC校验原理及其C语言实现-机电之家网PLC技术网CRC校验原理及其C语言实现在数据存储和数据通讯领域,CRC无处不在:著名的通讯协议X.25的FCS(帧检错序列)采用的是CRC.CCITT,ARJ、LHA等压缩工具软件采用的是CRC32,磁盘驱动器的读写采用了CRC16,通用的图像存储格式GIF、TIFF等也都用C

2、RC作为检错手段。CRC的本质是模-2除法的余数,采用的除数不同,CRC的类型也就不一样。通常,CRC的除数用生成多项式来表示。最常用的CRC码的生成多项式有CRC16,CRC32.以CRC16为例,16位的CRC码产生的规则是先将要发送的二进制序列数左移16位(既乘以2^16)后,再除以一个多项式,最后所得到的余数既是CRC码,如下式所示,其中K(X)表示n位的二进制序列数,G(X)为多项式,Q(X)为整数,R(X)是余数(既CRC码)。K(X)>>16=G(x)Q(x)+R(x)14求CRC码所

3、采用模2加减运算法则,既是不带进位和借位的按位加减,这种加减运算实际上就是逻辑上的异或运算,加法和减法等价,乘法和除法运算与普通代数式的乘除法运算是一样,符合同样的规律。生成CRC码的多项式如下,其中CRC-16和CRC-CCITT产生16位的CRC码,而CRC-32则产生的是32位的CRC码PLC资料网接收方将接收到的二进制序列数(包括信息码和CRC码)除以多项式,如果余数为0,则说明传输中无错误发生,否则说明传输有误,关于其原理这里不再多述。用软件计算CRC码时,接收方可以将接收到的信息码求CRC码,比较结

4、果和接收到的CRC码是否相同。CCITT推荐的高级数据链路控制规程HDLC的帧校验序列FCS中,使用CCITT-16即CRC16,其生成多项式为G(x)=x16+x12+x5+1,CRC-32的生成多项式为G(x)=x32+x26+x23+x22+x16+x11+x10+x16+x8+x7+x5+x4+x2+x+1以上是摘录的一段介绍,是不是觉得很玄?我第一次看也是觉得很晕,后来查询了一些规约和协议的实现资料以后,才恍然大悟。以下是我实现的一段C++代码,只实现了CRC16,CRC32的实现基本类似,网上有很多

5、资源。其实实现起来非常简单,就是查表、异或运算而已!查表法实现起来比较简单,耗资源也比较少,速度较快。只要通信双方采用的同样的余数表,就可以正确进行CRC校验。余数表并没有硬性规定。许多程序还把余数表做成自动生成,那样适用性就更好了。//CRC计算主函数:14//内容:#include"CrcCode.h"PLCusingnamespacestd;unsignedshortintCrcCode::CrcCode16(constchar*CrcSrcCode,constsize_tCodeLength){unsi

6、gnedshortCRC_Code[]={0x0673,0x1652,0x2631,0x3610,0x46F7,0x56D6,0x66B5,0x7694,0x877B,0x975A,//100xA739,0xB718,0xC7FF,0xD7DE,0xE7BD,0xF79C,0x1442,0x0463,0x3400,0x2421,//200x54C6,0x44E7,0x7484,0x64A5,0x954A,0x856B,0xB508,0xA529,0xD5CE,0xC5EF,//300xF58C,0xE5AD,0

7、x2211,0x3230,0x0253,0x1272,0x6295,0x72B4,0x42D7,0x52F6,//40140xA319,0xB338,0x835B,0x937A,0xE39D,0xF3BC,0xC3DF,0xD3FE,0x3020,0x2001,//500x1062,0x0043,0x70A4,0x6085,0x50E6,0x40C7,0xB128,0xA109,0x916A,0x814B,//60PLC资料网0xF1AC,0xE18D,0xD1EE,0xC1CF,0x4EB7,0x5E96,0

8、x6EF5,0x7ED4,0x0E33,0x1E12,//700x2E71,0x3E50,0xCFBF,0xDF9E,0xEFFD,0xFFDC,0x8F3B,0x9F1A,0xAF79,0xBF58,//800x5C86,0x4CA7,0x7CC4,0x6CE5,0x1C02,0x0C23,0x3C40,0x2C61,0xDD8E,0xCDAF,//900xFDCC,0xEDED,0

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。