Вы можете найти размер значения, хранящегося в ESP32 NVS, выполнив nvs_get_blob() с length, установленным на указатель на переменную с содержимым 0, и out_value, установленным на nullptr. nvs_get_str() также работает, единственное отличие — тип аргумента out_value, что вообще не имеет значения.
Легче понять, если вы посмотрите на эту пример функции:
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) {
// Not found, no error
return 0;
} else {
// Actual error, log & return 0
printf("Failed to get size of NVS key %s: %s\r\n", key, esp_err_to_name(err));
return 0;
}
}
return valueSize;
}Пример использования
Это предполагает, что вы настроили myNvs, как мы показали в нашем предыдущем посте Как инициализировать NVS на ESP32
nvs_usage_example.cpp
size_t myKeySize = NVSGetSize(myNvs, "MyKey");
Check out similar posts by category:
ESP8266/ESP32
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow