Modbus效验问题
为什么如图效验判断哪里等于0看看校验函数的实现过程,应该容易理解吧
晓飛飛 发表于 2024-10-11 12:32
看看校验函数的实现过程,应该容易理解吧
效验不是返回的是CRC16的值吗 为什么哪里却要和0判断呢 本帖最后由 zhp 于 2024-10-11 14:13 编辑
xiaobaoXu 发表于 2024-10-11 12:34
效验不是返回的是CRC16的值吗 为什么哪里却要和0判断呢
Modebus/CRC16校验:
数据 12 34 56 78,CRC16校验为 107B
数据和CRC16一起再计算CRC16,整体的结果就为0000
所以校验一整包数据的CRC16是否正确,
就将整包数据(包括原始数据和原始数据的CRC16)一起进行CRC16计算
再看最终结果是否为0。如果为0,则表示原始数据的CRC16是正确的
需要注意两点:
1、MODBUS/CRC16是Little_Endian(小端)数据格式
2、上面的校验方法可能并不一定适用于其他多项式的CRC校验
没用过校验,这次也学到了{:5_320:} zhp 发表于 2024-10-11 14:09
Modebus/CRC16校验:
数据 12 34 56 78,CRC16校验为 107B
哦哦感谢 zhp 发表于 2024-10-11 14:09
Modebus/CRC16校验:
数据 12 34 56 78,CRC16校验为 107B
涨知识了,一般都是CRC的值比较判断
页:
[1]