24 11 2025

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节

  }

没有那么多浮夸只有代码!哈哈哈

延伸阅读
  1. 系统吞吐量、TPS(QPS)、并发量
  2. CRC验证
发表评论