你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
shaoziyang 发表于 2015-1-30 13:33 计算结果是补码啊。其实直接把校验也加上,如果结果是0,说明就是正确的。 0x30+0xD0=256=0 ...
shaoziyang 发表于 2015-1-30 09:23 就这么简单啊,代码自己很容易实现吧。没有什么困难的。 先判断第一个字节是不是冒号,然后判断第2/3字 ...
0度虚实 发表于 2015-1-30 09:05 就这么简单吗,能给个算法吗?
shaoziyang 发表于 2015-1-29 22:48 比如用一个字节变量,将前面全部数据累加,然后和最后一个进行比较。 还有,这个不能叫CRC校验的。 ...
äºååèæ°ï½å¤§éª
技术部-徐亚菲 发表于 2015-1-30 11:21 怎么和modbus通信协议似的!
shaoziyang 发表于 2015-1-30 13:14 result 改用 uint8_t就可以了。
0度虚实 发表于 2015-1-30 13:24 :1011000071079907E8071008D206FA0671079907D0 计算结果还是和原先一样,0x30而不是D0. 校验数据项是1011 ...
太感谢,困扰我很久了.关于补码问题,没涉及到负数,结果为什么会是补码
hex记录结构我了解,就是最后这个校验码算来算去都不对,不知道怎么算的,安你的意思,代码是不是这样。
char CRC8(char *pData, uint16_t len)
{
uint16_t i;
uint32_t result = 0;
for(i = 0; i < len; i++)
{
result += pData;
}
result = result % 256;
return (char)result;
}
就这么简单啊,代码自己很容易实现吧。没有什么困难的。
先判断第一个字节是不是冒号,然后判断第2/3字节,代表数据类型;在后面是长度、地址等,然后是数据,最后一个字节是校验。找一个HEX文件的说明,很快就可以搞定了。
还有,这个不能叫CRC校验的。
就这么简单吗,能给个算法吗?
CRC有特定算法的。
äºååèæ°ï½å¤§éª
http://baike.baidu.com/link?url= ... ZCXGaLru14c9oDmRZkq
对,协议和modbus协议数据项都一样的,一个校验码8位,一个16位的,校验方式也不一样
:1011000071079907E8071008D206FA0671079907D0
计算结果还是和原先一样,0x30而不是D0.
校验数据项是1011000071079907E8071008D206FA0671079907
计算结果是补码啊。其实直接把校验也加上,如果结果是0,说明就是正确的。
0x30+0xD0=256=0