您的位置:首页 > 其它

多路温度采集控制系统(3)配置文件

2016-08-29 15:46 253 查看

嵌入式项目实践–多路温度采集控制系统(3)配置文件

本文档对应视频教程多路温度采集系统–配置文件

配置文件使用

菜单程序会读取配置文件数据。

char cmd[16];//命令数据缓冲区
load_dev(g_dev);
while(1){


主控程序会读取与保存数据。

int init_sys(void)
{
printf("init system struct,LED flash.\n");
load_dev(g_dev);
}


g_dev->update_time=cmd.dat;
printf("update_time=%d\n",g_dev->update_time);
save_dev(g_dev);


系统总体数据结构

因为是演示项目,系统功能设计很少,结构体就简单便于实现。后期大家可以实现更多功能,扩展这个结构体。

struct st_sys{
int temp_max[DEF_MAX_CHANNEL];      //设置每路温度报警最大值
float temp_data[DEF_MAX_CHANNEL];   //每路温度
char status[DEF_MAX_CHANNEL];       //每路状态
char update_time;                   //网页刷新秒数
};


配置文件代码

配置文件头文件

#ifndef __TC9000_H_
#define __TC9000_H_

#define CONFIG_FILE "tc9000.cfg" //配置文件名
#define ON 1
#define OFF 0

#define DEF_T_UP 70 //默认温度上限(C)
#define DEF_T_LOW 5 //默认温度下限(C)
#define DEF_U_TIME 5 //默认检测间隔时间(s)
#define DEF_MAX_CHANNEL 4 //采集的路数

//系统总体数据结构
struct st_sys{ int temp_max[DEF_MAX_CHANNEL]; //设置每路温度报警最大值 float temp_data[DEF_MAX_CHANNEL]; //每路温度 char status[DEF_MAX_CHANNEL]; //每路状态 char update_time; //网页刷新秒数 };

int make_default_config(struct st_sys * dev);
int save_dev(struct st_sys * dev);
int load_dev(struct st_sys * dev);

#endif


配置文件实现

#include <string.h>
#include <stdio.h>
#include "config.h"

/*============================================
函数名称:make_default_config
功能:创建系统的配置文件,第一次运行或配置文件不存在
参数:struct st_sys * dev
返回值:0 成功 -1失败

============================================*/

int make_default_config(struct st_sys * dev)
{
int i;
printf("Make default configuration.\n");

memset(dev,0,sizeof(struct st_sys));

for(i=0;i<DEF_MAX_CHANNEL;i++){
dev->temp_max[i] = DEF_T_UP;
dev->temp_data[i] = 0;
dev->status[i] = 0;
}
dev->update_time = DEF_U_TIME;
return save_dev(dev);
}

/*============================================
函数名称:save_dev
功能:保存系统的配置文件
参数:struct st_sys * dev
返回值:0 成功 -1失败
============================================*/

int save_dev(struct st_sys * dev)
{
FILE * fp;
if (NULL == (fp=fopen(CONFIG_FILE, "wb"))){
printf("Config file open null...\n");
return -1;
}
printf("\nSave system data!");
fwrite(dev, sizeof(*dev),1,fp); //write file
fclose(fp);
return 0;
}

/*============================================
函数名称:load_dev
功能:创建系统的配置文件
参数:struct st_sys * dev
返回值:0 成功 -1失败
============================================*/

int load_dev(struct st_sys * dev)
{
FILE *      fp;
memset(dev, 0, sizeof(*dev));

if (NULL == (fp=fopen(CONFIG_FILE, "rb"))){
printf("[load_dev]fopen null....\n");
return make_default_config(dev);
}

if ( sizeof(*dev) != fread(dev,1,sizeof(*dev),fp) ){
printf("[load_dev+]sizeof error...\n");
fclose(fp);
return -1;
}
fclose(fp);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: