[分享] 改进的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校验码
结束 函数
777777777777777777777777777777777777 同时感谢网友分享 易如意中文编程学习交流论坛有你更精彩~ 易如意中文编程学习交流论坛有你更精彩~ 看看看看看 易如意中文编程学习交流论坛有你更精彩 谢谢分享,继续努力
页:
[1]