- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
根据示例,我正在尝试使用 nanopb: https://github.com/nanopb/nanopb/blob/master/examples/simple/simple.c
缓冲区大小初始化为128:
uint8_t 缓冲区[128];
我的问题是我怎么知道(提前)这个128-length buffer
足以传输我的消息?如何在初始化(或编码)之前决定一个合适的(足够但不会因为过大而浪费太多)缓冲区大小?
看起来像一个菜鸟问题:),但感谢您的快速建议。
最佳答案
如果可能,nanopb 在生成的 .pb.h
文件中添加一个定义,该文件具有消息的最大编码大小。在文件 examples/simple/simple.pb.h
中,您会发现:
/* Maximum encoded size of messages (where known) */
#define SimpleMessage_size 11
并且可以指定uint8_t buffer[SimpleMessage_size];
。
仅当所有重复字段和字符串字段都指定了 (nanopb).max_count
和 (nanopb).max_size
选项时,此定义才可用。
出于许多实际目的,您可以选择您估计足够大的缓冲区大小,并处理错误情况。也可以使用 pb_get_encoded_size()
来计算编码大小并动态分配存储空间,但通常这在嵌入式应用程序中不是一个很好的解决方案。当总系统内存大小有限时,通常最好有一个可用于测试的恒定大小的缓冲区,而不是让可用的动态内存量在运行时变化。
关于size - 我如何提前知道 nanopb 中的缓冲区大小是否足够?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69343376/
对于我的问题,我找不到更好的措辞。 在我的应用程序中的某个时刻,我设置了一些非常密集的动画。问题是,在高端设备上,动画运行流畅且赏心悦目。另一方面,我测试过的一台低端设备在制作动画时表现非常糟糕。 试
我正在修补 OTP 模块 ( yubico_pam ),并尝试访问管理员选择的控制标志(例如必需,足够, ETC)。 有什么想法吗?这是否可行(无需解析文件)? 最佳答案 无法在 API 中查询此信息
我有一些为 Linux 编写的 C 代码,依赖于套接字和 arpa/inet.h 以及 libusb.h,我想在 MinGW 下为 Windows 编译它。 (请注意,当前项目只有一个非常简单的 Ma
我是一名优秀的程序员,十分优秀!