88
4087
1万
资深工程师
一般来讲,如果上位机需要与下位机通信,最底层物理层比较常见的就是串口通信,还有一种比较方便的物理通路就是以太网。
为了通信,制定一个通信协议是很重要的,现有的需求是通过tcp上位机配置下位机的上网方式串口波特率等详细信息,简单制定了一下协议如下:
Center.jpg (200.36 KB ) 下载附件 2019-7-6 16:53 上传
Center.jpg (200.36 KB )
下载附件
2019-7-6 16:53 上传
使用特权
总长度已经标记出来了,是46byte,为了数据处理方便,定义一个结构体来存储数据,最初定义的结构体如下
Center.jpg (152.16 KB ) 下载附件 2019-7-6 16:53 上传
Center.jpg (152.16 KB )
646195d2061adc4200.png (29.74 KB )
2019-7-6 16:54 上传
根据以上规则,为了不传输无用的字节,得出结论:
1.结构体总长度必须是平台CPU位数的整数倍!
2.除了char类型(8位1个字节)不用考虑位对齐,其它类型必须位对齐!
Center.jpg (44.01 KB ) 下载附件 2019-7-6 16:54 上传
Center.jpg (44.01 KB )
综上以上规律,修改如下:
1.原来的总长度是46,由于不是4的整数倍,增加2位变为整数倍,原先起始位和终止位长度是1位,改为2位。
2.位对齐的原则,修改结构体成员的位置
修改后的结构体如下:
Center.jpg (120.53 KB ) 下载附件 2019-7-6 16:54 上传
Center.jpg (120.53 KB )
经测试数据已经连续,并且无无用字符出现
Center.jpg (154.69 KB ) 下载附件 2019-7-6 16:55 上传
Center.jpg (154.69 KB )
2019-7-6 16:55 上传
672685d2061f4bed03.png (197.98 KB )
发表回复 本版积分规则 回帖后跳转到最后一页
发帖类勋章
1
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注21ic项目外包
扫码关注21ic视频号
扫码关注21ic抖音号
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才 | 论坛帮助
京公网安备 11010802024343号