Die NVS-Bibliothek (ESP32 IDF Nonflyile Storage) wurde entwickelt, um Schlüsselwertpaare in Blitz zu speichern.
1. Merkmale
2. ESP32 NVS
3. Grundnutzung
4. Erste Schritte
5. Beispiel
6. Beitrag
7. Lizenz
NVS arbeitet mit Schlüsselwertpaaren. Schlüssel sind ASCII -Zeichenfolgen, die maximale Schlüssellänge beträgt derzeit 15 Zeichen. Werte können einen der folgenden Typen haben:
NVS weist jedes Schlüsselwertepaar einem der Namespaces zu. Namespace -Namen folgen den gleichen Regeln wie Schlüsselnamen, dh die maximale Länge beträgt 15 Zeichen. Darüber hinaus kann es in einer NVS -Partition nicht mehr als 254 verschiedene Namenspaces geben.
#include <stdlib.h>
#include "esp_check.h"
#include "esp_log.h"
#include "non_volatile_storage.h"
static const char * TAG = "app_main" ;
void app_main ( void )
{
ESP_ERROR_CHECK ( nvs_init ());
// Float
float write_float = 123456.789 ;
if ( nvs_write_float ( "namespace_1" , "key_1" , write_float ) == ESP_OK ) {
ESP_LOGI ( TAG , "Successfully write float to NVS" );
} else {
ESP_LOGE ( TAG , "Failed to write float to NVS" );
}
float read_float ;
if ( nvs_read_float ( "namespace_1" , "key_1" , & read_float ) == ESP_OK ) {
ESP_LOGI ( TAG , "Successfully read float from NVS: %f" , read_float );
} else {
ESP_LOGE ( TAG , "Failed to read float from NVS" );
}
// String
char * write_string = "Hello, World!" ;
if ( nvs_write_string ( "namespace_1" , "key_2" , write_string ) == ESP_OK ) {
ESP_LOGI ( TAG , "Successfully write string to NVS" );
} else {
ESP_LOGE ( TAG , "Failed to write string to NVS" );
}
char * read_string = NULL ;
if ( nvs_read_string ( "namespace_1" , "key_2" , & read_string ) == ESP_OK ) {
ESP_LOGI ( TAG , "Successfully read string from NVS: %s" , read_string );
} else {
ESP_LOGE ( TAG , "Failed to read string from NVS" );
}
// IMPORTANT NOTE!: This applies ONLY to strings. Remember to delete the pointer to avoid a memory leak.
free ( read_string );
// Blob
#define MAX_STRING_LENGTH 10
typedef struct {
char name [ MAX_STRING_LENGTH ];
uint32_t id ;
} person_t ;
const person_t write_blob = {
. name = "Joe" ,
. id = 123 ,
};
if ( nvs_write_blob ( "namespace_1" , "key_3" , & write_blob , sizeof ( person_t )) == ESP_OK ) {
ESP_LOGI ( TAG , "Successfully write blob to NVS" );
} else {
ESP_LOGE ( TAG , "Failed to write blob to NVS" );
}
person_t read_blob = {};
if ( nvs_read_blob ( "namespace_1" , "key_3" , & read_blob , sizeof ( person_t )) == ESP_OK ) {
ESP_LOGI ( TAG , "Successfully read blob from NVS: name:%s, id:%d" , read_blob . name , read_blob . id );
} else {
ESP_LOGE ( TAG , "Failed to read blob from NVS" );
}
}Um mit dem ESP32 -Task -Monitor -Projekt zu beginnen, benötigen Sie einen ESP32 -Mikrocontroller und einen Host -Computer, der Python ausführt. Sie müssen auch das ESP-IDF-Entwicklungsrahmen und die erforderlichen Python-Pakete installieren.
git clone git @ github . com : VPavlusha / ESP32_NVS . git cd ESP32_NVS / example
idf . py build idf . py - p PORT [ - b BAUD ] flash Ersetzen Sie Port durch den seriellen Portnamen der ESP32 -Board. Sie können auch den Flieger -Baudrate ändern, indem Sie Baud durch die benötigte Baudrate ersetzen. Der Standard -Baudrate beträgt 460800.
idf . py - p < PORT > monitorVergessen Sie nicht, den Port durch Ihren seriellen Portnamen zu ersetzen.
Weitere Informationen zum Erstellen von Projekten: ESP-IDF-Programmierhandbuch.
Dieses Projekt enthält ein Beispiel, das die Funktionalität der Task -Monitor -Bibliothek zeigt. Dieses Beispiel bietet eine praktische Demonstration der Verwendung der NVS -API zum Schreiben/Lesen von Daten zu/von NVS in Ihren eigenen Anwendungen.
Beiträge zum ESP32 NVS -Projekt sind willkommen. Wenn Sie einen Fehler finden oder eine Feature -Anfrage haben, senden Sie bitte ein Problem auf der Github -Seite des Projekts. Wenn Sie Code beitragen möchten, senden Sie bitte eine Pull -Anfrage.
Das ESP32 NVS -Projekt ist im Rahmen der MIT -Lizenz lizenziert. Weitere Informationen finden Sie in der MIT -Lizenzdatei.