Arduino ESP32 对NVS数据操作测试
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() {}
测试代码四
分别
false
和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空间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数据操作测试相关推荐
- 【MicroPython ESP32】NVS数据非易失性存储示例讲解说明
[MicroPython ESP32]NVS数据非易失性存储示例讲解说明 ✨本案例基于Thonny平台开发.✨
- Arduino ESP32 获取网络数据(HTTP POST方式)
Arduino ESP32 获取网络数据(HTTP POST方式) 相关篇<Arduino ESP32 获取网络数据(HTTP GET方式)> <Arduino ESP32 获取网络 ...
- Arduino ESP32 获取网络数据(HTTP GET方式)
Arduino ESP32 获取网络数据(HTTP GET方式) 相关篇<Arduino ESP32 获取网络数据(HTTP POST方式)> <Arduino ESP32 获取网络 ...
- Arduino ESP32将数据保存到NVS中
Arduino ESP32将数据保存到NVS中 该功能类似AVR单片机里面的EEPROM存储区域. 关于ESP32分区表参考<分区表> Preferences中数据以键值对(key - v ...
- Arduino ESP32 flash数据存储结构
Arduino ESP32 flash数据存储结构 分区表官方文档:<分区表> 想了解ESP32 flash数据存储结构需要从分区表开始了解.一点类似一台电脑上挂载的硬盘一样. 分区表保存 ...
- 如何使用Arduino ESP32将数据存储到MicroSD(软SPI和硬SPI)
如何使用Arduino ESP32将数据存储到MicroSD(软SPI和硬SPI) 主要针对使用这个库:github地址:https://github.com/nhatuan84/esp32-micr ...
- arduino esp32 读福申甲醛传感器
arduino esp32 读福申甲醛传感器 想法 源代码 想法 arduino库丰富,几行代码即可完成需求描述. 缺点是不能Debug. 想持续监测甲醛变化. 使用杜邦线连接,需要将传感器的输出线焊 ...
- ESP32-IDF开发实例-非易失性存储(NVS)数据存取
非易失性存储(NVS)数据存取 ESP32是一系列高度集成的.专为移动设备.可穿戴电子产品设计的物联网模块,其集成了天线开关.RF balun.功率放大器.低接收噪声放大器,滤波器.电源管理模块等,可 ...
- Arduino ESP32 获取网络时间并同步本地RTC时钟
Arduino ESP32 获取网络时间并同步本地RTC时钟 相关篇<Arduino ESP32 最简单直接获取网络时间方法> 在 ArduinoESP32核心支持库当中已经包含相关的获取 ...
最新文章
- linux 裸设备 逻辑卷,Linux通过逻辑卷使用裸设备
- CTOR在区块熵编码中的优点
- Ubuntu15.04安装IPSec/L2TP
- swift瀑布流实现_CSS 实现瀑布流布局(display: flex)
- python interactive window_如果PySide应用程序是从IPython interactive cons运行的,上下文菜单就会消失...
- jeecgboot配置文件_Jeecg-Boot 技术文档
- python ssh模块stdout.read 和recv_paramiko SSH 模块简单应用。
- SliderBar4.0常用滑块滚动效果封装
- 如何学习angular.js
- 虚拟化系列-Citrix XenServer 6.1 XenMotion与HA
- 模拟串口收发数据Configure Virtual Serial Port Driver(VSPD)
- java snakeyaml_SnakeYaml快速入门和使用
- python查找文件指定内容_python实现在目录中查找指定文件的方法
- 泽勒的一致性,计算一周的星期几
- Unirech阿里云国际版云服务器代充-使用Python批量创建实例
- 差分时钟、DQS与DQM - DDRx的关键技术介绍(上)
- 10大主流压力/负载/性能测试工具推荐
- HTML学习内容的总结
- 【多线程】多线程基础知识
- 第一个Spring应用程序 - Hello World