MicroPython ESP32NVS数据非易失性存储示例讲解说明

Posted perseverance52

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MicroPython ESP32NVS数据非易失性存储示例讲解说明相关的知识,希望对你有一定的参考价值。

【MicroPython ESP32】NVS数据非易失性存储示例讲解说明


  • ✨本案例基于Thonny平台开发。✨

📖NVS非易失性存储

🌿非易失性存储 (NVS) 库主要用于在 flash 中存储键值格式的数据。本文档将利用esp32模块中的 NVS 里面的函数对数据进行存储、读写、删除操作示例讲解。

  • 📍引用:https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/api-reference/storage/nvs_flash.html

📝 NVS类函数解读

📌通过Thonny软件平台,在Shell调试窗口使用help命令查询NVS类的的相关参数:

  • 🎄Mciropython ESP32 NVS官方介绍文档::https://docs.micropython.org/en/latest/library/esp32.html?highlight=nvs#esp32.NVS
  • ⛳NVS类的成员对象
  • 📑NVS.set_i32(key, value):在实例化的命名空间中存入一个键值对,值必须为32位有正负的整数。
  • 📑 NVS.get_i32(key):#在实例化的空间中获取key(所有键名都为字符串类型)的值,返回指定键的带符号整数值。如果键不存在或具有不同类型,则引发OSError
  • 📑 NVS.get_blob(key, buffer):将指定键的blob的值读入缓冲区,缓冲区必须是一个bytearray。返回实际读取的长度。如果键不存在,具有不同的类型,或缓冲区太小,将引发OSError
  • 📑 NVS.set_blob(key, value):设置指定键的二进制blob值。传入的值必须支持缓冲区协议,例如bytes, bytearray, str(注意esp-idf区分blob和string,这个方法总是写入blob,即使字符串作为值传入。)记得最后使用 NVS.commit()提交保存
  • 📑NVS.erase_key(key):删除键值对。
  • 📑 NVS.commit():提交并保存。

⛳示例

from  esp32 import NVS
value=NVS('spacename') # spacename是命名空间,也就是实例化的开辟了一个叫spacename的存储空间
value.set_i32('ID',9527) # 在实例化的命名空间中存入一个键值对,值必须为32位有正负的整数  'ID':9527

value.set_blob('name','perseverance') #存入一个字符串型的键值对

value.commit() # 把存好的数据刷入实例化的命名空间,提交并保存。

if __name__=='__main__':
    ID_value=value.get_i32('ID') #在实例化的空间中取出'ID'的值
    print(ID_value)
    buf = bytearray(12) #准备缓冲区,大小为12(长度一定要大于后等于要接收的数据长度)
    len=value.get_blob('name',buf)
    print(len)
    print(buf)# 打印bytearray
    print(buf.decode('utf-8'))#bytearray转string
#     value.erase_key('name') #删除这个键值
  • Shell调试窗口信息

以上是关于MicroPython ESP32NVS数据非易失性存储示例讲解说明的主要内容,如果未能解决你的问题,请参考以下文章

ESP32学习笔记(23)——NVS(非易失性存储)接口使用

ESP-C3入门4. NVS非易失性存储使用

ESP-C3入门3. NVS非易失性存储使用

ESP-C3入门4. NVS非易失性存储使用

ESP32-IDF04-2 存储-NVS

esp32 nvs 寿命