温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-07-20 16:58:10 来源:网络 阅读:439 作者:中国神汉 栏目:编程语言

嵌入式项目实践–多路温度采集控制系统(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


配置文件实现

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;    }


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI