Linux项目实战——业务系统(后附百问网课程视频链接)

处理配置文件

一、main函数流程

初始化显示系统------>初始化输入系统------>初始化文字系统------>初始化页面系统------>业务系统

二、业务系统框架

  1. 读取配置文件

  2. 根据配置文件生成按钮、界面

  3. 读取输入事件

  4. 根据输入事件找到按钮

  5. 调用按键的OnPressed函数

三、处理配置文件

  1. 什么是配置文件

在配置文件中有很多行,每一行都有三个参数:
* 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:文件的操作权限,这里也是字符型指针,须在"操作权限"上加双引号。

返回值:

  1. 打开文件成功,则创建一个FILE类型结构的实例,并返回指向该结构实例的指针,程序使用该指针来操作文件;
  2. 打开文件失败,则返回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。

返回值:

  1. 读取成功,返回str;
  2. 读取失败,返回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函数

对于触摸屏事件:

① 分辨是否能被点击

② 修改颜色

对于网络类事件

①根据传入的字符串修改按钮颜色

课程链接:

6-1_页面系统_数据结构抽象_哔哩哔哩_bilibili6-1_页面系统_数据结构抽象是【第6篇】项目实战之七步从零编写带GUI的应用(项目开发|论文参考|C|GUI)的第23集视频,该合集共计33集,视频收藏或关注UP主,及时了解更多相关视频内容。https://www.bilibili.com/video/BV1it4y1Q75z?p=23

相关推荐
Trouvaille ~7 分钟前
【Linux】TCP Socket编程实战(一):API详解与单连接Echo Server
linux·运维·服务器·网络·c++·tcp/ip·socket
羽获飞15 分钟前
从零开始学嵌入式之STM32——9.STM32的时钟系统
stm32·单片机·嵌入式硬件
坚果派·白晓明18 分钟前
在鸿蒙设备上快速验证由lycium工具快速交叉编译的C/C++三方库
c语言·c++·harmonyos·鸿蒙·编程语言·openharmony·三方库
旖旎夜光43 分钟前
Linux(13)(中)
linux·网络
飞睿科技1 小时前
乐鑫智能开关方案解析:基于ESP32-C系列的低功耗、高集成设计
嵌入式硬件·物联网·esp32·智能家居·乐鑫科技
风指引着方向1 小时前
图编译优化全链路:CANN graph-engine 仓库技术拆解
c语言
威迪斯特1 小时前
CentOS图形化操作界面:理论解析与实践指南
linux·运维·centos·组件·图形化·桌面·xserver
一方热衷.1 小时前
在线安装对应版本NVIDIA驱动
linux·运维·服务器
独自归家的兔2 小时前
ubuntu系统安装dbswitch教程 - 备份本地数据到远程服务器
linux·运维·ubuntu
ONE_SIX_MIX2 小时前
ubuntu 24.04 用rdp连接,桌面黑屏问题,解决
linux·运维·ubuntu