Files
mobile_comm/luatos/air780epm/module/Air780EPM/demo/fskv/fskv_test.lua
T
wangfq 173dd6874f init: Air780EPM 官方 LuatOS 项目代码基线
- 来源: 合宙 LuatOS 官方仓库 air780epm 模块完整代码
- 路径: luatos/air780epm/module/Air780EPM/demo 含官方 demo(含 mqtt/mqtts/socket/uart 等)
- 后续: 基于 demo 开发 UART<->MQTT 数据上报功能
2026-08-31 08:53:49 +08:00

150 lines
5.0 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
--[[
@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("设置新的tablekey是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)