嵌入式多路温湿度监控系统(二配置文件)

config.h 以及config.c文件,实现程序开始时延续了上次运行的状态,每次修改配置后利用文件保存之
#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;   
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值