低功耗4G模組:Air780EP之fskv開發示例

电子老师傅發表於2024-11-01

今天我們學習合宙低功耗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列印檢視效果:

低功耗4G模組:Air780EP之fskv開發示例

由上圖可以看出,fskv支援存放布林,數值,小數,字串,等均可。還可以存放table型別的值。但不能存放nil, function, userdata, task型別的值。

五、常見問題

NVM壞了的話會不會影響fskv儲存?

不同的flash互不影響。

相關文章