问题标签 [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 回答
1457 浏览

c - 使用协议缓冲区定义 MAC 地址

我正在尝试使用 C 中的协议缓冲区定义一个八字节的 MAC 地址数据元素。我尝试过:

但这会创建一个具有大小字段和八字节地址字段的结构。我想只是和八字节的地址字段。

我拒绝使用 fixed64 元素,因为 MAC 地址是一个字节序列。对不起,如果这是一个简单的问题,因为我对协议缓冲区相当陌生。

0 投票
2 回答
1388 浏览

android - Protobuf 可以与 NanoPB 通信吗

我的任务是通过蓝牙从安卓设备连接到运行 nanoPB 的设备。

我知道 NonoPB 以不同的方式处理诸如枚举之类的某些事情......如果通过了,NanoPB 可以处理枚举吗?否则,任何 Protobuf 模式(如“Lite”)都将允许它们进行通信。

0 投票
1 回答
2886 浏览

c - Nanopb 从 pb_ostream_t 获取字符串

我正在使用nanopb,所以我可以使用一些小的交叉编译代码来实现 protobuf。我有它工作的基础,但希望将编码的 protobuf 消息作为字符串通过 UDP(在另一个系统上)发送。通常使用完整的 protobuf 库,您可以执行类似message.serializeToString(). Nanopb 似乎没有,但肯定是很常见的事情。nanopb 给出的示例使用他们的 pb_ostream_t 结构和pb_ostream_from_buffer() 有什么想法吗?

0 投票
2 回答
5708 浏览

c - Nanopb 没有回调

我正在使用Nanopb尝试从基于 VxWorks 的 National Instruments Compact RIO (9025) 发送 protobuf 消息。我的交叉编译效果很好,我什至可以发送包含不需要额外编码的数据类型的完整消息。让我感动的是回调。我的代码是从 LabVIEW 交叉编译和调用的,并且 Nanopb 的基于回调的结构似乎在目标机器上中断(错误输出、崩溃、目标重新启动等)。如果我在没有任何回调的情况下运行它,它会很好用。

这是有问题的代码:

这是原始文件:

我也尝试将回调设为外部“C”,但它没有改变任何东西。我还尝试添加一个具有最大长度的 nanopb 选项文件,但要么没有正确理解它,要么它也不起作用。

如果我从原始消息中删除字符串并删除回调,效果很好。似乎回调结构在这个 LabVIEW -> C 库环境中不起作用。有没有另一种方法可以在没有回调结构的情况下对消息进行编码?或者以某种方式将回调嵌入到 getPacket() 函数中?

更新代码:

更新的原型文件:

0 投票
1 回答
514 浏览

c - 二进制包中的转义字符 (0x1b/27) 不会通过 Wi-Fi 发送,并且在传输过程中会损坏消息

我正在嵌入式系统(STM32F4)上开发,并尝试将一些数据发送到 PC 端的简单 Windows Forms 客户端程序。当我使用基于字符的字符串格式时,一切正常,但是当我更改为二进制包以提高性能时,我遇到了转义字符的问题。

我正在使用 nanopb 实现 Google 协议缓冲区进行传输,我观察到在 5% 的包中,我在客户端程序中收到异常,告诉我我的包已损坏。

我在 WireShark 中调试,发现在这个损坏的包中,大小比原始包大小小 2-4 个字节。经过进一步检查,我发现损坏的包始终包含二进制值 27,而其他包从未包含此值。我搜索它,发现这个值代表一个转义字符,这可能会导致问题。

我正在使用的 Wi-Fi 模块的技术文档(Gainspan GSM2100)提到命令前面有一个转义字符,所以我认为我需要在我的包中去掉这个值。

我找不到解决问题的方法,因此如果有经验丰富的人能引导我找到解决此问题的正确方法,我将不胜感激。

0 投票
1 回答
4911 浏览

nanopb - Nanopb 正确编码和解码子消息中的重复构造字段

在 Nanopb 子消息中编码/解码重复构造字段的正确方法是什么?生成的输出显示解码操作未检测到任何重复的构造字段。同样有趣的是,编码回调被调用了两次,而且也是有问题的。我错过了什么?

如果作为实验,将此示例修改为编码和解码不是从 TopMessage 开始,而是从 SubMessage1 开始,则解码成功。此外,在这种情况下,编码回调仅按预期调用一次。

以下是原型定义;有问题的字段是 SubMessage1 下的 subMessage11。

使用 proto 定义的 C++ 代码代码是:

产生的输出是:

0 投票
1 回答
122 浏览

php - Nanopb - 使用 PHP 解码

我有一条用 Google 协议缓冲区的 Nanopb 实现编码的消息。

我必须对其进行解码以在 php 页面上显示解码结果。

是否有可能用 PHP 做到这一点?如果没有,为了在 php 中获得可利用的结果,最好的解决方案是什么?

谢谢你的帮助。

0 投票
1 回答
270 浏览

ios - Geofire (iOS) clang: error: linker command failed with exit code 1 (use -v to see invocation)

I'm using GeoFire (2.0.0) in the Swift project, after today's update pods when the project is going to Xcode shows clang: error: linker command failed with exit code 1 (use -v to see invocation) in the Geofire framework. Tell me, how can I fix this?

I install Geofire via Cocaopods as follows pod 'GeoFire', :git => 'https://github.com/firebase/geofire-objc.git'

Update:

Update 1: When I install the pods I in the terminal can see that this component is used

0 投票
2 回答
1485 浏览

xcode - Apple Mach-O 链接器(ld)错误(Xcode Swift) nanopb

当我为 TestFlight 上传到 iTunesConnect 时,我注意到一个我从未安装到我的应用程序中的框架。“nanopb”就是它的名字。我以前也从未听说过。我去从我的应用程序中删除文件,然后当我再次运行它时,我开始收到这些错误。

通过一些研究,我注意到它可能是一个谷歌框架?我已经使用 Firebase 和 Admob 完成了多个应用程序,但从未见过这种情况。

我已经删除了 DerivedData 和 xcuserdata,但没有运气。在我的项目中也没有我会使用它的地方,正如我所说我从未听说过它。我搜索了我的项目文件夹以查看是否有任何文件遗留在其中,但事实并非如此。由于我看到了链接器命令错误,我还检查了不是重复的文件。如果有人知道这是什么或如何摆脱它,非常感谢。令人沮丧!

0 投票
1 回答
5970 浏览

c - 在 c 中使用 nanopb 的消息中使用重复的字段规则

我很难意识到如何使用重复字段规则。例如,这是我的 .proto:

现在,我正在初始化一个新的 Test 对象:

最后,我想分配一些值。例如:

我的问题是如何分配它们?是不是像

然后,我如何读回它们?