protobuf(.proto)的使用"/>
protobuf(.proto)的使用
protobuf 是Google提供一个具有高效的协议数据交换格式工具库,已被广泛应用。
通俗点说,就是将要发送的消息,通过protobuf格式发出去,自动进行封装。另一方对proto格式解析,直接得到原数据。
注:适用linux
使用方式
通过编写一个要发送的消息格式文件(.proto文件),然后通过自动化生成工具,生成对应的处理类及其头文件。
编写*.proto文件
按如下格式填写你的消息。具体规范,
package message;message linear_acceleration_covariance {required double cov = 1;
}
message angular_velocity_covariance {required double cov = 1;
}
message orientation_covariance {required double cov = 1;
}/* IMU数据 */
message ImuData {required uint64 sys_time_us = 1; //系统时间 (单位 us)required uint64 measurement_time = 2; //测量时间点optional int32 status = 3; //传感器状态,保留字段optional double measurement_span = 4; //t1-t0optional double temperature = 5; //IMU芯片温度 (单位 ℃)required double linear_acceleration_x = 6; //x轴向加速度 (单位 m/s^2)required double linear_acceleration_y = 7; //y轴向加速度 (单位 m/s^2)required double linear_acceleration_z = 8; //z轴向加速度 (单位 m/s^2)required double angular_velocity_x = 9; //x轴向加速度 (单位 rad/s)required double angular_velocity_y = 10; //y轴向加速度 (单位 rad/s)required double angular_velocity_z = 11; //z轴向加速度 (单位 rad/s)optional bool is_calibrated = 12;//IMU是否已经标定,需要从配置文件中读取optional bool accx_isvalid = 13;//三轴IMU会有该标志位(asilB)optional bool accy_isvalid = 14;//三轴IMU会有该标志位(asilB)optional bool gyroz_isvalid = 15;//三轴IMU会有该标志位(asilB)}
使用自动化命令生成
执行自动生成需要事先安装 protoc,如x11proto-gl-dev。
- $input 是proto文件所在目录
- $protofile 是文件列表
- $output 是.h 文件的输出文件目录
${protoc程序路径} -I=$input $protofile --cpp_out=$output
注:安装完成后,which protoc
可以快捷查看程序路径
更多推荐
protobuf(.proto)的使用
发布评论