在Nanopb中的“重复”数据中使用“重复”

时间:2019-07-05 09:55:34

标签: c protocol-buffers nanopb

当具有多个嵌套的“重复”字段时,如何使用NanoPB正确编码数据?

这是我的模式:

message Report {

  message SensorData {
     required uint32 sensorid = 1;
     required uint32 sample = 2;
  }

  message DeviceData {
    required uint32 devid = 1;
    repeated SensorData sensor_data = 2;
  }

  required uint32 reportnum = 1;
  repeated DeviceData dev_data = 2;

}

我已经制作了一个工作版本,其中基于SensorData字段嵌入在DeviceData消息中,该消息基于NanoPB来源的server.c示例。这样,我只有一个重复的字段,并且一切正常。但是,以这种方式,我必须为每个sensorid和每个'sample'重复'devid'字段,而不是只给出一次,然后循环遍历SensorData消息数组。但是我正在努力用NanoPB对此进行编码,解码部分是在Python中。有人可以给我一个例子,说明在这种情况下如何正确编码数据吗?

1 个答案:

答案 0 :(得分:0)

对我来说,最简单的方法是使用nanopb options file静态定义数组的大小。之后,您可以像访问数组一样访问每个元素。

report.dev_data[i].devid[j] = 1234;
report.dev_data[i].sensor_data[j] = 9876;