wangpenglin dd17811f9a add:增加模块化演示,增加zbuff演示功能 7 сар өмнө
..
main.lua dd17811f9a add:增加模块化演示,增加zbuff演示功能 7 сар өмнө
readme.md dd17811f9a add:增加模块化演示,增加zbuff演示功能 7 сар өмнө
zbuff_advanced.lua dd17811f9a add:增加模块化演示,增加zbuff演示功能 7 сар өмнө
zbuff_core.lua dd17811f9a add:增加模块化演示,增加zbuff演示功能 7 сар өмнө
zbuff_memory.lua dd17811f9a add:增加模块化演示,增加zbuff演示功能 7 сар өмнө

readme.md

功能模块介绍:

本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上看到如下打印:

(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 内存管理功能演示完成