我正在做一个项目,其中包括使用NanoPB。目前,在我的原型文件中,我有多个回调字段。现在,我必须使用自己编写的回调函数对这些回调字段进行编码和解码。
我的问题是:
我在原型文件中定义了一条消息,其中包含回调字段和非回调字段。如果我创建一个回调编码函数,是为特定字段还是针对整个消息?
我的原型文件是这样的:
syntax = "proto2";
message stringCallback{
required string name = 1;
required string surname = 2;
required int32 age = 3;
}编码字符串的示例:
bool encode_string(pb_ostream_t *stream, const pb_field_t *field, void * const *arg)
{
char *str = "Hello world!";
if (!pb_encode_tag_for_field(stream, field))
return false;
return pb_encode_string(stream, (uint8_t*)str, strlen(str));
}发布于 2022-08-22 10:32:57
--如果我创建了一个回调编码函数,应该针对特定的字段还是针对整个消息?
任何最适合你目的的东西。
您显示的示例回调并不特别有用。如果您只想从char*获取一个字符串,就可以在字段上设置(nanopb).type = FT_POINTER。
如果您的回调操作对于多个字段是相同的,那么无论如何,重用相同的函数。如果有不同之处,则分别设置函数。
https://stackoverflow.com/questions/73443493
复制相似问题