低功耗4G模组:Air780EP之fskv开发示例

news/2025/1/14 18:23:00/文章来源:https://www.cnblogs.com/luatos/p/18519246

今天我们学习合宙低功耗4G模组Air780EP的fskv开发示例。

一、简介

  • 兼容fdb的函数

  • 使用fdb的flash空间,启用时也会替代fdb库

  • 功能上与EEPROM是类似的

fskv与fdb的实现机制导致的差异

功能

fskv

fdb

value长度

4096

255

key长度

63

64

空间利用率(对比)

较低

较高

读取速度

恒定

脏数据影响速度,非恒定

写入数据

恒定

脏数据影响速度,非恒定

均衡擦除

自动

自动

二、环境准备

2.1  Air780EP开发板一套

三、程序介绍

3.1 API介绍

详细API介绍见:fskv-API

3.2 初始化kv数据库

fskv.init()

参数

返回值

返回值类型 解释

boolean

成功返回true,否则返回false

3.3 设置一对kv数据

fskv.set(key, value)

参数

传入值类型 解释

string

key的名称,必填,不能空字符串

string

用户数据,必填,不能nil, 支持字符串/数值/table/布尔值, 数据长度最大4095字节

返回值

返回值类型 解释

boolean

成功返回true,否则返回false

3.4 设置table内的键值对数据

fskv.sett(key, skey, value)

参数

传入值类型 解释

string

key的名称,必填,不能空字符串

string

table的key名称, 必填, 不能是空字符串

string

用户数据,必填,支持字符串/数值/table/布尔值, 数据长度最大4095字节

返回值

返回值类型 解释

boolean

成功返回true,否则返回false/nil

3.5 根据key获取对应的数据

fskv.get(key, skey)

参数

传入值类型 解释

string

key的名称,必填,不能空字符串

string

可选的次级key,仅当原始值为table时有效,相当于 fskv.get(key)[skey]

返回值

返回值类型

解释

any

存在则返回数据,否则返回nil

3.6 根据key删除数据

fskv.del(key)

参数

传入值类型 解释

string

key的名称,必填,不能空字符串

返回值

返回值类型 解释

bool

成功返回true,否则返回false

3.7 清空整个kv数据库

fskv.clear()

参数

返回值

返回值类型

解释

bool

成功返回true,否则返回false

3.8 kv数据库迭代器

fskv.iter()

参数

返回值

返回值类型

解释

userdata

成功返回迭代器指针,否则返回nil

3.9 kv迭代器获取下一个key

fskv.next(iter)

参数

传入值类型 解释

userdata

fskv.iter()返回的指针

返回值

返回值类型

解释

string

成功返回字符串key值, 否则返回nil

3.10 获取kv数据库状态

fskv.status()

参数

返回值

返回值类型 解释

int

已使用的空间,单位字节

int

总可用空间, 单位字节

int

总kv键值对数量, 单位个

 

四、实现流程

4.1 使用luatools工具下载固件和脚本到开发板中

 

4.2 通过luatools打印查看效果:

由上图可以看出,fskv支持存放布尔,数值,小数,字符串,等均可。还可以存放table类型的值。但不能存放nil, function, userdata, task类型的值。

五、常见问题

NVM坏了的话会不会影响fskv存储?

不同的flash互不影响。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/825018.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

低功耗4G模组HTTP网络协议应用

​ 大家好,今天我们来学习合宙Air780E模组LuatOS开发4G通信中HTTP网络协议的应用,实现模组和服务器之间数据的传输。一、HTTP概述 1.1 简介 HTTP是HyperTextTransferProtocol(超文本传输协议)的缩写。HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。…

2024年10月总结及随笔之漏更及失而复得

2024年10月总结及随笔之漏更及失而复得1. 回头看 日更坚持了670天。读《数据湖仓》更新完成 读《数据工程之道:设计和构建健壮的数据系统》开更并持续更新2023年至2024年10月底累计码字1642797字,累计日均码字2451字。 2024年10月码字86801字,同比下降30.77%,环比下降6.65%…

在系统中部署两个版本JDK实现自由切换(windows

前言 ​ 在学习和工作中遇到不同的项目需要使用不同版本的JDK,可以通过以下办法实现jdk版本自由切换。 准备工作: ​ 准备两种不同版本的jdk(我用的是jdk8和jdk11) 链接附上: https://pan.baidu.com/s/1ZGhVYw6YITLUDJFmfLDGqw?pwd=vuz41.在系统变量中新建: 变量名:CLA…

1 The Ecology of Financial Market

阅读 Trades, Quotes and Prices 的第一章。 Originally Posted at: https://clouder0.com/zh-cn/posts/financial-market-ecology/ How Trade Happens Traditional Way 金融市场都有哪些参与者?他们的各自的目的是什么? 任何交易,总是有两个参与方:Buyer & Seller. 买…

《数字经济产业》

今天,我为大家推荐一篇《数字经济产业集群发展 白皮书》报告。 报告 共 71 页。从 “数字经济概念、特征、典型产业集群案例、要素、策略、产业展望” 等六个方面,详细解读了《2023 数字经济产业》。 很重磅。#01#【关键要点】一、数字经济定义据资源作为关键生产要素、以现代…

requests接口响应出现乱码

在项目里使用requests去请求接口出现一串二进制 如:测试时却显示正常,使用的是另一个项目的虚拟环境(python 3.11.5)切换到本项目中,使用本项目虚拟环境仍然乱码(python3.11.5) 在本项目中尝试切换到3.10,创建一个新的虚拟环境,并保留comment.py脚本只需要的包,仍然报…

CUDA 编程学习 (5)——内存访问性能

现代DRAM结构由于核心速度限制,通过burst模式和多Banks结构提高带宽。CUDA中,warp级聚合内存访问减少DRAM请求,提升效率。分块访问模式通过将数据加载到共享内存中,降低全局内存访问频率,进一步优化CUDA内存访问性能。1. DRAM 带宽 1.1 DRAM 核心阵列结构每个 DRAM 核心阵…

射蜡工序流程图

包含工序:射蜡件、射水溶芯、射尿素芯、化芯、射刺头、射冷蜡块、射牙套、射帽。 前后序:(射芯射配件转至射蜡件)、平行工序(射水溶芯、尿素芯、牙套、刺头) 工序交集点:射水溶芯、射尿素芯 转修蜡修芯 转射蜡件,化芯转修蜡,射蜡首检件转检验,检验合格转修蜡。

定时调度框架Quartz使用

使用背景 在最近的项目中遇到一个需要使用到动态定时任务的需求,即定时任务的调用时间不是在某个固定时间自动执行,而是由用户控制,并且需要持久化。因此在网上搜了一下,发现了一个基于Java开发的Quartz定时任务调度框架,很符合我的需求,因此记录一下便于以后再次使用。 …

网络重置后WiFi列表消失

打开服务 启动WLAN AutoConfig

当然不是草台班子 云译网 原型设计+概要设计

作业所属课程 软件工程2024作业要求 2024秋软工实践团队作业-第二次作业目标 设计出原型与后端架构团队名称 当然不是草台班子团队成员学号 姓名102201427 侯丽珂102201426 郑嘉祺102201241 戴康怡102201218 肖晗涵112200328 谢李东292300304 陈鹭102201242 魏儀阳082100170 朱…

【入门笔记】CSE 365 - Fall 2024之Intercepting Communication(pwn.college)

从构造发送数据包让你更加理解数据包的构成【入门笔记】CSE 365 - Fall 2024之Intercepting Communication(pwn.college) level1 连接到远程主机查看解析 为了知道目标远程主机的ip地址,我们运行`/challenge/run`开启远程主机环境 再使用nc连接到远程主机的特定端口 level…