上位机MFC串口通讯CRC校验码计算源代码
串口通讯中,其校验码计算是必不可少的一项功能。
校验码的计算类型有非常多。
LRC,CRC等等。
crc也可以细分很多不同的计算方式。
这里分享16位和32位的crc计算源代码。
效果如上图
在编辑框输入数据后,可以点击计算按钮。
会将计算的三种不同类型校验码结果显示出来。
例程中是通过自己编写一个集成类,将相关算法集成在了类里。
关键代码为:
- /*******************************************************************/
- /*
- 函 数 名 称: RunCRC16
- 功 能 描 述: 执行对数据段的CRC16循环冗余校验
- 参 数 说 明: aData[in]:待校验数据
- aSize[in]:待校验数据长度
- aPoly[in]:创建表所需要的多项式
-
- 返回值 说明: 循环冗余校验结果
- /*******************************************************************/
- unsigned short CCRC::RunCRC16( const char * aData, unsigned long aSize, unsigned short aPoly )
- {
- unsigned long Table_CRC[256]; // CRC 表
- unsigned long i;
- unsigned short nAccum = 0;
- BuildTable16( aPoly, Table_CRC );
-
- for ( i = 0; i < aSize; i++ )
- nAccum = ( nAccum << 8 ) ^ ( unsigned short )Table_CRC[( nAccum >> 8 ) ^ *aData++];
- return nAccum;
- }
- /*******************************************************************/
- /*
- 函 数 名 称: RunCRC32
- 功 能 描 述: 执行对数据段的CRC32循环冗余校验
- 参 数 说 明: aData[in]:待校验数据
- aSize[in]:待校验数据长度
- aPoly[in]:创建表所需要的多项式
-
- 返回值 说明: 循环冗余校验结果
- /*******************************************************************/
- unsigned long CCRC::RunCRC32( const char * aData, unsigned long aSize, unsigned long aPoly )
- {
- unsigned long Table_CRC[256]; // CRC 表
- unsigned long i;
- unsigned long nAccum = 0;
- BuildTable32( aPoly, Table_CRC );
-
- for ( i = 0; i < aSize; i++ )
- nAccum = ( nAccum << 8 ) ^ Table_CRC[( nAccum >> 24 ) ^ *aData++];
- return nAccum;
- }
复制代码 源代码下载:
上位机VC MFC程序开发精典实例大全源码与视频讲解配套下载408例 经历1年的编程与录制点击进入查看
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|