ModBus RTU协议CRC校验方式最简实现

   1:          /// <summary>
   2:          /// 计算CRC校验码(0:地位,1:高位)
   3:          /// </summary>
   4:          /// <param name="byteData">输入参数:CRC值</param>
   5:          /// <returns>返回值:byte[],2位,0:地位,1:高位</returns>
   6:          public static byte[] GetCRC(byte[] byteData)
   7:          {
   8:              byte[] CRC = new byte[2];
   9:              UInt16 wCrc = 0xFFFF;
  10:              for (int i = 0; i < byteData.Length; i++)
  11:              {
  12:                  wCrc ^= Convert.ToUInt16(byteData[i]);
  13:                  for (int j = 0; j < 8; j++)
  14:                  {
  15:                      if ((wCrc & 0x0001) == 1)
  16:                      {
  17:                          wCrc >>= 1;
  18:                          wCrc ^= 0xA001;//异或多项式
  19:                      }
  20:                      else
  21:                      {
  22:                          wCrc >>= 1;
  23:                      }
  24:                  }
  25:              }
  26:              CRC[1] = (byte)((wCrc & 0xFF00) >> 8);//高位在后
  27:              CRC[0] = (byte)(wCrc & 0x00FF);       //低位在前
  28:              return CRC;
  29:          }

转载于:https://www.cnblogs.com/chenamo5776/archive/2012/01/05/2312628.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值