Page 1 of 1

【已解决】关于nvs_get_str读数据串经常失败的问题

Posted: Wed Mar 22, 2023 3:43 am
by ming191
版本V5.0.1,我利用了NVS保存了WiFI的密码和账号,但是我发现经常读不成功地。我看了一下例程,我发现例程只是读某一个BYTE的数据,nvs_get_u8 例如这个读BYTE的接口,是正确的。多次读写都容易成功。但是利用 nvs_get_str 这个读字符串,经常读不出来的,会经常报一个错误 (ESP_ERR_NVS_INVALID_LENGTH)。但是神奇的是,我只要在读前面加上判断,利用printf输出某些信息,然后调用 nvs_get_str 就能读成功,估计这个接口有BUG。你们可以试试。(PS:我曾经尝试在读之前加了延时函数。发现没什么用。)
esp_err_t err;
err = nvs_open("storage", NVS_READWRITE, &my_handle);
if( err != ESP_OK )
printf("Error (%s) opening NVS handle!\n", esp_err_to_name(err));
else
printf("Flash_Write_str open flash succes.\n");

Re: 关于nvs_get_str读数据串经常失败的问题

Posted: Tue Mar 28, 2023 7:20 am
by ESP_WangYX
对于变长数据,请参考这里的说明 https://docs.espressif.com/projects/esp ... PcP6size_t,先获取长度,再查询数据内容。

Re: 关于nvs_get_str读数据串经常失败的问题

Posted: Fri Mar 31, 2023 3:50 am
by ming191
这个方法,我按照里面的例程,先获取了句柄的具体长度。但是最后读出来的数据是错误的。。。。