如何从 ESP32 NVS 读取 string (const char*)

另请参阅:如何将 string (const char*) 写入 ESP32 NVS

你可以使用此实用函数读取字符串:

read_nvs_cstring.cpp
bool _NVS_ReadString(nvs_handle_t nvs, const char* key, char* value, size_t maxSize) {
    esp_err_t err;
    if((err = nvs_get_str(nvs, key, value, &maxSize)) != ESP_OK) {
        Serial.printf("Failed to read NVS key %s: %s\r\n", key, esp_err_to_name(err));
        return false;
    }
    return true;
}

使用示例

此示例基于如何在 ESP32 上初始化 NVS。最重要的是,它假设你已经初始化了 NVS 并且 myNVS 存在且有效。

read_nvs_usage_example.cpp
char mySerialNo[128] = {0};

_NVS_ReadString(myNVS, "SerialNo", mySerialNo, 128-1);

这会将键为 SerialNo 的 NVS 条目读入缓冲区 mySerialNo。注意我们使用 128-1 作为大小,即使缓冲区大小为 128。这是为了确保缓冲区的最后一个值始终有终止 NUL 字符。

注意 NVS 字符串是长度限定的(即:长度存储在 NVS 中)且不一定是 NUL 终止的。我建议不要在 NVS 中存储 NUL 终止符。


Check out similar posts by category: ESP8266/ESP32