Arduino ESP32 对NVS数据操作测试


  • NVS数据操作,所需加载的头文件Preferences.h

对命名空间初始化函数begin()操作测试一

bool begin(const char * name, bool readOnly=false, const char* partition_label=NULL);

  • prefs.begin("test",true);设置成true
#include <Arduino.h>
#include <Preferences.h>void setup() {Serial.begin(115200);Serial.println();delay(2000);Preferences prefs;prefs.begin("test",true);Serial.println(prefs.freeEntries());if(prefs.isKey("name")) { // 如果当前命名空间中有键名为"name"的元素Serial.printf("name: %s\n\n", prefs.getString("name").c_str());Serial.println("removing...");if(prefs.remove("name")){Serial.println("succese!");Serial.println(prefs.freeEntries());}else{Serial.println(" 移除失败");Serial.println(prefs.freeEntries());}prefs.end();//ESP.restart();} else {size_t num = prefs.putString("name", "perseverance"); // 获取当前命名空间中的键名为"name"的值// 如果没有该元素则返回默认值"555"Serial.printf("name: %d\n\n", num);Serial.println(prefs.freeEntries());//prefs.putString("name", "233");prefs.end();delay(5000);// ESP.restart();}
}void loop() {}
  • 串口打印信息

对命名空间初始化函数begin()操作测试二

修改命名空间初始参数,改为false

#include <Arduino.h>
#include <Preferences.h>void setup() {Serial.begin(115200);Serial.println();delay(2000);Preferences prefs;prefs.begin("test",false);Serial.println(prefs.freeEntries());//获取空余nvs空间if(prefs.isKey("name")) { // 如果当前命名空间中有键名为"name"的元素Serial.printf("name: %s\n\n", prefs.getString("name").c_str());Serial.println("removing...");if(prefs.remove("name")){Serial.println("succese!");Serial.println(prefs.freeEntries());}else{Serial.println(" 移除失败");Serial.println(prefs.freeEntries());}prefs.end();//ESP.restart();} else {size_t num = prefs.putString("name", "perseverance"); // 获取当前命名空间中的键名为"name"的值Serial.printf("name: %d\n\n", num);//打印输入数据的长度Serial.println(prefs.freeEntries());prefs.end();delay(5000);// ESP.restart();}
}void loop() {}
  • 串口打印输出结果

总结:在给命名空间初始化函数参数给true:是没有移除和写入权限的,只有读取数据的权限,而参数false,则相反。如果使用prefs.begin("test")默认参数是false的,也就是说具有写入和删除功能的。

测试代码(三)

如果命名空间初始化函数prefs.begin("test",true);将不停的重复重启。因为参数为true,没有写入权限,写不进数据,所以下次重启后还是读不到数据。

#include <Arduino.h>
#include <Preferences.h>void setup() {Serial.begin(115200);Serial.println();delay(2000);Preferences prefs;prefs.begin("test",false);Serial.println(prefs.freeEntries());//获取空余nvs空间if(prefs.isKey("name")) { // 如果当前命名空间中有键名为"name"的元素Serial.printf("name: %s\n\n", prefs.getString("name").c_str());Serial.println("removing...");if(prefs.remove("name")){Serial.println("succese!");Serial.println(prefs.freeEntries());}else{Serial.println(" 移除失败");Serial.println(prefs.freeEntries());}prefs.end();//ESP.restart();  } else {Serial.println("Preferences中没有name键名。");size_t num = prefs.putString("name", "perseverance9527"); // 获取当前命名空间中的键名为"name"的值Serial.printf("name: %d\n\n", num);Serial.println(prefs.freeEntries());Serial.printf("name: %s\n\n", prefs.getString("name").c_str());prefs.end();delay(5000);ESP.restart();}
}void loop() {}

测试代码四

分别falsetrue下的读取数据。

#include <Arduino.h>
#include <Preferences.h>void setup() {Serial.begin(115200);Serial.println();delay(2000);Preferences prefs;prefs.begin("test",false);Serial.println(prefs.freeEntries());//获取空余nvs空间size_t num = prefs.putString("name", "perseverance9527"); // 获取当前命名空间中的键名为"name"的值// 如果没有该元素则返回默认值"555"Serial.printf("name: %d\n\n", num);Serial.println(prefs.freeEntries());Serial.printf("name: %s\n\n", prefs.getString("name").c_str());prefs.end();// delay(5000);//  ESP.restart();}void loop() {Preferences prefs;prefs.begin("test",true);Serial.println(prefs.freeEntries());//获取空余nvs空间Serial.printf("name: %s\n\n", prefs.getString("name").c_str());prefs.end();delay(5000);}

写这篇补充的文章,主要是加深对NVS数据操作的熟悉,以及Preferences头文件中的函数的了解。

Arduino ESP32 对NVS数据操作测试相关推荐

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

    [MicroPython ESP32]NVS数据非易失性存储示例讲解说明 ✨本案例基于Thonny平台开发.✨

  2. Arduino ESP32 获取网络数据(HTTP POST方式)

    Arduino ESP32 获取网络数据(HTTP POST方式) 相关篇<Arduino ESP32 获取网络数据(HTTP GET方式)> <Arduino ESP32 获取网络 ...

  3. Arduino ESP32 获取网络数据(HTTP GET方式)

    Arduino ESP32 获取网络数据(HTTP GET方式) 相关篇<Arduino ESP32 获取网络数据(HTTP POST方式)> <Arduino ESP32 获取网络 ...

  4. Arduino ESP32将数据保存到NVS中

    Arduino ESP32将数据保存到NVS中 该功能类似AVR单片机里面的EEPROM存储区域. 关于ESP32分区表参考<分区表> Preferences中数据以键值对(key - v ...

  5. Arduino ESP32 flash数据存储结构

    Arduino ESP32 flash数据存储结构 分区表官方文档:<分区表> 想了解ESP32 flash数据存储结构需要从分区表开始了解.一点类似一台电脑上挂载的硬盘一样. 分区表保存 ...

  6. 如何使用Arduino ESP32将数据存储到MicroSD(软SPI和硬SPI)

    如何使用Arduino ESP32将数据存储到MicroSD(软SPI和硬SPI) 主要针对使用这个库:github地址:https://github.com/nhatuan84/esp32-micr ...

  7. arduino esp32 读福申甲醛传感器

    arduino esp32 读福申甲醛传感器 想法 源代码 想法 arduino库丰富,几行代码即可完成需求描述. 缺点是不能Debug. 想持续监测甲醛变化. 使用杜邦线连接,需要将传感器的输出线焊 ...

  8. ESP32-IDF开发实例-非易失性存储(NVS)数据存取

    非易失性存储(NVS)数据存取 ESP32是一系列高度集成的.专为移动设备.可穿戴电子产品设计的物联网模块,其集成了天线开关.RF balun.功率放大器.低接收噪声放大器,滤波器.电源管理模块等,可 ...

  9. Arduino ESP32 获取网络时间并同步本地RTC时钟

    Arduino ESP32 获取网络时间并同步本地RTC时钟 相关篇<Arduino ESP32 最简单直接获取网络时间方法> 在 ArduinoESP32核心支持库当中已经包含相关的获取 ...

最新文章

  1. linux 裸设备 逻辑卷,Linux通过逻辑卷使用裸设备
  2. CTOR在区块熵编码中的优点
  3. Ubuntu15.04安装IPSec/L2TP
  4. swift瀑布流实现_CSS 实现瀑布流布局(display: flex)
  5. python interactive window_如果PySide应用程序是从IPython interactive cons运行的,上下文菜单就会消失...
  6. jeecgboot配置文件_Jeecg-Boot 技术文档
  7. python ssh模块stdout.read 和recv_paramiko SSH 模块简单应用。
  8. SliderBar4.0常用滑块滚动效果封装
  9. 如何学习angular.js
  10. 虚拟化系列-Citrix XenServer 6.1 XenMotion与HA
  11. 模拟串口收发数据Configure Virtual Serial Port Driver(VSPD)
  12. java snakeyaml_SnakeYaml快速入门和使用
  13. python查找文件指定内容_python实现在目录中查找指定文件的方法
  14. 泽勒的一致性,计算一周的星期几
  15. Unirech阿里云国际版云服务器代充-使用Python批量创建实例
  16. 差分时钟、DQS与DQM - DDRx的关键技术介绍(上)
  17. 10大主流压力/负载/性能测试工具推荐
  18. HTML学习内容的总结
  19. 【多线程】多线程基础知识
  20. 第一个Spring应用程序 - Hello World

热门文章

  1. Echarts除了tooltip其它的标签暂时都不支持html情况下label标签加背景图片的美化方案
  2. python使用thrift2协议connect hbase
  3. 如何成为一名高级开发
  4. GIT 简要使用指南 克隆、分支、提交
  5. 新玩意 一淘网” 出现无疑是对现有一些商品对比 比价等网站是个不小的冲击啊~~~
  6. 【转】BeagleBone Black USB一线通(3)
  7. ICP许可证跟edi有什么区别?
  8. Linux之FTP文件自动上传
  9. vivo手机的便签批量导出到huawei手机备忘录
  10. 天猫上线元宇宙艺术展,阿里领衔互联网巨头争相布局!