mini Protobuf 库

MicroPython相关代码、库、工具
回复
头像
shaoziyang
帖子: 1267
注册时间: 2019年 10月 21日 13:48

mini Protobuf 库

#1

帖子 shaoziyang » 2020年 6月 13日 08:53

纯Python中的Mini Protobuf库.
图片

特征
  • 纯Python。
  • 功能丰富但轻巧。甚至可以在MicroPython上运行。
  • 支持类似struct的格式字符串和类似ctypes的结构表示形式(即Structure._field_)作为架构。
  • 支持通过RawWireAPI 对给定的序列化消息进行无模式检查。
 

代码: 全选

import minipb


# Create the Wire object with schema
hello_world_msg = minipb.Wire([
    ('msg', 'U') # 'U' means UTF-8 string.
])

# Encode a message
encoded_msg = hello_world_msg.encode({
    'msg': 'Hello world!'
})
# encoded_message == b'\n\x0cHello world!'

# Decode a message
decoded_msg = hello_world_msg.decode(encoded_msg)
# decoded_msg == {'msg': 'Hello world!'}


# Alternatively, use the format string
hello_world_msg = minipb.Wire('U')

# Encode a message
encoded_msg = hello_world_msg.encode('Hello world!')
# encoded_message == b'\n\x0cHello world!'

# Decode a message
decoded_msg = hello_world_msg.decode(encoded_msg)
# decoded_msg == ('Hello world!',)
注意
尽管与官方Protobuf相比,minipb模块更轻巧,但通过加载后,模块本身仍使用约15KB的RAM。因此,建议在MicroPython实例上使用MiniPB脚本时,至少要有24KB的可用内存。对于更复杂的程序逻辑,建议具有至少48KB可用内存的实例。在具有大量RAM的系统(例如Pyboards和Unix构建)上,安装包括复制minipb.py到文件系统并loggingmicropython-lib安装模块。对于RAM受限的目标,有两个选项:交叉编译和冻结字节码。后者提供了最大的节省。有关更多说明,请参见官方文档

隐藏内容
你必须登入/注册才可观看隐藏内容
 
 
 
 
 

回复

  • 随机主题
    回复总数
    阅读次数
    最新文章