jianhong_wu 发表于 2014-11-30 23:05:02

鸿哥串口程序的累加校验和字节是怎么计算的?什么工具软件可以计算?已解答。

本帖最后由 jianhong_wu 于 2014-11-30 23:06 编辑

曹健-江苏:
鸿哥, 请教你一个问题。你的第44例中,通过串口发送4组数据,分别是eb 00 55 01 00 02 00 01 44等,现在我想将第一组发送的数据改为发送eb 00 55 01 00 02 00 01 45或者其他的数据,不知道在哪里修改。

鸿哥-深圳:
eb 00 55 01 00 02 00 01 44
上述数据中,最后一个字节44是校验字节累加校验和,它等于前面所有字节的累加和,溢出一个字节部分的自动丢失,所以等于44。

累加校验和的计算方法。累加和的意思是前面所有字节的数据相加,超过一个字节的溢出部分会按照固定的规则自动丢弃,不用我们管。
比如数据:eb 00 55 01 00 02 00 01 44
其中最后一个字节44为前面所有字节的累加和。累加和可以用电脑系统自带的计算器来验证。点击电脑左下角"开始"选项,点击“所有程序”,在下拉菜单中选择“附件”,再选择其中的“计算器”选项,打开了电脑上的这个计算器窗口,点击“查看”下拉的菜单,选“科学型”,然后选最左边的“十六进制”选项,最后选最右边的“字节”选项,然后把前面所有的字节相加,它们的和就是44,没错吧。

同理:如果你想发送:
eb 00 55 01 00 02 00 03 CY(校验字节)
那么经过计算,这个CY是46
也就是你应该发送eb 00 55 01 00 02 00 03 46

校验和在程序上的算法是直接定义一个字节变量a,注意,这个变量必须是一个字节的unsigned char,然后把前面所有字节累加起来赋予这个字节变量a就可以了。




页: [1]
查看完整版本: 鸿哥串口程序的累加校验和字节是怎么计算的?什么工具软件可以计算?已解答。