首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与机器串行通信的计算算法和

与机器串行通信的计算算法和
EN

Stack Overflow用户
提问于 2010-01-06 16:23:24
回答 2查看 1.1K关注 0票数 0

我正在通过串行方式与一台机器通信。协议通信规范的一部分规定,控制和是“从<'PS'> (包括)到<‘CS’>的字节的算术和”。

分组消息的结构如下:

<‘PS’><‘数据’><‘CS’>,其中:

<'PS'> -数据包大小

长度:1

数值: 0x02至0x63

最大数据包长度为99字节

<' Data '> -数据

长度:1.90字节

价值: 0x00 - 0xFF

数据部分的长度取决于命令。

<'CS'> -检查和

长度-1字节

价值: 0x00 - 0xFF

示例:

ACK数据包: 0x02 0x01 0x03 ,其中0x03是校验和。

,那么如何在C++?中计算这些字节的校验和

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-06 16:28:37

看起来校验和是一个简单的和,模256。

代码语言:javascript
复制
int sum = 0;
for (int j = 0;  j < number_of_bytes_in_message;  ++j)
   sum += message [j];

sum %= 256;  // or, if you prefer  sum &= 255;
票数 1
EN

Stack Overflow用户

发布于 2010-01-06 16:29:44

使用无符号8位类型(uint8_t或无符号字符)作为累加器,在生成数据包时将每个字节添加到其中,然后将其作为校验和字节发送。具体情况取决于您打算如何构造数据包。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2014391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档