1

当有多个嵌套的“重复”字段时,如何使用 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每个“样本”重复“分隔”字段,而不是只给它一次,然后循环遍历一组SensorData消息。但是我正在努力用 NanoPB 进行编码,解码部分是在 Python 中。有人可以给我一个例子,在这种情况下如何正确编码数据?

4

1 回答 1

0

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

report.dev_data[i].devid[j] = 1234;
report.dev_data[i].sensor_data[j] = 9876;
于 2020-02-16T20:53:08.313 回答