今天我们学习合宙低功耗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互不影响。

低功耗4G模组:Air780EP之fskv开发示例的更多相关文章

  1. 制作一个有趣的涂鸦物联网小项目(涂鸦模组SDK开发 CBU BK7231N WiFi+蓝牙模组 HSV彩色控制)

    实现的功能: l  APP控制月球灯 l  本地月球灯控制 l  APP控制"大白"颜色,实现各种颜色变身 l  门状态传感器状态APP显示 l  网络状态指示灯,连接服务器长亮, ...

  2. 手把手教你基于luatos的4G(LTE Cat.1)模组接入华为云物联网平台

    摘要:本期文章采用了4G LTE Cat.1模块,编程语言用的是lua,实现对华为云物联网平台的设备通信与控制 本文分享自华为云社区<基于luatos的4G(LTE Cat.1)模组接入华为云物 ...

  3. NFC模组,开发NFC功能 仅仅要几条指令的事情

    特点:实现NFC透明传输.内置NFC协议栈,支持UART串口直接读写,用于门禁能够同一时候兼容手机和卡片开门,还能实现动态密钥,读到的NFC数据自己主动串口输出,会串口就能开发NFC,不须要研究LLC ...

  4. 泰拉瑞亚EasyBuildMod便捷建造模组开发详细过程

    pre { overflow-y: auto; max-height: 400px } img { max-width: 500px; max-height: 300px } github地址: ht ...

  5. 异构智联Wi-Fi+蓝牙模组,连接快、准、稳!

    下班回家打开门,电灯.电视.空调.音响.电动窗帘.扫地机器人--一呼百应,有序开工,原本冰冷的房子立刻变成了温暖港湾.可以说,舒适便捷的智能设备已经完全融入了我们的生活中. 从单一场景.单一设备,到现 ...

  6. iPhone X 的原深感模组

    物理与数字世界正走向融合,我们每天醒来的时间.睡眠时长.心率和步数等数据都会被分享.上传并转化为分析数据.无处不自的 AI.互联互通和软件平台将改变用户对现实的感知. 2018 年的 CES 展(国际 ...

  7. 最全的NB-IoT芯片厂商、模组厂商信息

    NB-IoT作为LPWAN(低功耗广域网)的新兴技术,因为具有低功耗.低成本.广覆盖.海量节点等优势,并且在授权频段可以与2G.3G无缝连接而被运营商所青睐且接受.特别是到了2017年,据统计全球有5 ...

  8. 中国移动推出NB-IoT/eMTC/GSM多模通信模组Qualcomm调制解调器支持

    亚洲电子消费展(CES Asia)在上海举行.期间,中国移动正式推出NB-IoT/eMTC/GSM三模通信模组A9500.该通信模组采用Qualcomm MDM9206 LTE IoT调制解调器,具有 ...

  9. BC26模组UDP调试

    BC26模组调试 数据上报AT流程 [15:33:46.819]收←◆ F1: 0000 0000 V0: 0000 0000 [0001] 00: 0006 000C 01: 0000 0000 U ...

  10. openwrt编译加载龙尚U9300模组上网

    硬件平台:MT7628A openwrt版本:MTK_SDK 1.添加模组信息 /build_dir/target-mipsel_24kc_musl/linux-ramips_mt76x8/linux ...

随机推荐

  1. Sql语句的两表联合查询

    string sql = "select mID,mName,mSex,mAge,(select fzName from TxlFenZu where ID=mFenZu) as mFenZ ...

  2. 【Docker】之重启容器相关命令

    我想每次打开电脑,只要自动运行docker的时候,马上把设置指定的容器也自动运行起来. 首先查看一下容器启动情况: # 查看docker运行命令 docker ps -a --restart参数有3个 ...

  3. 2024DASCTF

    DASCTF prese 一眼控制了平坦化,可以用d810梭一下 跟进一下main_crypto这个函数 主要是两部分,第一部分是生成一个256大小的数组,通过输入的长度和遍历生成的一个数组 第二部分 ...

  4. three.js实现太阳系

    前言 刚开始使用three.js时会不太熟悉,想写一些项目增加理解,网上翻了好多文章,不是画立方体就是画三角形,最后偶然看到这个网站,十分炫酷. 我们也许没那么牛逼,但我们可以整个简略版的太阳系来练练 ...

  5. Mongodb入门4

    今天学习一下MongoDB数据库的索引. 因为养的鱼生病了,所以抽空晚上学习记录一下. 这里借用一下菜鸟教程的原文: 索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描 ...

  6. 华为测试岗上岸,月入20K,面试无非就是这些套路!

    软件测试工程师,和开发工程师相比起来,虽然前期可能不会太深,但是涉及的面还是比较广的.涉及的知识主要有 MySQL 数据库的使用.Linux 操作系统的使用.软件测试框架性的问题,测试环境搭建问题.当 ...

  7. C++ STL deque容器

    deque 容器 deque (读作deck)是"doble-ended-queue"的缩写,和vector一样都是STL的容器 deque是双端数组,而vector是单端 单端与 ...

  8. 邀请参与第四季度 Flutter 开发者调查

    本次调研会较为详细地了解大家对 Flutter 框架.开发语言.package 生态 (包括 Firebase package).IDE 插件以及 Material Design / Cupertin ...

  9. Kubernetes ReplicaSet 控制器(十九)

    前面我们一起学习了 Pod 的原理和一些基本使用,但是在实际使用的时候并不会直接使用 Pod,而是会使用各种控制器来满足我们的需求,Kubernetes 中运行了一系列控制器来确保集群的当前状态与期望 ...

  10. Docker基本操作(端口?网络模式?)(五)

    一.端口暴露 Docker 容器更多情况下是用来运行 Web 应用的,所以要如何访问到容器中的 Web 服务呢?比如我们现在运行一个 nginx 容器服务: $ docker run --name w ...