#include <Preferences.h>
String Str; // 声明变量 Str ,用于存储串口输入的数据
Preferences prefs;
void setup() {
Serial.begin(115200);
Serial.println("Hello, ESP32-C3!");
//pre-begin
prefs.begin("test", false);
Serial.print("ROM=> ");
Serial.println(prefs.freeEntries());//获取空余nvs空间
/*
if(prefs.isKey("name")) { // 如果当前命名空间中有键名为"name"的元素
Serial.printf("aname: %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();
} else {
size_t num = prefs.putString("name", "perseverance2018"); // 获取当前命名空间中的键名为"name"的值
prefs.putInt("aval", 5566);
Serial.printf("alen: %d\n\n", num);//打印输入数据的长度
Serial.println(prefs.freeEntries());
Serial.printf("aname: %s\n\n", prefs.getString("name").c_str());
Serial.printf("aval: %d\n\n", prefs.getInt("aval"));
prefs.putString("name", "perseverance9999");
Serial.println(prefs.freeEntries());
Serial.printf("bname: %s\n\n", prefs.getString("name").c_str());
prefs.end();
delay(5000);
}*/
for(int i=0;i<5;i++){
GetSerialStuff(Str);
if(Str != ""){
Serial.print("input=> ");
Serial.println(Str);
}
//指令: Config=>
if(Str != ""&& Str.indexOf("Config=>")>-1) {
String pstr = Str.substring(8);
Serial.print("val=> ");
Serial.println(pstr);
prefs.putString("Config", pstr);
//int my_int = pstr.toInt();
}
//指令:Caliper=>
if(Str != ""&& Str.indexOf("Caliper=>")>-1) {
String pstr = Str.substring(7);
Serial.print("Cal=> ");
Serial.println(pstr);
prefs.putString("Caliper", pstr);
}
delay(500); // 延时 100 毫秒
}
Serial.print("ROM=> ");
Serial.println(prefs.freeEntries());//获取空余nvs空间
Serial.println("yes! end!");
}
// 获取串口数据函数
void GetSerialStuff(String& Str) {
String tempStr = ""; // 声明变量 tempStr,用于临时存储串口输入的数据
while(Serial.available()) { // 当串口有数据时,循环执行
tempStr += (char)Serial.read(); // 把读取的串口数据,逐个组合到inStr变量里
}
Str = tempStr; // 把引用指针的变量赋值为 tempStr
}
void loop() {
String tempStr = ""; // 声明变量 tempStr,用于临时存储串口输入的数据
while(Serial.available()) { // 当串口有数据时,循环执行
tempStr += (char)Serial.read(); // 把读取的串口数据,逐个组合到inStr变量里
}
if(tempStr != "") {
// 在串口中输出我们输入的数据,方便观察
Serial.print("input: ");
Serial.println(tempStr);
}
if(tempStr.indexOf("list")>-1) {
Serial.print("gval: ");
Serial.println(prefs.getString("Config").c_str());
}
//GetSerialStuff(Str);
/*
if(Str != "") {
// 在串口中输出我们输入的数据,方便观察
Serial.print("input: ");
Serial.println(Str);
switch ((byte)Str[0]) { // 把输入的字符转换成byte类型,进行对应指令的判断
case 'h': // 串口输入 h 时,输出以下信息
Serial.println("hello every body!");
break;
case 'b': // 串口输入 b 时,输出以下信息
Serial.println("by Lingshunlab.com");
break;
case 't': // 串口输入 t 时,输出以下信息
Serial.println("Thanks for watch");
break;
default: // 没有对应的case时,则输出一下默认信息
Serial.println("Please enter the correct command");
}
}
*/
delay(100); // 延时 100 毫秒
}