1.引言
1.1编写目的
ini文件是initialization file的缩写,即初始化文件,是windows系统配置文件所采用的存储格式,但在嵌入式系统下缺少ini文件解析库,需要自己去编写解析库。本文档描述的是minIni开源库,用于指导在嵌入式系Times New Roman统下使用ini文件解析库。
1.2概述
minIni是一种用于读取和写入INI文件的库,minIni占用很少的资源,具有确定的内存占用空间。minIni的主要用途是在运行ROTS(甚至没用任何操作系统)的嵌入式系统上使用。MinIni要求这样的系统提供一种存储和文件I/O系统,但是不需要此文件I/O系统与标准C/C++库兼容。
1.3特点
1)minIni大约是950行代码(包含注释),是一种真正的“迷你”INI文件解析器,非常容易移植到各种嵌入式平台。
2)minIni不需要标准C/C++库的文件I/O函数,且允许通过宏配置配置文件I/O接口。
3)minIni仅使用stack,完全不使用动态内存(malloc)。
4)有C++ binding,能够很好地配合C++使用。
2.使用方法
2.1下载链接
http://GitHub - compuphase/minIni: A small and portable INI file library with read/write support
2.2语法描述
ini配置文件由节、键值对和注释组成,例如:
[section1]
Keyname1=value1
Keyname2=value2
[section2]#section name
Keyname3=value3
Keyname4=value4
1.节(section):
1)所有的键值对都是以节为单位结合在一起的。
2)所有的section名称都是独占一行,且section名字被方括号包围。
3)在section声明后的所有键值对都属于这个section。
4)一个section没有明显的结束标识符,一个section的开始就是上一个section的结束
5)section不能重复,数据通过section去查找,每个section下可以有多个key和value的键值对。
2.键值对:
以键值对的形式存在,每个参数都有一个name和一个value,name和value由等号分隔。
3.注释:
注释使用#或分号表示开始,直到改好结尾全部为注解。
举例:
[eth]
ip=192.168.1.100 #ip地址
netmask=255.255.255.0
Gateway=192.168.1.1
2.3移植方法
以下是整个minIni开源库的文件结构,我们的嵌入式系统采用的是FatFS+freeRTOS系统开发,所以我们在移植的时候只需要minGlue-FatFs.h、minIni.h、minIni.c三个文件,其他头文件是根据不同的平台选择不同的头文件。
图 1 minIni文件结构
将以上提到的三个文件添加到工程目录下,需要做以下修改。
1.MinGlue-Fatfs.h:添加包含stdlib.h、stdio.h和string.h头文件,例外如果需要支持处理浮点数,需要添加以下三行#define语句,如果不需要支持处理浮点,可不添加以下三行#define。
图 2 .minGlue-Fatfs添加头文件
图 3 minGlue-Fatfs.h添加支持处理浮点
2.minIni.h文件
添加#include "minGlue-FatFs.h"文件,同时将minIni.c中的
#if !defined sizearray
#define sizearray(a) (sizeof(a) / sizeof((a)[0]))
#endif
移植到minIni.h头文件中。
2.4测试记录结果
图 4 测试代码
图 5 测试代码输出结果
图 6 配置文件
3.结论
通过以上测试验证,移植成功,但也不敢保证没有其他问题,还需要更进一步的测试验证。