icode 发表于 2024-1-20 20:20:06

[分享] 改进的Modbus中CRC16校验代码,同时感谢网友分享

改进的Modbus中CRC16校验代码,同时感谢网友yangneet的分享, 在他基础上修改的代码:
函数 CRC16_Modbus校验码(字节数据集 为 字节型(), 数据长度 为 整数型) 为 整数型
        变量 crc 为 整数型, i 为 整数型, x 为 整数型, b 为 整数型
       
        'CRC初始值=0xFFFF 其它CRC可更改成对应的
        crc = 65535
       
        '检查校验数据长度
        如果 数据长度 > 取数组成员数(字节数据集) 则
                数据长度 = 取数组成员数(字节数据集)
        结束 如果
       
        x = 0
        判断循环首 x < 数据长度
                b = 字节数据集(x)                                        '取出字节数据
               
                如果 b < 0 则                                                '最主要的是这句,必须转换成无符号数据
                        b = b + 256
                结束 如果
               
                crc = crc 异或 b
                i = 0
                判断循环首 i < 8
                        如果 (crc 且 1) 则
                                crc = crc \ 2                                 '无符号右移1位
                                crc = crc 异或 40961                 '0xA001 其它CRC可更改成对应的
                        否则
                                crc = crc \ 2                                 '无符号右移1位
                        结束 如果
                        i = i + 1
                判断循环尾
                x = x + 1
        判断循环尾
        CRC16_Modbus校验码 = crc                                '返回CRC校验码
结束 函数


咸鱼 发表于 2024-1-20 23:19:08

777777777777777777777777777777777777

retn 发表于 2024-1-21 23:31:50

同时感谢网友分享

wmzhl998 发表于 2024-1-23 08:33:33

易如意中文编程学习交流论坛有你更精彩~

wmzhl998 发表于 2024-1-24 09:13:18

易如意中文编程学习交流论坛有你更精彩~

q13003765457 发表于 2024-8-28 09:30:20

看看看看看

恒泰源 发表于 2024-9-28 14:21:35

易如意中文编程学习交流论坛有你更精彩

mandur 发表于 2024-12-17 15:20:52

谢谢分享,继续努力
页: [1]
查看完整版本: [分享] 改进的Modbus中CRC16校验代码,同时感谢网友分享