工控编程吧
标题:
上位机MFC串口通讯CRC校验码计算源代码
[打印本页]
作者:
qq263946146
时间:
2019-9-27 10:27
标题:
上位机MFC串口通讯CRC校验码计算源代码
(, 下载次数: 3)
上传
点击文件名下载附件
串口通讯中,其校验码计算是必不可少的一项功能。
校验码的计算类型有非常多。
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;
}
复制代码
源代码下载:
(, 下载次数: 3)
上传
点击文件名下载附件 [MFC408]1[/MFC408]
[halcon]1[/halcon]
[weixinlianxi]1[/weixinlianxi]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4