联合体原来是这么用的!
2023-08-26 11:16:56 来源:面包芯语
(相关资料图)
不管是线程间,还是设备间通信,都需制定一个通信协议,规定数据的格式、内容等。
线程间通信因为在芯片内部传输,基本可以排除数据干扰导致的异常,所以通常会设计的比较简单。但是,设备之间的通信(不管是无线还是有线)就会复杂一些,一般都包含帧头、校验位之类的。因此,之前给大家介绍了一个基本的串口协议框架《如何写一个健壮且高效的串口接收程序?》。
因为当时刚毕业没多久,所以,虽然从大的方向介绍了基本协议内容,但在细节处理上还不够好,比如可维护性、可读性等方面。
后来,我在学习开源的飞控源码时,发现里面使用了“联合体+结构体”的方式,大大提高了程序的可维护性和可读性。比如,我们的协议中有这样三条命令:心跳包、获取固件版本号、获取序列号。
一般这样写的,大概率是工作1-2年的,当然也不排除工作好多年的。这看似简单,但可维护性、可读性都非常差。
中级版本:使用结构体的形式声明各种消息内容。
如果其它代码写的比较好,甚至不需要多大改动,即可完成一次扩展。
高级版本:在中级版本的基础上,使用联合体容纳前面的所有消息类型。
当你需要发送消息的时候,可以这样发送:
因为现在大部分IDE都有代码提示功能,所以,当你需要发送数据的时候,可以根据提示选择你需要的消息进行发送,相当方便快捷,也不容易出错。
关键词:
相关阅读
-
联合体原来是这么用的!
不管是线程间,还是设备间通信,都需制定一个通信协议,规定数据的格式 -
别抢盐了!中盐集团最新声明!
今日,微信公众号“中国盐业集团有限公司”发布“中盐集团关于保障... -
苏盐井神08月23日主力大幅流入
苏盐井神08月23日主力(dde大单净额)净流入8851 63万元,涨跌幅为9 96 -
穆里尼奥:紫百合能为留住球员拒绝4500...
穆里尼奥:紫百合能为留住球员拒绝4500万欧转会费,但罗马不能,罗马,紫 -
“与花有约·‘斗’是浪漫”云花文化艺...
云南信息报讯云上融媒记者张艳萍为弘扬中华优秀传统文化、激发斗南浪漫 -
有成长,有未来:小米的科技观
通过这次一系列新品和技术的发布,以及小米科技的战略升级,你会发现: -
GTA5正版线下线上一启动就说gta5已停止...
1、如果能进游戏把垂直同步关闭或开一半试试进不去游戏进显卡控制面板 -
MUSE共创智电架构的量产新车,瑞风RF8亮...
2023成都车展,江淮瑞风携MUSE架构下的首款量产车型瑞风RF8重磅亮相。 -
一油轮在广西北部湾水域失火 致2人遇难
记者23日从广西海事局获悉,8月22日14时30分许,一艘深圳籍油轮 -
“爱你一万屏”活动收官 总辐射人次超...
2023年8月22日,中国传统佳节——七夕节,深圳晚报、易售科技与东方... -
贵阳五中在哪个位置 贵阳五中
1、贵阳五中在城基路上,歪菜馆上面,如果坐小巴花溪车早90路终点站下 -
菏泽中热博雅热力有限公司(关于菏泽中热...
,你们好,今天0471房产来聊聊一篇泽中热博雅热力有限公司,泽中热博雅 -
认真负责!男子周杰伦演唱会现场捧电脑...
今天“【认真负责!男子周杰伦演唱会现场捧电脑工作,是室内设计师... -
字里行间英文经典:小王子(关于字里行间...
,你们好,今天0471房产来聊聊一篇里行间英文经典:小王子,里行间英文 -
林洋能源上半年净利润增长42% 储能业务...
8月25日晚间,林洋能源披露2023年半年报。报告期内,公司实现营业收入 -
联盈(关于联盈的基本详情介绍)
1、1999年04月,公司设立润滑剂事业部,定位于环材润滑产品开发研究。2 -
国产车“四大天王”齐聚:比亚迪、红旗...
国产车“四大天王”齐聚:比亚迪、红旗、吉利、长城共同研发智能汽... -
中国二重万航模锻C919大型航空模锻件研...
近日,中国商飞向国机集团下属企业中国第二重型机械集团有限公司(以下 -
齐心集团:公司将继续做好主业、稳健经...
齐心集团(002301)08月25日在投资者关系平台上答复了投资者关心的问题。 -
美国商家抱怨对华“脱钩”损害各方利益
新华社美国拉斯维加斯8月24日电通讯:美国商家抱怨对华“脱钩”损害...