处理配置文件
一、main函数流程
初始化显示系统------>初始化输入系统------>初始化文字系统------>初始化页面系统------>业务系统
二、业务系统框架
-
读取配置文件
-
根据配置文件生成按钮、界面
-
读取输入事件
-
根据输入事件找到按钮
-
调用按键的OnPressed函数
三、处理配置文件
- 什么是配置文件
在配置文件中有很多行,每一行都有三个参数:
* name: 按钮的名字
* can_be_touch:按钮能否被触摸
* commmand:当模块被测试时,无论是否通过,都会执行这条命令
2.如何处理配置文件
对于配置文件的每一行,都创建一个ItemCfg结构体
cpp
typedef struct ItemCfg {
int index;
char name[100];
int bCanBeTouched;
char command[100];
}ItemCfg, *PItemCfg;
对外提供函数
cpp
int GetItemCfgCount(void);
PItemCfg GetItemCfgByIndex(int index);
PItemCfg GetItemCfgByName(char *name);
实现int ParseConfig(char *strFileName)的步骤及关键函数。
1.打开配置文件
cpp
FILE *fopen(const char *pathname, const char *mode);
fopen函数功能: 打开一个文件,并返回一个指向FILE
类型的指针,用于后续的读写操作
🔺fopen()参数说明:
① const char *pathname:文件名/路径,这是char型指针,须在"文件名/路径"上加上双引号;
② const char *mode:文件的操作权限,这里也是字符型指针,须在"操作权限"上加双引号。
返回值:
- 打开文件成功,则创建一个FILE类型结构的实例,并返回指向该结构实例的指针,程序使用该指针来操作文件;
- 打开文件失败,则返回NULL
cpp
char *fgets( char *str, int num, FILE *stream );
fgets函数功能: 为从指定的流中读取数据,每次读取一行。其原型为:char *fgets(char *str, int n, FILE *stream);从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内
🔺fgets()参数说明:
① 参数str是一个指向字符数组的指针,类型为char*;str指向的字符数组用于存储从指定流stream读取的字符串;
② 参数num是读取的最大字符数(包括最后的空字符'\0'),类型为int型;把num设置为str指向的字符数组的大小,可防止内存访问越界;
③ 参数stream是fgets()函数要读取的流,类型为FILE*;stream可以是文件流或标准输入流;当是文件流时,stream就是fopen()函数的返回值;当是标准输入流时,stream就是stdin。
返回值:
- 读取成功,返回str;
- 读取失败,返回NULL。
2.读取每一行
3.忽略注释
4.处理
cpp
int sscanf(const char *str, const char *format,......);
**sscanf的函数功能:**从一个字符串中读进于指定格式相符的数据。利用它可以从字符串中取出整数、浮点数和字符串。
🔺sscanf()参数说明:
① 参数str为要读取数据的字符串;
② format为用户指定的格式;
③ argument为变量,用来保存读取到的数据。
返回值:
1.成功则返回参数数目;
2.失败则返回-1,错误原因存于errno 中.。
生成界面
计算出单个按钮的width/height
居中显示,计算每个按钮的Region
**sqrt函数:**求给定值的平方根
cpp
double sqrt(double x);
处理输入事件
1.处理流程:
读取输入事件
* 根据输入事件找到按钮
调用按钮的OnPressed函数
2.编写GetButtonByInputEvent
对于触摸屏事件,需要通过判断触点所在的按钮区域;
对于网络类事件,需要根据传入的字符串跟按键名字比较。
3.编写MainPage自己的OnPressed函数
对于触摸屏事件:
① 分辨是否能被点击
② 修改颜色
对于网络类事件
①根据传入的字符串修改按钮颜色