当具有多个嵌套的“重复”字段时,如何使用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中。有人可以给我一个例子,说明在这种情况下如何正确编码数据吗?
答案 0 :(得分:0)
对我来说,最简单的方法是使用nanopb options file静态定义数组的大小。之后,您可以像访问数组一样访问每个元素。
report.dev_data[i].devid[j] = 1234;
report.dev_data[i].sensor_data[j] = 9876;