【问题标题】:Using 'repeated' inside 'repeated' data in Nanopb在 Nanopb 的“重复”数据中使用“重复”
【发布时间】:2019-11-15 22:49:16
【问题描述】:

当有多个嵌套的“重复”字段时,如何使用 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 中。谁能给我一个例子,在这种情况下如何正确编码数据?

【问题讨论】:

    标签: c protocol-buffers nanopb


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 2019-09-30
      相关资源
      最近更新 更多