dcexpert 发表于 2020-6-13 09:01

mini Protobuf 库

<p>纯Python中的Mini Protobuf库.<br />
<a href="https://github.com/dogtopus/minipb/workflows/Python%20package/badge.svg"><img alt="图片" src="https://github.com/dogtopus/minipb/workflows/Python%20package/badge.svg" /></a><br />
<br />
<strong>特征</strong></p>

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

<p>&nbsp;</p>

<pre>
<code class="language-python">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!',)</code></pre>

<p>&nbsp;</p>

<p><strong>注意</strong>:<br />
尽管与官方Protobuf相比,<strong>minipb</strong>模块更轻巧,但通过加载后,模块本身仍使用约15KB的RAM。因此,建议在MicroPython实例上使用MiniPB脚本时,至少要有24KB的可用内存。对于更复杂的程序逻辑,建议具有至少48KB可用内存的实例。在具有大量RAM的系统(例如Pyboards和Unix构建)上,安装包括复制<strong>minipb.py</strong>到文件系统并用<strong>logging</strong>从<a href="https://github.com/micropython/micropython-lib">micropython-lib</a>安装模块。对于RAM受限的目标,有两个选项:交叉编译和冻结字节码。后者提供了最大的节省。有关更多说明,请参见<a href="http://docs.micropython.org/en/latest/reference/packages.html">官方文档</a>。</p>

<p>&nbsp;</p>

<p>**** Hidden Message *****</p>

toothache 发表于 2020-6-15 09:31

真想把楼主隐藏的内容,贴在回帖里!哈哈哈,还是算了。我独乐乐吧

dcexpert 发表于 2020-6-15 10:31

toothache 发表于 2020-6-15 09:31
真想把楼主隐藏的内容,贴在回帖里!哈哈哈,还是算了。我独乐乐吧

<p>隐藏不是目的,就是希望大家一起多讨论</p>

forestdai 发表于 2024-12-24 13:58

<p>正在找这个</p>
页: [1]
查看完整版本: mini Protobuf 库