91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-07-20 16:58:10 來源:網絡 閱讀:408 作者:中國神漢 欄目:編程語言

嵌入式項目實踐–多路溫度采集控制系統(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

汝州市| 马鞍山市| 涟水县| 鹤山市| 公主岭市| 开远市| 台东县| 肥城市| 长岛县| 武乡县| 恩平市| 神木县| 集安市| 舒城县| 泰安市| 炎陵县| 黄冈市| 鄯善县| 辉南县| 临猗县| 香港| 晋城| 运城市| 永清县| 绥德县| 蓝山县| 西畴县| 那坡县| 安吉县| 清河县| 炉霍县| 黄浦区| 都兰县| 武城县| 邻水| 河东区| 万山特区| 巴彦淖尔市| 资中县| 石家庄市| 齐河县|