9、合宙Air模块Luat开发:认识NVS数据管理模块

目录

点击这里查看所有博文

本系列博客,理论上适用于合宙的Air202、Air268、Air720x、Air720S以及最近发布的Air720U(我还没拿到样机,应该也能支持)。

先不管支不支持,如果你用的是合宙的模块,那都不妨一试,也许会有意外收获
我使用的是Air720SL模块,如果在其他模块上不能用,那就是底层core固件暂时还没有支持,这里的代码是没有问题的。例程仅供参考!

一、前言

1.1、NVS 介绍

NVS: Non-volatile storage , 即将数据存储到 flash 中, 掉电或重启后数据仍然存在, flash 类似于 PC 上磁盘。
Air720SL 上提供 nvs 接口给用户, 来保存和读取用户数据. 具体参考 nvm.lua,本接口不适合大容量数据的存储管理,如果数据量超过10K,建议直接使用io接口操作文件来管理。

1.2、NVS 优势

1.3、NVS数据管理模块

二、编写测试程序

nvs在luat中封装的很简单,几乎可以认为是无脑,对着例程看一下就知道怎么用,一共就涉及到了三个函数,分别是

完整的测试代码如下,测试代码中分别对string类型、numble类型、bool类型、table类型进行了设置和读取。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
--必须在这个位置定义PROJECT和VERSION变量
--PROJECT:ascii string类型,可以随便定义,只要不使用,就行
--VERSION:ascii string类型,如果使用Luat物联云平台固件升级的功能,必须按照"X.X.X"定义,X表示1位数字;否则可随便定义
PROJECT = "LED"
VERSION = "0.0.1"
require "sys"
--加载日志功能模块,并且设置日志输出等级
--如果关闭调用log模块接口输出的日志,等级设置为log.LOG_SILENT即可
require "log"
LOG_LEVEL = log.LOGLEVEL_TRACE

require "config"
require "nvm"

local function Test_Task()
while true do
log.info("Test_Task_run")
local num = nvm.get("numPara")
num = num + 1
nvm.set("numPara", num)
log.info("numPara",num)
sys.wait(2000)
end
end

local function user_main()
sys.wait(10000)
nvm.init("config.lua")
nvm.set("strPara", "str2")
nvm.set("boolPara", false)
nvm.set("tablePara", {"item2-1", "item2-2", "item2-3"})
log.info("testNvm.strPara", nvm.get("strPara"))
log.info("testNvm.boolPara", nvm.get("boolPara"))
local tableValue = nvm.get("tablePara")
log.info("testNvm.tablePara", tableValue[1], tableValue[2], tableValue[3])
sys.taskInit(Test_Task)
end

--启动系统框架
sys.taskInit(user_main)
sys.init(0, 0)
sys.run()

三、下载测试程序到开发板

下载时要注意的是必须带上config.lua才能正常使用
在这里插入图片描述
下载完成打开监视端口,读写正常

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[2020-04-02 21:51:31.742] [I]-[nvm.set] true strPara str2 nil nil
[2020-04-02 21:51:31.753] [I]-[nvm.set] false boolPara false nil nil
[2020-04-02 21:51:31.757] [I]-[nvm.set] true tablePara table: 06fc3358 nil nil
[2020-04-02 21:51:31.768] [I]-[testNvm.strPara] str2
[2020-04-02 21:51:31.772] [I]-[testNvm.boolPara] false
[2020-04-02 21:51:31.782] [I]-[testNvm.tablePara] item2-1 item2-2 item2-3
[2020-04-02 21:51:31.788] [I]-[Test_Task_run]
[2020-04-02 21:51:31.792] [I]-[nvm.set] true numPara 2 nil nil
[2020-04-02 21:51:31.971] [I]-[numPara] 2
[2020-04-02 21:51:33.943] [I]-[Test_Task_run]
[2020-04-02 21:51:33.947] [I]-[nvm.set] true numPara 3 nil nil
[2020-04-02 21:51:33.953] [I]-[numPara] 3
[2020-04-02 21:51:35.960] [I]-[Test_Task_run]
[2020-04-02 21:51:35.973] [I]-[nvm.set] true numPara 4 nil nil
[2020-04-02 21:51:35.993] [I]-[numPara] 4
[2020-04-02 21:51:37.955] [I]-[Test_Task_run]
[2020-04-02 21:51:37.959] [I]-[nvm.set] true numPara 5 nil nil

不会下载的点击这里,进去查看我的第二篇博文2、Air720SL模块Luat开发:第一个Luat的Hello World里面讲了怎么下载
这里只是我的学习笔记,拿出来给大家分享,欢迎大家批评指正,本篇教程到此结束

上次更新 2021-01-28