首页 上一页 1 2 下一页 尾页

MODBUS 协议中CRC校验 点击:3825 | 回复:21



tj_hm

    
  • 精华:1帖
  • 求助:0帖
  • 帖子:2帖 | 0回
  • 年度积分:0
  • 历史总积分:11
  • 注册:2003年9月15日
发表于:2004-10-25 13:15:00
楼主
请问各位大侠,MODBUS 协议中CRC校验,包括前面的地址数据,和命令数据吗? 还是仅对后面的数据做CRC校验?谢谢!



飘渺无踪

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 36回
  • 年度积分:0
  • 历史总积分:83
  • 注册:2005年7月03日
发表于:2013-01-10 20:33:11
21楼

 

CRC校验包括所有要发送的数据,以下是CRC校验方法,

private uint crc_16(uint【】 Array,/* uint【】 Rcvbuf,*/ int Len)
        {
            uint【】 Rcvbuf = new uint【2】;
            uint IX, IY, CRC;
            CRC = 0xFFFF;//set all

            if (Len <= 0)
                CRC = 0;
            else
            {
                Len--;
               
                for (IX = 0; IX <= Len; IX++)
                {
                    CRC = CRC ^ (Array【IX】);
                    for (IY = 0; IY <= 7; IY++)
                    {
                        if ((CRC & 1) != 0)
                            CRC = (CRC >> 1) ^ 0xA001;
                        else
                            CRC = CRC >> 1;    //
                    }
                }

            }

            Rcvbuf【0】 = (CRC & 0xff00) >> 8;//高位置
            Rcvbuf【1】 = (CRC & 0x00ff);  //低位置

            CRC = Rcvbuf【0】 << 8;
            CRC += Rcvbuf【1】;
            return CRC;
        }


热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 下一页 尾页