## **功能模块介绍:** 本demo进行了一个完整的 zbuff 二进制数据处理库 的演示,示了在嵌入式环境中高效处理二进制数据的全流程。项目分为三个核心模块,覆盖了从基础到高级的二进制数据处理场景: 1、main.lua:主程序入口 2、zbuff_core.lua:为zbuff的基础操作模块,包含zbuff最常用的创建,读写高效查询等基础功能。 3、zbuff_advanced.lua:为zbuff高级操作模块,包含zbuff较为复杂的结构化打包,类型化操作等数据处理功能。 4、zbuff_memory.lua:为内存管理模块,核心业务逻辑为内存管理操作。 ## 演示功能概述 ### 1、核心功能模块 (zbuff_core.lua) #### 缓冲区管理: (1)创建固定大小(1024字节)的缓冲区 zbuff.create (2)索引直接访问(如 buff[0] = 0xAE) #### 基础IO操作: (1)写入字符串和数值数据(write("123")) (2)指针控制(seek()定位操作) (3)数据读取(read(3)) #### 元信息查询 (1)获取缓冲区总长度(len()) (2)查询已使用空间(used()) #### 高效数据查询 (1)query()接口快速提取数据 (2)自动格式转换(大端序处理) ### 2、高级功能模块 (zbuff_advanced.lua) #### 结构化数据处理 (1)数据打包(pack(">IIHA", ...)):支持大端序/多种数据类型 (2)数据解包(unpack(">IIHA10")):自动解析复合数据结构 #### 类型化操作 (1)精确类型读写:writeI8()/readU32()等 #### 浮点处理 (1)单精度浮点写入(writeF32(1.2)) (2)浮点数据读取(readF32()) ### 3、内存管理模块 (zbuff_memory.lua) #### 动态内存管理 (1)缓冲区动态扩容resize(2048) #### 块操作 (1)内存块设置(set(10,0xaa,5))类似 memset (2)数据删除(del(2,3))及前移 #### 数据工具 (1)内存比较(isEqual()) (2)Base64编码转换(toBase64()) ## **演示硬件环境** 1、Air780EPM开发板一块/Air780EPM核心板一块 2、TYPE-C USB数据线一根 3、Air780EPM开发板和数据线的硬件接线方式为 - Air780EPM开发板通过TYPE-C USB口供电;(USB旁边的开关拨到USB供电) - TYPE-C USB数据线直接插到Air780EPM开发板的TYPE-C USB座子,另外一端连接电脑USB口; 4、如果是Air780EPM核心板,需要将正面usb旁的拨码拨到ON, 通过TYPE-C USB口供电,另外一端连接电脑USB口; ## **演示软件环境** 1、Luatools下载调试工具: https://docs.openluat.com/air780epm/common/Luatools/ 2、内核固件版本:https://docs.openluat.com/air780epm/luatos/firmware/version/ ## **演示核心步骤** 1、搭建好硬件环境 2、通过Luatools将demo与内核固件烧录到核心板中 3、烧录好后,板子开机将会在Luatools上看到如下打印: ```Lua (1)开始打印项目信息正式开始展示。 [2025-08-11 16:38:35.922][000000000.369] I/user.main 项目启动 zbuff 003.000.000 [2025-08-11 16:38:35.932][000000000.379] I/user.zbuff_core 启动核心功能演示 [2025-08-11 16:38:35.938][000000000.380] I/user.zbuff_core 缓冲区创建 长度: 1024 (2)进行BUFF创建,初始化以及索引,读写,清除等基础功能演示操作 [2025-08-11 16:38:35.950][000000000.380] I/user.zbuff_core === 缓冲区创建与初始化演示 === [2025-08-11 16:38:35.955][000000000.380] I/user.zbuff_core 索引访问示例 buff[0] = 174 [2025-08-11 16:38:35.965][000000000.381] I/user.zbuff_core === 基础IO操作演示 === [2025-08-11 16:38:35.971][000000000.381] I/user.zbuff_core 写入字符串 123 [2025-08-11 16:38:35.979][000000000.381] I/user.zbuff_core 写入数值 0x12, 0x13, 0x13, 0x33 [2025-08-11 16:38:35.985][000000000.381] I/user.zbuff_core 指针当前位置 向后移动5字节 当前位置: 12 [2025-08-11 16:38:35.991][000000000.382] I/user.zbuff_core 指针移动 重置到开头 [2025-08-11 16:38:36.000][000000000.382] I/user.zbuff_core 读取数据 长度3: 123 [2025-08-11 16:38:36.005][000000000.382] I/user.zbuff_core === 缓冲区清除操作 === [2025-08-11 16:38:36.013][000000000.382] I/user.zbuff_core 清除操作 全部清零 [2025-08-11 16:38:36.019][000000000.382] I/user.zbuff_core 清除操作 填充0xA5 [2025-08-11 16:38:36.027][000000000.383] I/user.zbuff_core === 元信息查询 === [2025-08-11 16:38:36.033][000000000.383] I/user.zbuff_core 元信息 总长度: 1024 [2025-08-11 16:38:36.043][000000000.383] I/user.zbuff_core 元信息 已使用: 3 [2025-08-11 16:38:36.048][000000000.383] I/user.zbuff_core === 高效数据查询 === [2025-08-11 16:38:36.056][000000000.384] I/user.zbuff_core query查询 全部数据: 123456789ABC 12 [2025-08-11 16:38:36.060][000000000.384] I/user.zbuff_core query查询 大端序格式: 305419896 [2025-08-11 16:38:36.067][000000000.384] I/user.zbuff_core 核心功能演示完成 (3)进行高级功能演示,包括数据打包与解包、类型化读写、浮点操作演示等。 [2025-08-11 16:38:36.072][000000000.398] I/user.zbuff_advanced 启动高级功能演示 [2025-08-11 16:38:36.078][000000000.398] I/user.zbuff_advanced === 数据打包与解包演示 === [2025-08-11 16:38:36.088][000000000.399] I/user.zbuff_advanced 数据打包 格式: >IIHA 值: 0x1234, 0x4567, 0x12, 'abcdefg' [2025-08-11 16:38:36.092][000000000.399] I/user.zbuff_advanced 打包后数据 0000123400004567001261626364656667 34 [2025-08-11 16:38:36.101][000000000.400] I/user.zbuff_advanced 数据解包 数量: 20 值: 4660 17767 18 abcdefg [2025-08-11 16:38:36.105][000000000.401] I/user.zbuff_advanced 解包输出内容 cnt: 20 a(32位): 0x1234 b(32位): 0x4567 c(16位): 0x12 s(字符串): abcdefg [2025-08-11 16:38:36.109][000000000.401] I/user.zbuff_advanced === 类型化读写演示 === [2025-08-11 16:38:36.119][000000000.401] I/user.zbuff_advanced 类型化写入 I8: 10 [2025-08-11 16:38:36.126][000000000.402] I/user.zbuff_advanced 类型化写入 U32: 1024 [2025-08-11 16:38:36.135][000000000.402] I/user.zbuff_advanced 类型化读取 I8: 10 [2025-08-11 16:38:36.140][000000000.402] I/user.zbuff_advanced 类型化读取 U32: 1024 [2025-08-11 16:38:36.151][000000000.402] I/user.zbuff_advanced === 浮点数操作演示 === [2025-08-11 16:38:36.156][000000000.403] I/user.zbuff_advanced 浮点数操作 写入F32: 1.200000 [2025-08-11 16:38:36.165][000000000.403] I/user.zbuff_advanced 浮点数操作 读取F32: 1.200000 [2025-08-11 16:38:36.171][000000000.403] I/user.zbuff_advanced 高级功能演示完成 (4)内存管理演示:内存块设置(set(10,0xaa,5)),数据删除(del(2,3))及前移,内存比较,Base64编码转换等 [2025-08-11 16:38:36.182][000000000.415] I/user.zbuff_memory 启动内存管理功能演示 [2025-08-11 16:38:36.188][000000000.416] I/user.zbuff_memory 大小调整 原始大小: 1024 新大小: 2048 [2025-08-11 16:38:36.198][000000000.417] I/user.zbuff_memory 内存设置 位置10-14设置为0xaa [2025-08-11 16:38:36.204][000000000.417] I/user.zbuff_memory 验证结果 位置10: 170 应为0xaa [2025-08-11 16:38:36.215][000000000.417] I/user.zbuff_memory 删除前数据 [2025-08-11 16:38:36.222][000000000.418] ABCDEFGH [2025-08-11 16:38:36.233][000000000.418] I/user.zbuff_memory 删除操作 删除位置2-4 结果: [2025-08-11 16:38:36.244][000000000.418] ABFGH [2025-08-11 16:38:36.251][000000000.418] I/user.zbuff_memory 内存比较 结果: false 差异位置: 0 [2025-08-11 16:38:36.258][000000000.419] I/user.zbuff_memory Base64编码 长度: 8 结果: QUJGR0g= [2025-08-11 16:38:36.264][000000000.419] I/user.zbuff_memory 内存管理功能演示完成 ```