首页 > 编程知识 正文

把手和手把的区别(把手和手把一样吗)

时间:2023-05-04 02:59:41 阅读:88514 作者:1637

前言

之前共享了两个关于Protobuf的注释:

Protobuf :更小、更快、更高效的协议

共享protobuf-c在嵌入式Linux平台上的使用案例

让我们来看看Protobuf在STM32平台上的使用。

nanopb简介

之前的文章中介绍的Protobuf-c相似,但nanopb也是轻量级且支持c语言的Protobuf。

nanopb的下载地址:

359 JPA.Kapsi.Fi /北约PB /下载/

在此使用nanopb-0.3.8-windows-x86。 目录:

nanopb在STM32上的使用

首先,准备可以串行打印的STM32项目。 示例:

在项目目录下创建新的Protobuf文件夹,在nanopb-0.3.8-windows-x86目录下创建以下7个文件

英格兰乙组联赛

公众号

PB _通用

PB _解码

PB _解码

Pb编码格式

PB _编码

复制到Protobuf文件夹:

在第一篇关于protobuf的文章中,protobuf的中心是. proto文件,您可以定制. proto以创建协议数据,然后使用protoc工具编译并生成c代码。 有两个文件:头文件和源文件。

其中,protoc工具位于我们下载的nanopb-0.3.8-windows-x86的生成器- BBD LT文件夹中。

必须将包含protoc.exe的路径添加到环境变量中,才能在命令行的任何路径中使用protoc工具。 这条路径如下。

c : 纳米PB-0.3.8-windows-x86 生成器- BBD lt

将此路径添加到环境变量:

2d42f4f9098a91e4a411a0c20?from=pc">

下面,我们在Protobuf文件夹中创建一个student.proto文件:

这个文件的内容我们编写为:

syntax = "proto2"; message Student { required uint32 num      = 1; required uint32 py_score = 2; required uint32 c_score  = 3; }

然后win+r组合键进入运行窗口,输入cmd进入命令行;在命令行cd进入student.proto所在目录;输入如下命令编译student.proto:

protoc --nanopb_out=. student.proto

生成student.pb.c与student.pb.h文件:

把Protobuf文件夹里的文件添加到mdk工程并增加头文件搜索路径:

编译,无误:

编写测试代码:

// 微信公众号:嵌入式大杂烩 void protobuf_test(void) {  uint8_t buffer[64] = {0};  Student pack_stu = {0};  pb_ostream_t o_stream = {0};  Student unpack_stu = {0};  pb_istream_t i_stream = {0};  // 组包  pack_stu.num  = 88;  pack_stu.py_score = 90;  pack_stu.c_score = 99;  o_stream = pb_ostream_from_buffer(buffer, sizeof(buffer));  pb_encode(&o_stream, Student_fields, &pack_stu);  // 解包  i_stream = pb_istream_from_buffer(buffer, sizeof(buffer));  pb_decode(&i_stream, Student_fields, &unpack_stu);  printf("unpack_stu.num = %dn", unpack_stu.num);  printf("unpack_stu.py_score = %dn", unpack_stu.py_score);  printf("unpack_stu.c_score = %dn", unpack_stu.c_score); }

demo很简单,组包就是构造一个协议数据结构体,调用pack组包接口往buffer中扔数据;解包正好是反过来,从buffer中拿数据放到结构体里。其中,组包相关的函数在pb_encode.c中,解包相关的函数在pb_decode.c中,感兴趣的小伙伴可自行阅读。

编译、下载验证:

以上就是本次关于nanopb在STM32上的使用的笔记介绍,如有错误欢迎指出,谢谢!

如果文章对你有帮助,麻烦帮忙转发,谢谢大家!


1024G 嵌入式资源大放送!包括但不限于C/C++、单片机、Linux等。私信回复1024,即可免费获取!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。