public class CRC16_1005USER
{
public Int32 U16;
public byte U8;
public Int16 CRC_POLY = 0x1005;
/// <summary>
///
/// </summary>
/// <param name="pucBuff"></param>
/// <param name="usBuffLen"></param>
/// <param name="pusCrcValue"></param>
/// <returns></returns>
public Int32 cal_crc_check(byte[] pucBuff, int usBuffLen,out Int32 pusCrcValue)
{
Int32 usRc = 0;
byte i = 0x00;
Int32 usCrc16 = 0x0000;
int x = 0;
while ((usBuffLen--)>0)
{
for ( i = 0x80; i !=0; i>>=1)
{
if ((usCrc16 & 0x8000) != 0)
{
usCrc16 = Convert.ToInt32((short)usCrc16 << 1);
usCrc16 = Convert.ToInt32((short)usCrc16 ^ (short)CRC_POLY);
}
else
{
usCrc16 = Convert.ToInt32((short)usCrc16 << 1);
}
if ((pucBuff[x] & i) != 0)
{
usCrc16 = Convert.ToInt32((short)usCrc16 ^ (short)CRC_POLY);
}
}
x++;
}
pusCrcValue = usCrc16;
return usRc;
}
public void Test()
{
byte[] Test2 = {
0x01,0xCD,0x02,0x01,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x60,0x40,0x01,0x05,0x03,0x03,0x02,0x01,0x01,
0x02,0x05,0x03,0x03,0x02,0x02,0x10,0x03,0x05,0x03,0x03,0x02,0x03,0x01,0x04,0x05,0x03,0x03,0x02,0x04,
0x10,0x05,0x05,0x03,0x03,0x02,0x05,0x10,0x06,0x05,0x03,0x03,0x02,0x06,0x10,0x07,0x05,0x03,0x03,0x02,
0x07,0x10,0x08,0x05,0x03,0x03,0x02,0x08,0x10,0x09,0x05,0x03,0x03,0x02,0x09,0x01,0x0A,0x05,0x03,0x03,
0x02,0x0A,0x10,0x0B,0x05,0x03,0x03,0x02,0x0B,0x01,0x0C,0x05,0x03,0x03,0x02,0x0C,0x10,0x0D,0x05,0x03,
0x03,0x02,0x0D,0x10,0x0E,0x05,0x03,0x03,0x02,0x0E,0x01,0x0F,0x05,0x03,0x03,0x02,0x0F,0x10,0x10,0x05,
0x03,0x03,0x02,0x10,0x01,0x11,0x05,0x03,0x03,0x02,0x11,0x01,0x12,0x05,0x03,0x03,0x02,0x12,0x01,0x13,
0x05,0x03,0x03,0x02,0x13,0x01,0x14,0x05,0x03,0x03,0x02,0x14,0x01,0x15,0x05,0x03,0x03,0x02,0x15,0x01,
0x16,0x05,0x03,0x03,0x02,0x16,0x01,0x17,0x05,0x03,0x03,0x02,0x17,0x01,0x18,0x05,0x03,0x03,0x02,0x18,
0x01,0x19,0x05,0x03,0x03,0x02,0x19,0x01,0x1A,0x05,0x03,0x03,0x02,0x1A,0x01,0x1B,0x05,0x03,0x03,0x02,
0x1B,0x01,0x1C,0x05,0x03,0x03,0x02,0x1C,0x01,0x1D,0x05,0x03,0x03,0x02,0x1D,0x01,0x1E,0x05,0x03,0x03,
0x02,0x1E,0x01,0x1F,0x05,0x03,0x03,0x02,0x1F,0x01,0x20,0x05,0x03,0x03,0x02,0x20,0x01,0x21,0x05,0x03,
0x03,0x02,0x21,0x01,0x22,0x05,0x03,0x03,0x02,0x22,0x01,0x23,0x05,0x03,0x03,0x02,0x23,0x01,0x24,0x05,
0x03,0x03,0x02,0x24,0x01,0x25,0x05,0x03,0x03,0x02,0x25,0x01,0x26,0x05,0x03,0x03,0x02,0x26,0x01,0x27,
0x05,0x03,0x03,0x02,0x27,0x01,0x28,0x05,0x03,0x03,0x02,0x28,0x01,0x29,0x05,0x03,0x03,0x02,0x29,0x01,
0x2A,0x05,0x03,0x03,0x02,0x2A,0x01,0x2B,0x05,0x03,0x03,0x02,0x2B,0x01,0x2C,0x05,0x03,0x03,0x02,0x2C,
0x01,0x2D,0x05,0x03,0x03,0x02,0x2D,0x01,0x2E,0x05,0x03,0x03,0x02,0x2E,0x01,0x2F,0x05,0x03,0x03,0x02,
0x2F,0x01,0x30,0x05,0x03,0x03,0x02,0x30,0x01,0x31,0x05,0x03,0x03,0x02,0x31,0x01,0x32,0x05,0x03,0x03,
0x02,0x32,0x01,0x33,0x05,0x03,0x03,0x02,0x33,0x01,0x34,0x05,0x03,0x03,0x02,0x34,0x01,0x35,0x05,0x03,
0x03,0x02,0x35,0x01,0x36,0x05,0x03,0x03,0x02,0x36,0x01,0x37,0x05,0x03,0x03,0x02,0x37,0x01,0x38,0x05,
0x03,0x03,0x02,0x38,0x01,0x39,0x05,0x03,0x03,0x02,0x39,0x01,0x3A,0x05,0x03,0x03,0x02,0x3A,0x01,0x3B,
0x05,0x03,0x03,0x02,0x3B,0x01,0x3C,0x05,0x03,0x03,0x02,0x3C,0x01,0x3D,0x05,0x03,0x03,0x02,0x3D,0x01,
0x3E,0x05,0x03,0x03,0x02,0x3E,0x01,0x3F,0x05,0x03,0x03,0x02,0x3F,0x01,0x40,0x05,0x03,0x03,0x02,0x40,
0x01
};
byte[] Test1= {
0x00,0x29,0x02,0x01,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x60,0x04,0x01,0x05,0x0D,0x02,0x01,0x00,0x00,
0x02,0x05,0x0D,0x02,0x02,0x00,0x21,0x03,0x05,0x0D,0x02,0x03,0x00,0x01,0x04,0x05,0x0D,0x02,0x04,0x00,
0x01
};
Int32 usCheck = 0;
//int ceshi2=cal_crc_check(Test2, 461, out usCheck);
int ceshi1 = cal_crc_check(Test1, 41, out usCheck);
//转成高低位
byte[] a = BitConverter.GetBytes(usCheck);
byte m = a[0]; //低字bai节du
byte n = a[1]; //高字zhi节
}
没有那么多浮夸只有代码!哈哈哈