您的位置:首页 > 编程语言 > C#

ModbusRTU协议中CRC校验码的算法

2016-10-17 10:07 441 查看
 //生成crc校验码

        private ushort Fun_CRC16(byte[] data, ushort length)

        {

            ushort reg_crc;

            ushort s_crcchk;

            s_crcchk = 0;

            reg_crc = 0xFFFF;

            int i = 0;

            while ((length--) > 0)

            {

                reg_crc ^= data[i++];

                for (s_crcchk = 0; s_crcchk < 8; s_crcchk++)

                {

                    if ((reg_crc & 0x01) > 0)

                    {

                        reg_crc = (ushort)((reg_crc >> 1) ^ 0xa001);

                    }

                    else

                    {

                        reg_crc = (ushort)(reg_crc >> 1);

                    }

                }

            }

            return reg_crc;

        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ModbusRTU CRC校验码 c#