首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何添加subMsg到msg重复使用Nanopb?

如何添加subMsg到msg重复使用Nanopb?
EN

Stack Overflow用户
提问于 2019-08-20 20:49:56
回答 1查看 293关注 0票数 2

我只是尝试将一条消息添加到另一条消息中(最多60次)

我的.proto文件如下所示;

代码语言:javascript
复制
syntax = "proto3";

message FeatureFile {    
    string fileName= 2;
    string Id= 3;
    repeated Feature features = 1;
}

message Feature {
    int32 version = 1;
    int32 epochTime = 2;
    int32 noOfObs= 3;
    int32 frequency = 4;
}

我曾尝试创建一个回调函数来添加重复数据,但无法使其工作。

代码语言:javascript
复制
bool encode_string(pb_ostream_t* stream, const pb_field_t* field, void* const* arg)
{
    const char* str = (const char*)(*arg);

    if (!pb_encode_tag_for_field(stream, field))
        return false;

    return pb_encode_string(stream, (uint8_t*)str, strlen(str));
}

bool encode_repeatedMsg(pb_ostream_t* stream, const pb_field_t* field, void* const* arg)
{
    const char* obj = (const char*)(*arg);
    int i;

    for (i = 0; i < 60; i++)
    {
        if (!pb_encode_tag_for_field(stream, field))
            return false;

        if (!pb_encode_submessage(stream, Feature_fields, *arg))
            return false;
    }
    return true;
}

int main()
{
    FeatureFile featurefile = FeatureFile_init_zero;

    Feature feature = Feature_init_zero;

    featurefile.fileName.arg = "092536.csv";
    featurefile.fileName.funcs.encode = &encode_string;
    featurefile.Id.arg = "";
    featurefile.Id.funcs.encode = &encode_string;
    feature.version = 1;
    feature.epochTime = 12566232;
    feature.noOfObs = 260;
    feature.frequency = 200;

    featurefile.features.funcs.encode = &encode_repeatedMsg;

我认为我可以像最后一行代码一样调用重复编码,但我不允许这样做。

回调本身应该将60条相同的消息(特征)添加到特征文件中。

有人能帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2020-02-10 00:19:02

我自己从来没有使用过nanopb中的回调函数。我一直在使用.options文件静态地分配所需的数组大小。对于你的情况,这可能有点多,因为你需要60条消息,但这是你如何做到的:

您创建了一个与.proto文件同名的文件,但为其提供了扩展名.options。您可以将其放置在与.proto文件相同的文件夹中。在该文件中,您提到了重复变量名并为其指定了大小:

代码语言:javascript
复制
# XXXX.options
FeatureFile.features max_count:16

有关nanopb选项的更多信息,请访问here

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57574103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档