关闭

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

标签: 嵌入式项目配置文件文件编程91创客
634人阅读 评论(0) 收藏 举报
分类:

嵌入式项目实践–多路温度采集控制系统(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;   
}
0
0
查看评论

多路温度采集的实现(原理图+程序源代码)

实验原理图: 实验源代码: /**************************************************************************************/ /*单片机采用STC89C52,晶振为12MHz。P1.0与DS18B20的数...
  • pengrui18
  • pengrui18
  • 2012-06-10 07:37
  • 4651

多路温度采集控制系统(6)串口采集

嵌入式项目实践–多路温度采集控制系统(6)串口采集串口采集温度数据 整个系统一共要采集4路温度数据,其中1、2路为串口采集。 因为只使用一个51单片机温湿度采集模块,程序中就实现一个串口采集线程。 注:如果没有真实的串口采集模块,可以在PC机编写串口程序产生随机数据模拟,但要使用US...
  • Tony_Shen
  • Tony_Shen
  • 2016-08-30 22:49
  • 575

多路温度采集控制系统(7)网络采集

嵌入式项目实践–多路温度采集控制系统(7)网络采集网络采集程序代码 头文件 #ifndef __TC9000_NET_H_ #define __TC9000_NET_H_#define DEF_PORT_8848 8848int socket_init(int port);//网络初始化 ...
  • Tony_Shen
  • Tony_Shen
  • 2016-08-30 23:11
  • 611

基于STM32与DS18B20的温度采集

SystemInit();//系统时钟配置 delay_init(72);//系统延时函数初始化 Usart_Init(115200);//串口初始化 Beep_Init();//蜂鸣器初始化 LCD_Init();//显示屏初始化 Key_Init();//按键初始化 ds18b20_start(...
  • u011992534
  • u011992534
  • 2016-03-14 12:28
  • 788

多路温度采集控制系统(4)菜单界面

嵌入式项目实践–多路温度采集控制系统(4)菜单界面菜单界面菜单显示 printf("\nTC9000 湿温度控制系统V1.0"); printf("\n [1] 报警设置"); printf("\n...
  • Tony_Shen
  • Tony_Shen
  • 2016-08-29 16:40
  • 827

多路温度采集控制系统(2)需求分析

嵌入式项目实践–多路温度采集控制系统(2)需求分析 项目实践流程: 1.设计项目需求文档 说明项目设计目的,项目功能,项目模块,实现技术。 2.项目编码设计 程序要求模块结构化(函数),编码风格良好,多文件结构实现。 3.项目测试 设计测试用例,说明测试步骤,测...
  • Tony_Shen
  • Tony_Shen
  • 2016-08-29 15:10
  • 1091

多路温度采集控制系统(1)项目介绍

嵌入式项目实践–多路温度采集控制系统(1)项目介绍 项目实践说明: 本实践项目是嵌入式开发培训(阶段1)基础应用开发视频课程的综合实践项目。 项目开发使用的技术知识点包括:C语言编程,文件编程,串口编程,网络编程,多线程编程,进程间通信,嵌入式交叉开发,嵌入式Web服务器开发,HTM...
  • Tony_Shen
  • Tony_Shen
  • 2016-08-29 11:53
  • 1346

多路温度采集控制系统(5)进程通信

嵌入式项目实践–多路温度采集控制系统(5)进程通信 整个项目运行时,有三个进程:主控服务程序,菜单界面程序,网页监控程序。 进程间通信的功能代码由主控程序中的void* ipcs_pro(void* arg) 线程完成。 通信进程对象 消息队列菜单界面传送网页更新时间,四路温度报警上限...
  • Tony_Shen
  • Tony_Shen
  • 2016-08-30 22:26
  • 596

多路温度采集控制系统(8)网页界面

嵌入式项目实践–多路温度采集控制系统(8)网页界面网页界面 网页界面html源码 <TABLE WIDTH=800 BORDER=0 CELLPADDING=0 CELLSPACING=0> <TR> <TD COLSPAN=5><IMG SRC=&qu...
  • Tony_Shen
  • Tony_Shen
  • 2016-08-31 10:41
  • 859

PT100温度采集电路设计

本文章只做交流用,如果有错误欢迎回帖指出或加入QQ群143586739. 微信公众号:micropoint8. PT100是正温度系数的热敏电阻,顾名思义,随着温度的升高,电阻的阻值变大;相反,如果随着温度的升高,电阻的阻值变小,就是负温度系数的热敏电阻。之所以叫做PT100,是因为在0度时其阻...
  • zhenxing2000
  • zhenxing2000
  • 2016-03-05 21:07
  • 4532
    个人资料
    • 访问:49783次
    • 积分:1071
    • 等级:
    • 排名:千里之外
    • 原创:58篇
    • 转载:3篇
    • 译文:0篇
    • 评论:5条
    博客专栏
    最新评论