问题标签 [nanopb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
142 浏览

timestamp - nanopb 中的时间戳

nanopb 中是否支持 google.protobuf.Timestamp 数据类型和编码解码功能?或者我们应该编码/解码为 int64 或者可能是 uint32(如果可能的话,直到 2106 年)?目标设备是 32 位 MCU,服务器端是基于 java 的实现。

0 投票
1 回答
129 浏览

c++ - 我需要用 Protobuf 存储长度信息吗?

我将 Protobufs 存储在一些非易失性内存中以保存配置信息。我正在使用 NanoPB 对它们进行解码/编码。由于我不知道编码后的 Protobuf 有多大,所以当我从内存中获取序列化的 proto 并进行解码时,我只获取编码后的 protobuf 可能的最大字节数,即使它占用的字节数更少。

我的问题是:我是否必须存储一些数据来描述 protobuf 的字节数,以便我可以正确解码?

或者,如果我对序列化缓冲区进行 0 填充或使用其他方法,是否有办法让我自己确定。就目前而言,NanoPB 无法解码我给它的字节,很可能是因为在编码的原型结束后有一些垃圾数据,我无法判断序列化数据的长度。

0 投票
1 回答
132 浏览

protocol-buffers - 在应用程序中一起使用 nanopb 和 protobuf 进行序列化/反序列化

是否可以有两个应用程序 App-1 和 App-2,一个在 OS-1 上运行,另一个在 OS-2 上运行。App-1 使用 nanopb 序列化/反序列化数据并与 App-2 通信。App-2 使用 google protobuf 序列化/反序列化数据并与 App-1 通信。

0 投票
3 回答
156 浏览

openssl - 通过 SSL 使用 nanopb 的客户端服务器

我正在尝试使用 protobuf 有效负载为客户端-服务器通信的传输层安全性实现 SSL。我查看了 nanopb 的 network_server 示例以及 openssl / wolfssl C 示例客户端(例如https://aticleworld.com/ssl-server-client-using-openssl-in-c/https://www.wolfssl.com/文档/快速入门/ )。然而,SSL 库提供了 SSL_set_fd_ctx、SSL_connect、SSL_read、SSL_write 等函数,用于套接字客户端代码。如何将 SSL library 与 nanopb network_server 示例集成,该示例使用 pb_encode_delimited 和 pb_decode_delimited 等功能进行发送和接收?任何帮助表示赞赏。

0 投票
1 回答
139 浏览

c - Nanopb: Submessage decoding results in incorrect data

I have various sensor types running, creating periodic events and publishing the data online. There's an overall event structure containing information about the sensor and a submessage containing data depending on what type of sensor it is. The event structure looks like this:

And the specific Sensor1Event for sensor nr 1 structure:

I created an encode pb_callback_t callback function that aims to encode the submessage.

Here's my approach:

... ...

The encode_sensor_data function:

Once the data gets sent and decoded at the receiver, the submessage data is garbage. The encoding of the type and address is always correct however. I'm completely lost as to what the cause might be. Any help or advise would be much appreciated!

0 投票
0 回答
231 浏览

decode - NanoPB 帮助!编码嵌套的重复项,并且不确定我是否正确定义了架构

我正在定义电池组的故障。包由一个或多个模块组成。模块由 6 个单元组成。

我已经能够得到包信息减去重复的模块。我相信我重复的模块现在正在编码,但出现错误: Decoding failed: parent stream too short

目前我的原型看起来像这样

产生这些结构定义

我制作了一个 typedef 结构来保存一组模块

这些是构建模块数组的一些辅助函数,modulelist_add_module用于解码和module_array_maker编码

这是我根据我能找到的示例进行编码/解码的内容。

编码:

编码重复模块字段的回调

解码:

模块的解码回调

0 投票
1 回答
74 浏览

nanopb - nanopb 有 python 支持吗?

Google protobufs 支持多种语言,包括 C/C++、python、ruby、Go 等语言。

nanopb 是否支持多语言,还是主要针对来自 的使用C

0 投票
2 回答
271 浏览

ios - 如何安装更新版本的 nanopb 和 Firebase

我正在尝试将 Firebase 版本更新为 8.4.0 并遇到以下错误。为了更新,我在我的 pod 文件中将 Firebase/Core、Firebase/Crashlytics、Firebase/Performance 的版本指定为 8.4.0。现在,在运行 pod install 时,出现以下错误。

我尝试了在线提供的解决方案 - rm -rf Podfile.lock,但没有运气。任何想法,如何也更新 nanopb。或者可能是其他一些可能的解决方案。

0 投票
1 回答
177 浏览

c - 使用 nanopb 编码/解码可选字符串字段

我在理解如何使用 nanopb 正确编码/解码 protobuf 消息中的字符串方面有点挣扎。编码/解码的消息如下所示:

该消息有更多字段,但它们都是相同的类型(或者optional stringoptional int)。

编译后,在.pb.h文件中,我有

我想要一个功能来解码整个消息,就像这样:

但是,使用这种方法我对整数进行编码没有问题,但它不适用于编码字符串(它不会抱怨,只是不会编码任何东西)。我想这是因为我应该在结构中使用某种函数指针pb_callback_t进行编码/解码,以及在args字段中包含字符串值。

我真的找不到一个很好的例子来做我想做的事,虽然官方文档对我来说有点,但我不能真正从中清楚地了解一些东西。因此,任何指向正确方向的帮助将不胜感激。

0 投票
1 回答
51 浏览

size - 我如何提前知道 nanopb 中的缓冲区大小是否足够?

根据示例,我正在尝试使用 nanopb: https ://github.com/nanopb/nanopb/blob/master/examples/simple/simple.c

缓冲区大小初始化为 128:

uint8_t buffer[128];

我的问题是我怎么知道(提前)这128-length buffer足以传递我的信息?如何在初始(或编码)之前确定适当的(足够但不会因为过大而浪费太多)缓冲区大小?

看起来像一个菜鸟问题:),但感谢您的快速建议。