• 配置文件


    下面部分内容引用来自 LinuxZn 嵌入式大杂烩

    常见的配置文件有三种类型:.INI,JSON,LUR

    一 INI介绍与使用:

      .ini 文件是 Initialization File 的缩写,即初始化文件。INI文件由节、键、值组成,注解使用分号表示(;)。例如:

     INI文件可以借助inih解析器来对其进行解析。用法是将其下载解压后的ini.c 与 ini.h 放到我们的工程下,用以下示例来将配置文件Ini中的内容读出来给我们的工程来用

     1 // 微信公众号:嵌入式大杂烩
     2 #include <stdio.h>
     3 #include <stdlib.h>
     4 #include <string.h>
     5 #include "ini.h"
     6 
     7 typedef struct
     8 {
     9     const char* ip_addr;
    10     const char* name;
    11     int num;
    12 } configuration;
    13 
    14 static int handler(void* user, const char* section, const char* name,
    15                    const char* value)
    16 {
    17     configuration* pconfig = (configuration*)user;
    18 
    19     #define MATCH(s, n) strcmp(section, s) == 0 && strcmp(name, n) == 0
    20     if (MATCH("ip", "ip_addr")) 
    21     {
    22         pconfig->ip_addr = strdup(value);
    23     } 
    24     else if (MATCH("test", "name")) 
    25     {
    26         pconfig->name = strdup(value);
    27     } 
    28     else if (MATCH("test", "num")) 
    29     {
    30         pconfig->num = atoi(value);
    31     } 
    32     else 
    33     {
    34         return 0;  /* unknown section/name, error */
    35     }
    36 
    37     return 1;
    38 }
    39 
    40 int main(int argc, char* argv[])
    41 {
    42     configuration config;
    43     config.ip_addr = NULL;  /* set defaults */
    44     config.name = NULL;
    45     config.num = 0;
    46 
    47     if (ini_parse("ip.ini", handler, &config) < 0) 
    48     {
    49         printf("Can't load 'ip.ini'\n");
    50         return 1;
    51     }
    52     printf("Config loaded from 'ip.ini': ip_addr = %s, name = %s, num = %d\n",
    53         config.ip_addr, config.name, config.num);
    54 
    55     if (config.ip_addr)
    56         free((void*)config.ip_addr);
    57     if (config.name)
    58         free((void*)config.name);
    59 
    60     return 0;
    61 }
    View Code

     二 JSON:

      JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,实际就是KV键值对组成的字符串,有带空格和不带空格格式:前者在打印输出时使用,直观清晰,当然如果结构复杂,还需要借助在线树形数据分析工具,但是比较浪费存储空间,网络传输时效率不高;不带空格的此时优势就体现出来了,效率高占用存储小。

      JSON简单的组包和解包可以用C语言的字符串库函数就可以,复杂的要考CJSON,有完整的组包解包函数。示例:例说嵌入式实用知识之JSON数据

            既然JSON可以作为配置文件,就是以JSON格式写成的文本文件如txt,以某种形式(ftp或者U盘,Ymode文件传输)给嵌入式设备,嵌入式设备读文件到字符串存储缓冲区,然后用解包函数从该存储中解析出变量(字符串,整数)然后给嵌入式程序中的结构体变量,从而起到配置作用;对于嵌入式设备通过网络向外传输时是个反过程,即将变量的值打包成json格式不带空格的字符串,然后调用网络发送出去

  • 相关阅读:
    DataGridViewer表格中设置ProgressBar显示进度百分比和修改进度条颜色
    excel操作
    sql的时间
    DateTime的各种用法
    DataGridViewer表格中将Button设置为不可用
    OpenCV特征检测和特征匹配
    切片
    c#命名规范
    Remove Linked List Elements
    Remove Nth Node From End of List
  • 原文地址:https://www.cnblogs.com/jieruishu/p/15876333.html
Copyright © 2020-2023  润新知