5187|1

661

帖子

18

TA的资源

纯净的硅(初级)

楼主
 

结构体在协议处理中的妙用zz [复制链接]

本帖最后由 hydralisk 于 2017-8-3 11:40 编辑

结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合。在C语言中,结构体(struct)指的是一种数据结构,是聚合数据类型。

通信协议又称通信规程,是指通信双方对数据传送控制的一种约定。约定中包括对数据格式,同步方式,传送速度,传送步骤,检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。电脑与电脑之间的沟通必须讲述相同的语言,才能互相传输信息。这些规格(语言)的规定都是事先在会议上讲好的,一般我们称之为“协议”(protocol)。
单片机控制系统中会经常用到不同的系统间通讯功能,每种通讯方式都有其自有的数据通讯协议。编写程序的时候,就需要进行各种接收数据的协议解析与发送数据的协议数据打包工作。结构体定义的数据结构,可以像一套模具一样,把接收到的数据按照固定的模式进行解析读取操作,也可以非常方便的按照结构非常方便的填充数据,完成协议数据打包工作。
比如:某单片机系统通过串行通讯端口以115200bps的速率与PC软件进行数据通讯。通讯功能非常简单:PC下发一个字节的数据采集指令,当单片机系统接收到这个字节后,一次上传温度、压力、A相电压、B相电压、C相电压、A相电流、B相电流、C相电流。为了方便单片机系统进行上传数据内容的打包,现根据协议形式,定义一个结构体:


sendData即为要上传的协议数据包。当接收到协议数据包的系统解析数据内容的时候,也可以用类似的方法,只不过,这次是使用结构体指针,指向数据接收缓冲区的首地址!

datPtr结构体指针,可以非常自如的指向任何一个缓冲区中的数据元素,如此操作,对于解析协议数据来说,是非常享受的一个过程。
通过上面简单的代码演示,大家可以非常直接的看到,灵活的使用结构体进行通讯协议数据的打包与解析工作是非常方便的!因为使用结构体,可以随时随地的改变协议数据类型、数据的位置、修改数据种类,而用户的应用程序,只需要修改结构体定义的内容而已,通过本文的描述,希望大家在日后的工作过程中能够灵活的使用这种方法。

最新回复

这不是最基础的C语言知识么  详情 回复 发表于 2017-8-3 13:07
点赞 关注

回复
举报

732

帖子

2

TA的资源

纯净的硅(中级)

沙发
 
这不是最基础的C语言知识么
 
个人签名亚里士缺德
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表