独闷闷网

 找回密码
 立即注册
搜索
查看: 2934|回复: 0
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
发表于 2014-11-30 23:05:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 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就可以了。




乐于分享,勇于质疑!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|独闷闷网 ( 粤ICP备12007667号-2 )

GMT+8, 2024-11-29 18:48 , Processed in 0.157102 second(s), 18 queries .

快速回复 返回顶部 返回列表