瀏覽代碼

add: 补齐demo/zbuff https://gitee.com/openLuat/LuatOS/issues/I6C26U

Wendal Chen 3 年之前
父節點
當前提交
d81e79ece8
共有 2 個文件被更改,包括 67 次插入0 次删除
  1. 66 0
      demo/zbuff/main.lua
  2. 1 0
      luat/modules/luat_lib_zbuff.c

+ 66 - 0
demo/zbuff/main.lua

@@ -0,0 +1,66 @@
+-- LuaTools需要PROJECT和VERSION这两个信息
+PROJECT = "zbuffdemo"
+VERSION = "1.0.0"
+
+log.info("main", PROJECT, VERSION)
+
+-- 引入必要的库文件(lua编写), 内部库不需要require
+sys = require("sys")
+
+sys.taskInit(function()
+    sys.wait(2000)
+    -- zbuff可以理解为char[], char*, uint8_t*
+    -- 为了与lua更好的融合, zbuff带长度,带指针位置,可动态扩容
+    local buff = zbuff.create(1024)
+    -- 可当成数组直接赋值和取值
+    buff[0] = 0xAE
+    log.info("zbuff", "buff[0]", buff[0])
+
+    -- 以io形式操作
+    
+    -- 写数据write, 操作之后指针会移动,跟文件句柄一样
+    buff:write("123") -- 字符串
+    buff:write(0x12, 0x13, 0x13, 0x33) -- 直接写数值也可以
+    
+    -- 设置指针位置, seek
+    buff:seek(5, zbuff.SEEK_CUR) -- 指针位置+5
+    buff:seek(0)                 -- 绝对地址
+
+    -- 读数据read, 指针也会移动
+    local data = buff:read(3)
+    log.info("zbuff", "data", data)
+
+    -- 清除全部数据,但指针位置不变
+    buff:clear() -- 默认填0
+    buff:clear(0xA5) -- 也可以指定填充的内容
+
+    -- 支持以pack库的形式写入或读取数据
+    buff:seek(0)
+    buff:pack(">IIHA", 0x1234, 0x4567, 0x12,"abcdefg")
+    buff:seek(0)
+    local cnt,a,b,c,s = buff:unpack(">IIHA10")
+
+    -- 也可以直接按类型读写数据
+    local len = buff:writeI8(10)
+    local len = buff:writeU32(1024)
+    local i8data = buff:readI8()
+    local u32data = buff:readU32()
+
+    -- 取出指定区间的数据
+    local fz = buff:toStr(0,5)
+
+    -- 获取其长度
+    log.info("zbuff", "len", buff:len())
+    -- 获取其指针位置
+    log.info("zbuff", "len", buff:used())
+
+    -- 更多用法请查阅api文档
+
+    log.info("zbuff", "demo done")
+end)
+
+
+-- 用户代码已结束---------------------------------------------
+-- 结尾总是这一句
+sys.run()
+-- sys.run()之后后面不要加任何语句!!!!!

+ 1 - 0
luat/modules/luat_lib_zbuff.c

@@ -5,6 +5,7 @@
 @date    2021.03.31
 @video https://www.bilibili.com/video/BV1gr4y1V7HN
 @tag LUAT_USE_ZBUFF
+@demo  zbuff
 */
 #include "luat_base.h"
 #include "luat_zbuff.h"