标题: 串口协议的校验方式 [打印本页]

作者: hxszrb    时间: 2022-12-25 20:03
标题: 串口协议的校验方式


哪位大神可以指点一下这是用的什么方法计算的校验码呢?

试了很多一直不对,

46.png (22.43 KB, 下载次数: 46)

46.png

33.png (50.41 KB, 下载次数: 49)

33.png

作者: Hephaestus    时间: 2022-12-25 21:56
楼主可以指点一下哪些是数据,而哪些又是校验码呢?
作者: ytchfp163    时间: 2022-12-26 02:58
参考CRC校验:
/// <summary>
        /// CRC校验
        /// </summary>
        /// <param name="data">校验数据</param>
        /// <returns>高低8位</returns>
        public static byte[] CRCCalc(byte[] bytedata)
        {
            byte[] res = new byte[2];
            byte[] crcbuf = bytedata.ToArray();
            //计算并填写CRC校验码
            int crc = 0xffff;
            int len = crcbuf.Length;
            for (int n = 0; n < len; n++)
            {
                byte i;
                crc = crc ^ crcbuf[n];
                for (i = 0; i < 8; i++)
                {
                    int TT;
                    TT = crc & 1;
                    crc = crc >> 1;
                    crc = crc & 0x7fff;
                    if (TT == 1)
                    {
                        crc = crc ^ 0xa001;
                    }
                    crc = crc & 0xffff;
                }

            }
            res[1] = (byte)((crc >> 8) & 0xff);
            res[0] = (byte)((crc & 0xff));
            return res;

        }


作者: angmall    时间: 2022-12-26 08:15
就是 全部加起来,取最后的8位。
0x4B+0x56+0x30+0x34+0x30+0x03 = 0x138  <---- 取最后8位   0x38


作者: 黄youhui    时间: 2022-12-26 10:08
你说他可不可以自定义校验码
作者: Y_G_G    时间: 2022-12-26 22:54
这种问题不是第一次有人问了
如果刚好有人用过个这校验方法,那他可能就会知道
你说要是没用过..........你随便找个CRC校验的计算方法看一下,你觉得那是一般人能反推出来的?
作者: 大大大熊猫    时间: 2023-4-14 14:04
一眼cksum




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1