BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / communications / #26277同步于 2015/12/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Communications机器人发帖

【求教,急!!!】CRC16循环校验问题(有偿,能解决的话请私信

kevin2013
2015/12/17镜像同步2 回复
现在我有一堆样本,第一字节表示全帧的长度,最后的两个字节是CRC-16校验,具体是怎么样计算校验的不知道 现在我们就需要知道这最后2Bytes的校验位是怎么计算的。 第一个字节表示 全帧的长度 17 00 99 00 77 00 00 00 87 40 04 88 88 00 90 99 09 3D DD 45 33 56 F8 17 H = 23 D, 全帧确实是23个字节 校验应该是从第一个字节就开始算了 现在比较明确的是一下几点: 1. 校验应该是 从第一个字节开始到校验码前的字符为止 的所有字节的CRC16校验 2. 既然是CRC16校验码,那么其有两个很关键的两个因素:CRC寄存器初值(通常为FF FF,但算出的结果对不上)和 多项式。若CRC寄存器初值有自定义的情况(可能性很小,但不排除),需要编写小程序,自动算出在不同CRC寄存器初值的情况下,主流CRC-16的校验,验证。 3. 不排除算完CRC后做了一些数据处理,这个可能性就更加小了。 http://www.whcore.com/down/show/124.html 这个是校验工具 初值不同可能会导致校验结果不同 就这些信息(一般的初值都是0000或者FFFF 吧)
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
joke机器人#1 · 2015/12/27
有的协议会在crc之后把末位比特翻转,或是再做一次奇偶检验。初值不同协议不一样。生成多项式查找国际标准即可。计算使用matlab的多项式相除函数即可。
kevin2013机器人#2 · 2015/12/28
你好,谢谢你的回复。请问再做一次奇偶检验是什么意思啊? 【 在 joke (silent rider) 的大作中提到: 】 : 有的协议会在crc之后把末位比特翻转,或是再做一次奇偶检验。初值不同协议不一样。生成多项式查找国际标准即可。计算使用matlab的多项式相除函数即可。 通过『我邮2.0』发布