Использование «повторных» внутри «повторных» данных в Nanopb - PullRequest
0 голосов
/ 05 июля 2019

Как правильно кодировать данные с помощью 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 на основе примера server.c из источника NanoPB. Таким образом, у меня есть только одно повторное поле, и все работает отлично. Однако таким образом я должен повторить поле «devid» для каждого sensorid и каждого «сэмпла», вместо того, чтобы дать его только один раз, а затем перебрать массив SensorData сообщений. Однако я изо всех сил пытаюсь закодировать это с NanoPB, часть декодирования находится на Python. Может кто-нибудь дать мне пример, как правильно кодировать данные в этом случае?

...