apollo学习基础之一 [.proto协议文件]

您所在的位置:网站首页 apollo数据集 apollo学习基础之一 [.proto协议文件]

apollo学习基础之一 [.proto协议文件]

2023-08-28 04:55| 来源: 网络整理| 查看: 265

apollo学习基础之一 [.proto协议文件]

    在学习apollo过程,有很多基础知识必须先熟悉了解,否则在阅读代码过程中会很吃力。那么其中对.proto文件的理解和使用,特别、非常的重要。你可以在网上百度一下proto,会出来很多good的博客,讲的非常详细。所以,我这版本,就不写那么详细了。只提炼出常用的。

1.定义概念

 proto 也就是protobuf,即protocol buffer( 以下简称protobuf) 是google旗下的一款平台无关,语言无关,可扩展的序列化结构数据格式。很适合用做数据存储和作为不同应用,不用语言之间相互通信的数据交换格式

如果在ubuntu可以上一键安装:

sudo apt-get install protobuf-compiler 2.编写简单proto文件

syntax = "proto2" ; //表明使用protobuf的编译器版本为v2,目前最新的版本为v3 package apollo.common ; //声明了一个包名,用来防止不同的消息类型命名冲突,类似于 namespace /***************************** 导入了一个外部proto文件中的定义, 类似于C++中的 include 只能import当前目录及当前目录的子目录中的proto文件 *****************************/ import "src/help.proto" ; message Info { //name 是字段名,1 是字段的标识号,在消息定义中,每个字段都有唯一的一个数字标识号, //这些标识号是用来在消息的二进制格式中识别各个字段的,一旦开始使用就不能够再改变。 //标识号的范围在:1 ~ 229 - 1,其中[19000-19999]为Protobuf预留,不能使用。 optional string name = 1 ; optional int32 age = 2 ; optional int32 xxx = 3 ; //xxx 代表任意字段名称,为api 举例方便 } message VehicleSignal { enum TurnSignal { TURN_NONE = 0 ; TURN_LEFT = 1 ; TURN_RIGHT = 2 ; }; optional TurnSignal turn_signal = 1 ; // lights enable command optional bool high_beam = 2 ; optional bool low_beam = 3 ; optional bool horn = 4 ; optional bool emergency_light = 5 ; } 3.编译

定义proto文件之后需要用protobuf提供的编译工具将proto文件编译成不同语言的源码,此处使用C++。

protoc -I=./ --cpp_out=./ test.proto 4.简单的测试代码

#include #include #include #include "test.pb.h" using namespace std; int main ( int argc, char * argv[]) { Info * pinfo = new Info (); pinfo-> set_name ( "testname" ); pinfo-> set_age ( 120 ); cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3