Protobuf-c在项目中的应用

Protobuf-c 简单说明:
通过最近的使用,发现protobuf-c确实是做通信的一个很好的辅助性序列化协议工具。
Protobuf-c是protobuf的C语言版。其主要功能是在发送机和接送机中存有相同的,用来序列化和反序列数据的protobuf文件。
其通信过程大致可以这样描述:发送端(数据采集端)按需要的格式将协议封装好一定的易读的格式,经过protobuf文件将该协议转化为一段二进制数据流。接收端(数据分析端)收到一段二进制数据流,再使用protobuf文件反序列化得到相应格式的协议,按格式解析协议得到数据。


其优点在于:1、协议的定义格式采用类似结构体定义的方式,结构体的每个成员独立不受其他成员长度、类型影响,接收端只需要反序列化得到结构体数据后,提取所需要的某个成员的信息即可。这样可以使得通信双方不需要一个一个按字节来解析(比如:第几个字节是什么关键字,第几个字节是有效数据等)。
2、结构体成员可以随意增加,比如原来采集的需要温度,现在我们要加入湿度,在接收端后发送端,双方重新约定分别在各自的protobuf文件中,加入湿度的类型即可。这样就使得后面的协议版本可以完全很好的兼容之前的协议版本。


最后对我们DAQ产品中使用的协议流程进行说明一下。
1、 首先DAQ作为Client端,上位机作为Server端。通信协议按格式分为两段,第一段是包头(Header),第二段是包体(Body)。每个通信帧包头都会标明本帧通信的类型总长度,来告诉协议解析端。包头是一个结构
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值