Länge / Größe eines NVS-Werts auf ESP32 abrufen

English Deutsch

Sie können die Größe eines im ESP32-NVS gespeicherten Werts ermitteln, indem Sie nvs_get_blob() mit length gesetzt auf einen Zeiger auf eine Variable mit Inhalt 0 und out_value gesetzt auf nullptr aufrufen. nvs_get_str() funktioniert ebenfalls, der einzige Unterschied ist der Typ des out_value-Arguments, was überhaupt keine Rolle spielt.

Es ist leichter zu verstehen, wenn Sie sich diese Beispielfunktion ansehen:

nvs_get_size.cpp
size_t NVSGetSize(nvs_handle_t nvs, const char* key) {
    esp_err_t err;
    size_t valueSize = 0;
    if((err = nvs_get_str(nvs, key, nullptr, &valueSize)) != ESP_OK) {
        if(err == ESP_ERR_NVS_NOT_FOUND) {
            // Nicht gefunden, kein Fehler
            return 0;
        } else {
             // Tatsächlicher Fehler, loggen & 0 zurückgeben
            printf("Failed to get size of NVS key %s: %s\r\n", key, esp_err_to_name(err));
            return 0;
        }
    }
    return valueSize;
}

Verwendungsbeispiel

Dies setzt voraus, dass Sie myNvs eingerichtet haben, wie in unserem vorherigen Post NVS auf ESP32 initialisieren gezeigt.

nvs_usage_example.cpp
size_t myKeySize = NVSGetSize(myNvs, "MyKey");

Check out similar posts by category: ESP8266/ESP32