- 来源: 合宙 LuatOS 官方仓库 air780epm 模块完整代码 - 路径: luatos/air780epm/module/Air780EPM/demo 含官方 demo(含 mqtt/mqtts/socket/uart 等) - 后续: 基于 demo 开发 UART<->MQTT 数据上报功能
pack_DEMO 项目说明
项目概述
本项目演示了LuatOS的pack核心库的使用,pack核心库提供了二进制数据的打包和解包功能,支持多种数据格式和字节序。
功能说明
本demo通过7个实验演示pack核心库的主要功能:
大小端编码演示:使用'<'和'>'格式符进行小端和大端编码
多种数据类型打包:打包short、int、float等多种数据类型
字符串格式演示:'a'格式(带长度前缀)和'z'格式(以null结尾)的字符串打包和解包
An格式演示:An格式(如A2、A5)的打包行为,即打包前n个字符串参数
指定位置解包:从指定位置开始解包数据
复杂数据组合:打包和解包复杂的数据结构,包括整数、字符串和短整数
边界情况测试:空数据打包和解包,以及数值边界测试
演示硬件环境
1、Air780EPM开发板
2、TYPE-C USB数据线一根
- Air780EPM开发板通过 TYPE-C USB 口供电;
- TYPE-C USB 数据线直接插到核心板的 TYPE-C USB 座子,另外一端连接电脑 USB 口;
演示软件环境
1、Luatools下载调试工具 [https://docs.openluat.com/air780epm/common/Luatools/]
2、固件版本LuatOS-SoC_V2016_Air780EPM 版本固件。不同版本区别请见 https://docs.openluat.com/air780epm/luatos/firmware/version/
3、lib 脚本文件:使用 Luatools 烧录时,勾选 添加默认 lib 选项,使用默认 lib 脚本文件;
4、准备好软件环境之后,接下来查看如何烧录项目文件到 Air780EPM开发板中将本篇文章中演示使用的项目文件烧录到相应的核心板中。
相关软件资料
pack 核心库文档:https://docs.openluat.com/osapi/core/pack/
演示核心步骤
1、搭建好硬件环境
2、Luatools烧录内核固件和demo脚本代码
3、烧录成功后,自动开机运行
4、在日志中查看演示结果
本demo包含7个实验,运行后会在日志中输出每一步的结果:
-
实验1:大小端编码
演示如何使用'<'和'>'格式符进行小端和大端编码
``` lua I/user.小端编码: DDCCBBAA 8 I/user.大端编码: AABBCCDD 8 I/user.解包验证 - 小端: 0xAABBCCDD I/user.解包验证 - 大端: 0xAABBCCDD ``` -
实验2:多种数据类型打包
演示如何同时打包short、int、float等多种数据类型
``` lua I/user.混合数据打包: 7B0055F80600C3F54840 20 I/user.解包混合数据: 123 456789 3.140000 ``` -
实验3:字符串格式演示
演示'a'格式(带长度前缀)和'z'格式(以null结尾)的字符串打包和解包
``` lua I/user.'a'格式字符串: 060000004C7561744F53 20 I/user.'a'格式解包: LuatOS I/user.'z'格式字符串: 4C7561744F5300 14 I/user.'z'格式解包: LuatOS ``` -
实验4:An格式演示
演示An格式(如A2、A5)的打包行为,即打包前n个字符串参数
``` lua I/user.'A'格式打包: 68657A686F75 12 I/user.'A'格式结果: hezhou I/user.'A5'格式打包: 68657A686F754C7561744F532121 28 I/user.'A5'格式结果: hezhouLuatOS!! ``` -
实验5:指定位置解包
演示如何从指定位置开始解包数据
``` lua I/user.多数据打包: 6400C80000002C01 16 I/user.分步解包结果: 100 200 300 ``` -
实验6:复杂数据组合
演示如何打包和解包复杂的数据结构,包括整数、字符串和短整数
``` lua I/user.复杂数据打包: 12340000000454657374FFCE 24 I/user.复杂数据解包: 0x1234 Test -50 ``` -
实验7:边界情况
演示空数据打包和解包,以及数值边界测试
``` lua I/user.空格式打包: 0 I/user.空格式解包位置: 1 I/user.短整型边界 - 最大值: FF7F 4 I/user.短整型边界 - 最小值: 0080 4 I/user.边界值验证: 32767 -32768 ```
注意事项
本demo仅用于演示pack核心库的基本用法,更多高级用法请参考pack 核心板文档。
在实际使用中,请根据具体需求选择合适的数据类型和字节序。
