16-NVS Iterators (迭代器)

本文介绍了ESP32-S3的NVS库中的迭代器功能,展示了如何使用nvs_entry_find,nvs_entry_next和nvs_entry_info函数遍历NVS分区中的键值对,以及释放迭代器的方法。
摘要由CSDN通过智能技术生成

ESP32-S3 NVS迭代器

什么是NVS迭代器?🤔

ESP32-S3的NVS库提供了迭代器,允许你根据指定的分区名称、命名空间和数据类型轮询NVS中存储的键值对。使用方法类似于c++里的迭代器(iterator)用于遍历容器,而NVS的迭代器同样用来遍历nvs。

如何使用NVS迭代器?

你可以使用以下函数执行相关操作:

  • nvs_entry_find:返回一个不透明句柄,用于后续调用nvs_entry_nextnvs_entry_info函数;
  • nvs_entry_next:返回指向下一个键值对的迭代器;
  • nvs_entry_info:返回每个键值对的信息。

如果未找到符合标准的键值对,nvs_entry_findnvs_entry_next将返回NULL,此时不必释放迭代器。若不再需要迭代器,可使用nvs_release_iterator释放迭代器。

✨对于nvs_entry_find()函数它的参数如下:

  • NVS_DEFAULT_PART_NAME:这是一个字符串,表示要搜索的NVS分区的名称。在大多数情况下,我们使用默认的NVS分区,其名称为"NVS_DEFAULT_PART_NAME"。

  • “namespace”:要搜索的命名空间的名称。在NVS中,键值对被组织在命名空间中。这个参数可以是任何你在NVS中定义的命名空间的名称。

  • NVS_TYPE_ANY:这是一个枚举值,表示要搜索的键值对的数据类型。

使用方法如下

nvs_iterator_t it = nvs_entry_find(NVS_DEFAULT_PART_NAME, "namespace", NVS_TYPE_ANY);
while (it != NULL) {
    char key[NVS_KEY_MAX_SIZE], value[64];
    nvs_entry_info_t info;
    nvs_entry_info(it, &info);
    it = nvs_entry_next(it);
    strncpy(key, info.key, NVS_KEY_MAX_SIZE);
    size_t length = sizeof(value);
    nvs_get_str(my_handle, key, value, &length);
    printf("Key = %s, Value = %s\n", key, value);
}
nvs_release_iterator(it);

首先使用nvs_entry_find函数找到第一个键值对。然后,我们使用nvs_entry_next函数在同一命名空间中查找下一个键值对,直到没有更多的键值对为止。对于每个找到的键值对,我们使用nvs_entry_info函数获取其信息,然后打印出键和值。最后,我们使用nvs_release_iterator函数释放迭代器。

结论

官方手册:👇
NVS迭代器

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宁子希

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值