- 来源: 合宙 LuatOS 官方仓库 air780epm 模块完整代码 - 路径: luatos/air780epm/module/Air780EPM/demo 含官方 demo(含 mqtt/mqtts/socket/uart 等) - 后续: 基于 demo 开发 UART<->MQTT 数据上报功能
48 lines
1.8 KiB
Lua
48 lines
1.8 KiB
Lua
--[[
|
|
@module miniz_app
|
|
@summary miniz_app应用功能模块
|
|
@version 1.0
|
|
@date 2025.10.28
|
|
@author 沈园园
|
|
@usage
|
|
本文件为miniz应用功能模块,核心业务逻辑为:
|
|
1、如何对数据压缩解压;
|
|
|
|
本文件没有对外接口,直接在main.lua中require "miniz_app"就可以加载运行;
|
|
]]
|
|
|
|
|
|
local function miniz_task_func()
|
|
-- 压缩过的字符串, 为了方便演示, 这里用了base64编码
|
|
-- miniz能解压标准zlib数据流
|
|
-- 将字符串进行base64解码
|
|
local b64str = "eAEFQIGNwyAMXOUm+E2+OzjhCCiOjYyhyvbVR7K7IR0l+iau8G82eIW5jXVoPzF5pse/B8FaPXLiWTNxEMsKI+WmIR0l+iayEY2i2V4UbqqPh5bwimyEuY11aD8xeaYHxAquvom6VDFUXqQjG1Fek6efCFfCK0b0LUnQMjiCxhUT05GNL75dFUWCSMcjN3EE5c4Wvq42/36R41fa"
|
|
local str = b64str:fromBase64()
|
|
-- 快速解压
|
|
local dstr = miniz.uncompress(str)
|
|
-- 压缩过的数据长度 156
|
|
-- 解压后的数据长度,即原始数据的长度 235
|
|
log.info("miniz", "压缩过的数据长度: ", #str, "解压后的数据长度:", #dstr)
|
|
|
|
-- 演示压缩解压
|
|
local ostr = "abcd1234567890efghijklmnopqrstuvwxyzabcd1234567890efghijklmnopqrstuvwxyzabcd1234567890efghijklmnopqrstuvwxyz"
|
|
log.info("压缩前的字符串:", #ostr, ostr)
|
|
-- 压缩字符串
|
|
local zstr = miniz.compress(ostr)
|
|
log.info("压缩后的字符串:",#zstr, zstr:toHex())
|
|
-- 解压字符串
|
|
local lstr = miniz.uncompress(zstr)
|
|
log.info("解压后的字符串:", #lstr, lstr)
|
|
|
|
-- 演示从文件读取2K数据压缩
|
|
local ostr = io.readFile("/luadb/test.txt")
|
|
local zstr = miniz.compress(ostr)
|
|
if zstr then
|
|
log.info("miniz", "压缩前的数据长度: ", #ostr, "压缩后的数据长度: ", #zstr)
|
|
end
|
|
end
|
|
|
|
|
|
--创建一个task,并且运行task的主函数miniz_task_func
|
|
sys.taskInit(miniz_task_func)
|