⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 checksum.cpp

📁 串口程序源码
💻 CPP
字号:
#include "stdafx.h"
#include "CheckSum.h"

#define CHECKVALUE(pt,nl)	if((btData==NULL)||(nLength<=0)){AfxMessageBox("无效数组!");return -1;}

CCheckSum::CCheckSum()
{

}

CCheckSum::~CCheckSum()
{

}
//CCITT V.41,x16 + x12 + x5 + 1
WORD CCheckSum::CCITT_CRC_16(BYTE* btData,int nLength)
{
	CHECKVALUE(btData,nLength);
	WORD CRC=0;
	BYTE j;
	int i;

    for(i=0;i<nLength;i++)
   	{     
       	CRC^=(btData[i]<<8);
		for (j=0;j<8;j++)
		{
			if(CRC&0x8000)CRC=((CRC<<1)^0x1021);
			else          CRC<<=1;
		}
   	}
	return ((CRC>>8)+(CRC<<8));/* 应用时低在先 */
}
//ANSI CRC-16,x16 + x15 + x2 + 1
WORD CCheckSum::ANSI_CRC_16(BYTE* btData,int nLength)
{
	CHECKVALUE(btData,nLength);
	WORD CRC=0xFFFF;
	BYTE j,Tmp=0;
	int i;

    for(i=0;i<nLength;i++)
    {     
		CRC^=btData[i];                      
		for (j=0;j<8;j++)                   	
		{                                   	
			Tmp=CRC&0x0001;             	
			CRC=CRC>>1;                 	
			if(Tmp)CRC=(CRC^0xA001);    	
		}                                   	
    }
	return ((CRC>>8)+(CRC<<8));	/* 应用时高在先 */
}

BYTE CCheckSum::CCITT_CRC_8(BYTE* btData,int nLength)
{
	CHECKVALUE(btData,nLength);
	BYTE CRC=0,j;
	int i;

    for(i=0;i<nLength;i++)                                      	
    {                                                          
       	CRC^=btData[i];                                         
       	for (j=0;j<8;j++)                                  
		{                                                  
			if(CRC&0x80)CRC=((CRC<<1)^0x07);      
			else        CRC<<=1;                       
		}                                                  
	}                                                          
    return ~CRC;                                               	
}


WORD CCheckSum::AddSum(BYTE *btData, int nLength)
{
	CHECKVALUE(btData,nLength);
	WORD wCS=0;
	for(int i=0;i<nLength;i++)	wCS+=btData[i];
	return wCS;  
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -