STM32F429IGT6的Fatfs文件系统保存cJSON内容

13,636次阅读
没有评论

共计 2499 个字符,预计需要花费 7 分钟才能阅读完成。

关于下载 RT-Thread 和移植 Fatfs 文件系统可以参考博客:

STM32F429IGT6 的 RT-Thread 移植 Fatfs 文件系统

一、下载 和配置 cJSON 开源文件

1、下载文件

通过 github 网站:GitHub – DaveGamble/cJSON: Ultralightweight JSON parser in ANSI C

 在项目 rt-thread-masterbspstm32stm32f429-fire-challengerapplications 创建 cJSON 文件夹用于保存 cJSON.ccJSON.h。

STM32F429IGT6 的 Fatfs 文件系统保存 cJSON 内容

 2、配置文件

 在项目中创建如下目录并导入相关文件。

STM32F429IGT6 的 Fatfs 文件系统保存 cJSON 内容

二、函数解析和调用

1、函数例子

下列函数创建出的 cjson 内容为,大家可以自己对应着改,就不过多解释了:

{
    “SN”:    “01001”,
    “StationNumber”:    “01”,
    “Data”:    {
        “LargeData”:    [{
                “TestID”:    “01”,
                “PulseInterval”:    “500ms”,
            }],
        “SmallData”:    [{
                “TestID”:    “01”,
                “PulseInterval”:    “500ms”,
            }],
        “FullData”:    {
            “StartTime”:    “202408131522”,
            “EndTime”:    “202408131526”,
        }
    },
    “IsDataComplete”:    true
}

char* create_json_data(void)
{
    // Create the root JSON object
    cJSON *root = cJSON_CreateObject();

    // Add "SN" and "StationNumber"
    cJSON_AddStringToObject(root, "SN", "01001");
    cJSON_AddStringToObject(root, "StationNumber", "01");

    // Create the "Data" object
    cJSON *data = cJSON_CreateObject();
    cJSON_AddItemToObject(root, "Data", data);

    // Create the "LargeData" array
    cJSON *largeData = cJSON_CreateArray();
    cJSON_AddItemToObject(data, "LargeRData", largeData);

    // Create and add an object to "LargeData" array
    cJSON *largeEntry = cJSON_CreateObject();
    cJSON_AddItemToArray(largeData, largeEntry);
    cJSON_AddStringToObject(largeEntry, "TestID", "01");
    cJSON_AddStringToObject(largeEntry, "PulseInterval", "500ms");


    // Create the "SmallRainfallData" array
    cJSON *smallData = cJSON_CreateArray();
    cJSON_AddItemToObject(data, "SmallData", smallData);

    // Create and add an object to "SmallData" array
    cJSON *smallRainfallEntry = cJSON_CreateObject();
    cJSON_AddItemToArray(smallData, smallEntry);
    cJSON_AddStringToObject(smallEntry, "TestID", "01");
    cJSON_AddStringToObject(smallEntry, "PulseInterval", "500ms");


    // Create the "ProcessData" object
    cJSON *fullProcessData = cJSON_CreateObject();
    cJSON_AddItemToObject(data, "ProcessData", ProcessData);
    cJSON_AddStringToObject(ProcessData, "StartTime", "202408131522");
    cJSON_AddStringToObject(ProcessData, "EndTime", "202408131526");

    // Add "IsDataComplete"
    cJSON_AddBoolToObject(root, "IsDataComplete", 1);

    // Convert JSON object to string
    char *jsonString = cJSON_Print(root);

    // Free the cJSON object
    cJSON_Delete(root);

    return jsonString;
}

 2、函数调用并转字符串

char *json_data = create_json_data();
size_t json_length = strlen(json_data) + 1;  // 计算 JSON 数据长度,包含 '' 结束符
rt_kprintf("length:%d,%srn", json_length,json_data);

uint8_t WriteBuffer[700];  // 创建 uint8_t 数组      
memcpy(WriteBuffer, json_data, strlen(json_data) + 1);  // 复制数据到 uint8_t 数组
// 使用完毕后释放内存
free(json_data);

原文地址: STM32F429IGT6 的 Fatfs 文件系统保存 cJSON 内容

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-11-03发表,共计2499字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)