init: Air780EPM 官方 LuatOS 项目代码基线
- 来源: 合宙 LuatOS 官方仓库 air780epm 模块完整代码 - 路径: luatos/air780epm/module/Air780EPM/demo 含官方 demo(含 mqtt/mqtts/socket/uart 等) - 后续: 基于 demo 开发 UART<->MQTT 数据上报功能
This commit is contained in:
@@ -0,0 +1,149 @@
|
||||
--[[
|
||||
@module fskv_test
|
||||
@summary fskv_test测试功能模块
|
||||
@version 1.0
|
||||
@date 2025.11.14
|
||||
@author 马亚丹
|
||||
@usage
|
||||
本demo演示的功能为:使用Air780EPM核心板演示fskv核心库API的用法,演示设置kv数据、设置 table 内的键值对数据,用kv迭代器遍历kv数据,删除kv数据等操作。
|
||||
|
||||
运行核心逻辑:
|
||||
1.初始化fskv
|
||||
2.获取 kv 数据库状态
|
||||
3.设置不同类型的kv数据
|
||||
4.设置 table 内的键值对数据
|
||||
5.根据 key 获取对应的数据
|
||||
6.使用kv迭代器遍历kv数据
|
||||
7.删除kv数据,清空KV数据
|
||||
|
||||
]]
|
||||
--1.定义功能函数:置kv 数据
|
||||
local function setKV()
|
||||
--如下所示设置用户数据是字符串
|
||||
local r1 = fskv.set("my_str", "goodgoodstudy")
|
||||
log.info("fskv设置用户数据是字符串", r1)
|
||||
--如下所示设置用户数据是布尔值
|
||||
local r2 = fskv.set("my_bool", true)
|
||||
log.info("fskv设置用户数据是布尔值", r2)
|
||||
--如下所示设置用户数据是数值
|
||||
local r3 = fskv.set("my_number", 1.23)
|
||||
log.info("fskv设置用户数据是数值", r3)
|
||||
--如下所示设置用户数据是整数
|
||||
local r4 = fskv.set("my_int", 5)
|
||||
log.info("fskv设置用户数据是整数", r4)
|
||||
--如下所示设置用户数据是table
|
||||
local r5 = fskv.set("my_table", { name = "wendal", age = 18 })
|
||||
log.info("fskv用户数据是table类型", r5)
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
|
||||
--2.定义功能函数:设置 table 内的键值对数据
|
||||
local function setttable()
|
||||
--如下所示设置用户数据是字符串
|
||||
local r1=fskv.sett("mytable", "wendal", "goodgoodstudy")
|
||||
log.info("mytable设置用户数据是字符串", r1)
|
||||
--如下所示设置用户数据是布尔值
|
||||
local r2=fskv.sett("mytable", "upgrade", true)
|
||||
log.info("mytable设置用户数据是布尔值", r2)
|
||||
--如下所示设置用户数据是数值
|
||||
local r3=fskv.sett("mytable", "timer", 1)
|
||||
log.info("mytable设置用户数据是数值", r3)
|
||||
--如下所示设置用户数据是table
|
||||
local r4=fskv.sett("mytable", "bigd", { name = "wendal", age = 123 })
|
||||
log.info("mytable设置用户数据是table", r4)
|
||||
return true
|
||||
end
|
||||
|
||||
--3.定义功能函数:获取kv数据
|
||||
local function getKV()
|
||||
local my_str = fskv.get("my_str")
|
||||
log.info("获取my_str的类型和值", type(my_str), my_str)
|
||||
local my_bool = fskv.get("my_bool")
|
||||
log.info("获取upgrade的类型和值", type(my_bool), my_bool)
|
||||
local my_number = fskv.get("my_number")
|
||||
log.info("获取my_number的类型和值", type(my_number), my_number)
|
||||
local my_int = fskv.get("my_int")
|
||||
log.info("获取my_int的类型和值", type(my_int), my_int)
|
||||
local my_table = fskv.get("my_table")
|
||||
log.info("获取my_table的类型和值", my_table,json.encode(my_table))
|
||||
|
||||
local mytable = fskv.get("mytable")
|
||||
log.info("获取mytable的类型和值", mytable, json.encode(mytable))
|
||||
return true
|
||||
end
|
||||
|
||||
--4.定义功能函数:kv数据库迭代器遍历KV数据
|
||||
local function iterKV()
|
||||
local iter = fskv.iter()
|
||||
log.info("kv数据库迭代器", iter)
|
||||
if iter then
|
||||
while 1 do
|
||||
local k = fskv.next(iter)
|
||||
log.info("kv迭代器获取下一个key", k)
|
||||
if not k then
|
||||
log.info("kv数据库遍历完成")
|
||||
break
|
||||
end
|
||||
log.info("fskv", k, "value", fskv.get(k))
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
--====功能演示主函数====
|
||||
local function fskv_test()
|
||||
-- 初始化kv数据库
|
||||
local r = fskv.init()
|
||||
log.info("fskv", "init complete", r)
|
||||
|
||||
--获取 kv 数据库状态
|
||||
local used, total, kv_count = fskv.status()
|
||||
log.info("获取kv数据库状态", "fskv", "kv", used, total, kv_count)
|
||||
|
||||
|
||||
--=======设置kv 数据=======
|
||||
if not setKV() then
|
||||
log.info("设置kv数据失败")
|
||||
end
|
||||
|
||||
--=======设置 table 内的键值对数据=======
|
||||
if not setttable() then
|
||||
log.info("设置 table 内的键值对数据失败")
|
||||
end
|
||||
|
||||
--======根据 key 获取对应的数据====
|
||||
if not getKV() then
|
||||
log.info("获取kv数据失败")
|
||||
end
|
||||
--======使用kv数据库迭代器遍历KV数据====
|
||||
if not iterKV() then
|
||||
log.info("遍历kv数据失败")
|
||||
end
|
||||
|
||||
|
||||
|
||||
-- 删除测试
|
||||
local d = fskv.del("my_bool")
|
||||
log.info("fskv", "my_bool删除结果", d)
|
||||
local t = fskv.get("my_bool")
|
||||
log.info("fskv", "删除后查询my_bool", type(t), t)
|
||||
|
||||
|
||||
-- 如果设置table的value为nil, 代表删除对应的skey
|
||||
-- 如下写法是删除name
|
||||
log.info("设置新的table,key是mytable2", fskv.set("mytable2", { age = 18, name = "wendal" }))
|
||||
log.info("mytable2的值", fskv.get("mytable2"),json.encode(fskv.get("mytable2")))
|
||||
log.info("mytable2删除name测试", fskv.sett("mytable2", "name", nil))
|
||||
log.info("mytable2删除结果", fskv.get("mytable2"), json.encode(fskv.get("mytable2")))
|
||||
|
||||
|
||||
--清空整个kv数据库
|
||||
log.info("清空整个kv数据库", fskv.clear())
|
||||
|
||||
|
||||
local used, total, kv_count = fskv.status()
|
||||
log.info("获取kv数据库状态", "fskv", "kv", used, total, kv_count)
|
||||
end
|
||||
|
||||
sys.taskInit(fskv_test)
|
||||
Reference in New Issue
Block a user