0

我正在使用arduino对按摩进行编码,我已经尝试过编码和解码所需的成功,但是对于重复,在我编码后,缓冲区的大小为0,所以我不能将我的缓冲区发送到其他arduino

这是我的代码

文件.ino

  {

   for(int i=0;i<7;i++)
    message.header[i]=i+1;

//this is my variabel, i declare in .proto = repeated int32 header = 4  [(nanopb).max_count = 10, (nanopb).fixed_length = true];

  stream = pb_ostream_from_buffer(buffer, sizeof(buffer));

  bool status = pb_encode(&stream, Message_fields, &message);

 Serial.println(stream.bytes_written); 

//when i print this after encode, the data is loss, but when the field type is required, it will show some data bytes

}
4

1 回答 1

0

您的标头变量是 10 个条目的固定长度数组。那应该没问题。如果它不是一个固定长度的,那么将有一个单独header_count的字段,您必须将其设置为实际的条目数。您可以查看生成的内部.pb.h以仔细检查是否没有header_count字段。

您的代码未显示您分配的缓冲区的长度。是不是太短了?尽管该消息应该只占用大约 14 个字节。

您还可以检查是否status为真,即编码是否成功。如果不是,您可以从 中找到更多信息stream.errmsg

于 2019-08-18T06:21:34.760 回答