在 arduino 与外界通讯参数多了解析起来就很麻烦。平时工作中网络通讯都用的 protobuf 来实现。就想能不能在 arduino 中也使用 protobuf,使用官方的C++库是不可能的了,编译出来的体积足以撑爆芯片的所有可用的空间。好在发现了一个第三方的 protobuf 实现库 nanopb,它可以以极低的资源占用来解析 protobuf,使用起来也不算麻烦。

编写 proto 协议描述文件

my.proto
message test {
    optional string name = 1;
    optional int32 id = 2;
}

编译 proto 文件

protoc -omy.pb my.proto

生成 nanopb 专用的输出格式

nanopb_generator my.pb

生成出 my.pb.h my.pb.c

与 arduino 代码对接

在 nanopb 里有这么些代码文件

这是 nanopb 的基础文件

  • pb.h
  • pb_common.h
  • pb_common.c

编码 protobuf 要用到的

  • pb_encode.h
  • pb_encode.c

解码 protobuf 要用到的

  • pb_decode.h
  • pb_decode.c

基础文件一定是要加的,编码解码的代码文件根据需要加入,生成的 my.pb.h my.pb.c 也需要加入进来。

标签: arduino

添加新评论