AI机器人小智
nvs_get_str(nvs_handle_t handle, const char *key, char *out_value, size_t *length)(句柄, 键, 值, 长度)nvs_find_key(nvs_handle_t handle, const char *key, nvs_type_t *out_type)(句柄, 键, 查找的数据类型)(2) out_value作为容
NVS
初始化可参考 Espressif\frameworks\esp-idf-v5.3.1\examples\storage\nvs_rw_value
void Dri_NVS_init(void)
{
// NVS整体初始化
esp_err_t err = nvs_flash_init();
if (err == ESP_ERR_NVS_NO_FREE_PAGES || err == ESP_ERR_NVS_NEW_VERSION_FOUND)
{
// NVS partition was truncated and needs to be erased
// Retry nvs_flash_init
nvs_flash_erase();
err = nvs_flash_init();
}
// 开辟一块空间
nvs_open("storage", NVS_READWRITE, &my_handle);
}
NVS常用函数
1. 向nvs写入数据
nvs_set_str(nvs_handle_t handle, const char *key, const char *value)(句柄, 键, 值)
一般写入数据后需要提交数据, 否则数据只在缓存中
nvs_commit(nvs_handle_t handle)
2. 从nvs读取数据
nvs_get_str(nvs_handle_t handle, const char *key, char *out_value, size_t *length)(句柄, 键, 值, 长度)
(1) 当length值为0,返回非法长度错误
(2) out_value作为容器存储读取出的数据,当out_value为空时,只返回读取的数据长度
(3) 当容器的大小小于读取数据的长度时,只返回读取数据长度,防止产生越界导致程序崩溃, 并返回 非法长度错误
3. 在nvs中查找关键词
nvs_find_key(nvs_handle_t handle, const char *key, nvs_type_t *out_type)(句柄, 键, 查找的数据类型)
cJSON
cJSON_CreateObject() 是 cJSON 库中用于创建新 JSON 对象的函数,返回指向新对象的指针。创建后需通过 cJSON_Delete() 释放内存。
cJSON *root_json = cJSON_CreateObject();
该函数在内存中分配空间并初始化一个空的 JSON 对象,返回的指针可用于后续添加键值对。
cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item)是 cJSON 库中用于向对象添加子项的函数。
参数说明
- object:目标对象,需指向已创建的 cJSON 结构体。
- string:子项名称(键名),需为 const char* 类型。
-
item:子项内容,需为 cJSON* 类型,可通过其他函数(如
cJSON_CreateNumber
、cJSON_CreateString
等)创建。
该函数将子项添加到对象中,若键名已存在则更新对应值,否则创建新键。
更多推荐
所有评论(0)