一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

模塊化程序設(shè)計(jì)案例DCIM-3

汽車(chē)電子技術(shù) ? 來(lái)源:玉工講技術(shù) ? 作者: 玉素甫·買(mǎi)買(mǎi)提 ? 2023-02-21 16:23 ? 次閱讀

說(shuō)到模型、模式等概念,我們大概知道什么意思。雖然說(shuō)不出具體定義,但日常生活或成長(zhǎng)過(guò)程中肯定接觸過(guò)。比如,我們從小學(xué)開(kāi)始接觸的紙質(zhì)的考勤表(矩陣,也算是人工智能的根),表格中打勾代表1,空格代表0...。也就是我們幾乎都具備了設(shè)計(jì)模型的能力,但怎么能讓現(xiàn)實(shí)問(wèn)題或需求分解成多個(gè)模型并將他們用代碼標(biāo)識(shí)出來(lái),最終讓計(jì)算機(jī)能夠進(jìn)行處理或計(jì)算這個(gè)過(guò)程離不開(kāi)編程思想及編寫(xiě)程序(函數(shù))。本文以數(shù)據(jù)中心基礎(chǔ)設(shè)施管理系統(tǒng)DCIM(Data Center Infrastructure management)為例,簡(jiǎn)要討論模塊化編程案例。

1、DCIM系統(tǒng)需求及架構(gòu)設(shè)想

在設(shè)計(jì)較復(fù)雜的程序時(shí),一般采用自頂向下的方法,將問(wèn)題劃分為幾個(gè)部分,各個(gè)部分再進(jìn)行細(xì)化,直到分解為較好解決問(wèn)題為止。利用函數(shù),不僅可以實(shí)現(xiàn)程序的模塊化,使得程序設(shè)計(jì)更加簡(jiǎn)單和直觀(guān),而且還可以把程序中經(jīng)常用到的一些計(jì)算或操作編寫(xiě)成通用函數(shù),以供隨時(shí)調(diào)用。

DCIM(數(shù)據(jù)中心基礎(chǔ)設(shè)施管理系統(tǒng))接入數(shù)據(jù)中心電力運(yùn)行、配電監(jiān)控系統(tǒng)、環(huán)境監(jiān)控系統(tǒng)和安裝的設(shè)備等數(shù)據(jù),提供電力容量管理、溫濕度監(jiān)控管理、UPS電池監(jiān)控管理、動(dòng)環(huán)告警管理、設(shè)備管理、數(shù)字運(yùn)維、能耗分析、智能化巡檢、智能運(yùn)營(yíng)等業(yè)務(wù)功能。使整個(gè)數(shù)據(jù)中心的管理更加智能化,提升整體運(yùn)維效率及運(yùn)營(yíng)水平。

DCIM(數(shù)據(jù)中心基礎(chǔ)設(shè)施管理系統(tǒng))應(yīng)采用可靠穩(wěn)定的操作系統(tǒng)及編程語(yǔ)言(例如本例企圖底層用C語(yǔ)言構(gòu)建一樣),以保證系統(tǒng)的通用性和安全性。DCIM應(yīng)采用分層模塊化設(shè)計(jì)架構(gòu),對(duì)整個(gè)數(shù)據(jù)中心進(jìn)行集中管理,并具有良好的擴(kuò)容性,可在滿(mǎn)足現(xiàn)有需求的同時(shí),可根據(jù)后繼不斷擴(kuò)容的需求,快速靈活地接入新設(shè)備、新系統(tǒng)。其架構(gòu)示意圖1如下所示:

圖片

圖1 DCIM模塊化架構(gòu)圖

2、將模塊化架構(gòu)改為功能(函數(shù))

根據(jù)需求構(gòu)建了圖1所示的架構(gòu)之后,接下來(lái)我們通過(guò)編程思想嘗試用函數(shù)來(lái)描述(編程)圖1的各模塊。我們首先用主程序、子程序、子過(guò)程等框架把軟件的主要結(jié)構(gòu)和流程描述出來(lái),并定義和調(diào)試好各個(gè)框架之間的輸入、輸出鏈接關(guān)系。模塊化的目的是為了降低程序復(fù)雜度,使程序設(shè)計(jì)、調(diào)試和維護(hù)等操作簡(jiǎn)單化,將上面模塊改為函數(shù)后的示意圖如下圖2所示:

圖片

圖2 DCIM的函數(shù)示意圖

3、用C語(yǔ)言“實(shí)現(xiàn)”各功能(函數(shù))

用C語(yǔ)言開(kāi)發(fā)軟件系統(tǒng)時(shí),為了方便用戶(hù)大都采用菜單(menu)方式。軟件運(yùn)行時(shí),首先在屏幕上顯示出各種功能,用戶(hù)只要按一些簡(jiǎn)單的鍵,便可以進(jìn)入相應(yīng)的功能,就像在飯店點(diǎn)菜一樣。圖3為上述DCIM模擬程序運(yùn)行后菜單的示意。

圖片

圖3 DCIM模擬程序主菜單

它共有6個(gè)功能,用戶(hù)只要按一個(gè)數(shù)字(如“6”),便可進(jìn)入下一層相應(yīng)的功能——南向接口。該層又是一個(gè)菜單,用戶(hù)繼續(xù)選擇。

圖片

圖4 DCIM模擬程序子菜單

上圖3和4所對(duì)應(yīng)的部分代碼截圖如下,完整代碼詳見(jiàn)本文附件1:

圖片

圖5 DCIM菜單部分代碼

通常程序?qū)崿F(xiàn)時(shí),主菜單由主函數(shù)提供,下面的各級(jí)子菜單由各級(jí)子函數(shù)提供。最末一級(jí)的菜單,才提供一些具體的功能。菜單程序是一種常見(jiàn)的程序。它主要由兩部分內(nèi)容構(gòu)成:

(1)顯示菜單——由一些顯示操作提供。

(2)根據(jù)用戶(hù)的選擇轉(zhuǎn)向相應(yīng)的函數(shù)——由選擇結(jié)構(gòu)實(shí)現(xiàn)。

從這個(gè)過(guò)程可以看出,編程過(guò)程中理解需求并將其改變?yōu)楹侠淼慕Y(jié)構(gòu)(或架構(gòu))看起來(lái)不需要懂代碼而更需要理解業(yè)務(wù)本身,也是非常關(guān)鍵的環(huán)(當(dāng)然編寫(xiě)程序也很重要)。現(xiàn)實(shí)生活中,雖然我們不寫(xiě)程序,但不知不覺(jué)中采用編程思維,比如將一個(gè)復(fù)雜項(xiàng)目分解多個(gè)子項(xiàng)目并制定里程碑事件(整體計(jì)劃),之后按階段計(jì)劃逐步進(jìn)入子項(xiàng)目的實(shí)施推進(jìn)。以上菜單的具體實(shí)現(xiàn)代碼詳見(jiàn)本文附件1所示的dcim.h頭文件和main.c源文件,具體代碼函的意思不再贅述,感興趣者可以自行測(cè)試。在我看來(lái),看此段代碼好比到施工現(xiàn)場(chǎng)看施工過(guò)程一樣,只是在這個(gè)現(xiàn)場(chǎng)中一個(gè)碼農(nóng)剛剛開(kāi)始了“搬磚”任務(wù)。

4、結(jié)束語(yǔ)

也許以上程序給我們產(chǎn)生回到“文本時(shí)代”的感覺(jué)。雖然這樣文本菜單看起來(lái)很過(guò)時(shí)(或很low),但計(jì)算機(jī)專(zhuān)業(yè)人員反而更喜歡這樣簡(jiǎn)單直接或直白的方式跟計(jì)算機(jī)進(jìn)行“交流”,不喜歡中間接入“中介”--圖形化界面。大多數(shù)非專(zhuān)業(yè)用戶(hù)喜歡圖形化界面,也是日常生活中計(jì)算機(jī)常用的形式。

實(shí)際上現(xiàn)在DCIM已經(jīng)跨越了面向過(guò)程和面向?qū)ο蟮木幊趟枷?,開(kāi)始應(yīng)用面向模式的編程思想(即,我們的注意力轉(zhuǎn)向教授智能機(jī)器而不是直接編程,現(xiàn)在討論這些為時(shí)過(guò)早)。圖像化界面程序開(kāi)發(fā)多數(shù)采用面向?qū)ο蟮木幊趟枷?,接下?lái)的文章中進(jìn)一步討論。

附件1:DCIM模擬系統(tǒng)完整代碼

//main.c  源文件
#include 
#include 
#include 
#include "dcim.h"


char printMainMenu();
char printSubMain();


int main() {
  int menuID;
  //init();    //初始化函數(shù),相當(dāng)于建筑工程中的準(zhǔn)備材料并運(yùn)到現(xiàn)場(chǎng)
  while (1) {
    menuID = printMainMenu();
    switch (menuID) {
    case '1': resourMgmt(); break;
    case '2': performanceMgmt(); break;
    case '3': troubleMgmt(); break;
    case '4': CustomerMgmt(); break;
    case '5': pueMgmt(); break;
    case '6':
      while (1) {
        menuID = printSubMain();
        switch (menuID) {
        case '1': DEMSapi(); break;
        case '2': BAapi(); break;
        case '3': PUEapi(); break;
        case '4': DNCCapi(); break;
        case '5': Pwoer(); break;
        }
        if (menuID == '0') break;
      }
      break;
    case '0': exit(EXIT_SUCCESS);
    }
  }
  //fclose(fp);  --關(guān)閉初始化init()函數(shù)中打開(kāi)的文件
  return 0;
}


//打印主菜單
char printMainMenu() {
  char menuID;
  system("cls");
  printf("***********數(shù)據(jù)中心基礎(chǔ)設(shè)施管理系統(tǒng)(DCIM )**********************\\n"); 
  printf("*                                                                *\\n");
  printf("*             ------------------------------------------         *\\n");
  printf("*            |  Data Center Infrastructure management  |         *\\n");
  printf("*             ------------------------------------------         *\\n");
  printf("*                                                                *\\n");
  printf("*                1)資源管理                                      *\\n");
  printf("*                2)性能管理                                      *\\n");
  printf("*                3)故障管理                                      *\\n");
  printf("*                4)客戶(hù)管理                                      *\\n");
  printf("*                5)能效管理                                      *\\n");
  printf("*                6)南向接口                                      *\\n");
  printf("*                0)退出軟件                                      *\\n");
  printf("*                                                                *\\n");
  printf("*            -----------------------------------------           *\\n");
  printf("*                  請(qǐng)?jiān)谏鲜龉δ苤羞x擇(1——6)                    *\\n");
  printf("*                                                                *\\n");
  printf("******************************************************************\\n");
  fflush(stdin);
  menuID = getch();
  return menuID;
}


//打印子菜單
char printSubMain() {
  char menuID;
  system("cls");
  printf("*****************南向接口信息*************************************\\n");
  printf("*                                                                *\\n");
  printf("*                1)動(dòng)力環(huán)監(jiān)控系統(tǒng)                                *\\n");
  printf("*                2)BA樓宇智能化系統(tǒng)                              *\\n");
  printf("*                3)能耗系統(tǒng)                                      *\\n");
  printf("*                4)冷機(jī)群控系統(tǒng)                                  *\\n");
  printf("*                5)電力系統(tǒng)                                      *\\n");
  printf("*                0)返回主菜單                                    *\\n");
  printf("*                                                                *\\n");
  printf("******************************************************************\\n");
  fflush(stdin);
  menuID = getch();
  return menuID;
}


//dcim.h  頭文件需要獨(dú)立放到另一個(gè)文件


int resourMgmt() {


};
  int performanceMgmt() {
    return 0;
  };
  int troubleMgmt() {
    return 0;
  };
  int CustomerMgmt() {
    return 0;
  };
  int pueMgmt() {
    return 0;
  };
  int DEMSapi() {
    return 0;
  };
  int BAapi() {
    return 0;
  };
  int PUEapi() {
    return 0;
  };
  int DNCCapi() {
    return 0;
  };
  int Pwoer() {
    return 0;
  };
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 操作
    +關(guān)注

    關(guān)注

    0

    文章

    43

    瀏覽量

    19026
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3817

    瀏覽量

    82168
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4365

    瀏覽量

    63852
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    模塊化程序

    現(xiàn)在大家寫(xiě)程序都是模塊化嗎,就是不同的模塊放在不同的文件夾里。比如所有的h文件放一起,所有的h文件聲明一起,主程序只有一小段就行,很好的,就是剛開(kāi)始學(xué)習(xí)
    發(fā)表于 11-12 15:15

    VerilogHDL模塊化程序設(shè)計(jì)

    VerilogHDL模塊化程序設(shè)計(jì)中文期刊文章作  者:向兵作者機(jī)構(gòu):[1]綿陽(yáng)職業(yè)技術(shù)學(xué)院,四川綿陽(yáng)621000出 版 物:《科技資訊》 (科技資訊)年 卷 期:2017年 第27期摘  要
    發(fā)表于 05-04 12:06

    《通過(guò)uart協(xié)議理解何為接口設(shè)計(jì)何為模塊化設(shè)計(jì)(封裝)》含程序和視頻

    該視頻以u(píng)art為例,通過(guò)簡(jiǎn)單的協(xié)議來(lái)闡述何為接口協(xié)議,如何進(jìn)行模塊化設(shè)計(jì)(封裝),并完成UART的數(shù)據(jù)發(fā)送和數(shù)據(jù)接收模塊設(shè)計(jì)三個(gè)部分。一、何為接口協(xié)議二、何為模塊化設(shè)計(jì)三、模塊化
    發(fā)表于 07-16 12:37

    嵌入式模塊化程序設(shè)計(jì)的相關(guān)資料分享

    模塊化程序設(shè)計(jì)是指在進(jìn)行程序設(shè)計(jì)時(shí)將一個(gè)大程序按照功能劃分為若干小程序模塊,每個(gè)小程序模塊完成一
    發(fā)表于 11-09 08:20

    C語(yǔ)言模塊化程序設(shè)計(jì)理解

    程序設(shè)計(jì)語(yǔ)言,在模塊的劃分上主要依據(jù)功能(依功能進(jìn)行劃分在面向?qū)ο笤O(shè)計(jì)中成為一個(gè)錯(cuò)誤,牛頓定律遇到了相對(duì)論),C語(yǔ)言模塊化程序設(shè)計(jì)需理解如下概念: ?。?)
    發(fā)表于 12-15 06:34

    C語(yǔ)言模塊化程序設(shè)計(jì)需理解哪些呢

    (依功能進(jìn)行劃分在面向?qū)ο笤O(shè)計(jì)中成為一個(gè)錯(cuò)誤,牛頓定律遇到了>相對(duì)論), C語(yǔ)言模塊化程序設(shè)計(jì)需理解如下概念:(1) 模塊即是一個(gè).c文件和一個(gè).h文件的結(jié)合,頭文件(.h)中是對(duì)于該模塊
    發(fā)表于 12-15 06:04

    嵌入式系統(tǒng)的微模塊化程序設(shè)計(jì)有何作用

    什么是嵌入式系統(tǒng)的微模塊化程序設(shè)計(jì)?嵌入式系統(tǒng)的微模塊化程序設(shè)計(jì)有何作用?
    發(fā)表于 12-24 06:35

    模塊化程序設(shè)計(jì)簡(jiǎn)單解釋

    模塊化程序設(shè)計(jì)模塊化程序設(shè)計(jì)是指在進(jìn)行程序設(shè)計(jì)時(shí)將一個(gè)大程序按照功能劃分為若干小
    發(fā)表于 02-23 06:05

    模塊化程序設(shè)計(jì)

    模塊化程序設(shè)計(jì)思想,單片機(jī)c語(yǔ)言的模塊化設(shè)計(jì),方便移植,將程序封裝備用。
    發(fā)表于 03-22 15:29 ?9次下載

    模塊化程序設(shè)計(jì)

    模塊化程序設(shè)計(jì),利用c語(yǔ)言的移植性好特點(diǎn),更好的利用c語(yǔ)言。
    發(fā)表于 03-23 09:25 ?0次下載

    C語(yǔ)言指針用作函數(shù)參數(shù)模塊化程序設(shè)計(jì)以及增量測(cè)試方法的程序

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語(yǔ)言指針用作函數(shù)參數(shù)模塊化程序設(shè)計(jì)以及增量測(cè)試方法的程序。
    發(fā)表于 12-25 08:00 ?1次下載
    C語(yǔ)言指針用作函數(shù)參數(shù)<b class='flag-5'>模塊化</b><b class='flag-5'>程序設(shè)計(jì)</b>以及增量測(cè)試方法的<b class='flag-5'>程序</b>

    電賽模塊化程序案例下載

    電賽模塊化程序案例下載
    發(fā)表于 05-26 09:41 ?12次下載

    嵌入式軟件開(kāi)發(fā)之模塊化程序設(shè)計(jì)(三)

    模塊化程序設(shè)計(jì)是指在進(jìn)行程序設(shè)計(jì)時(shí)將一個(gè)大程序按照功能劃分為若干小程序模塊,每個(gè)小程序模塊完成一
    發(fā)表于 11-03 21:06 ?10次下載
    嵌入式軟件開(kāi)發(fā)之<b class='flag-5'>模塊化</b><b class='flag-5'>程序設(shè)計(jì)</b>(三)

    c++程序設(shè)計(jì)_基于proteus的51單片機(jī)開(kāi)發(fā)實(shí)例30-模塊化程序設(shè)計(jì)

    1. 基于proteus的51單片機(jī)開(kāi)發(fā)實(shí)例30-模塊化程序設(shè)計(jì)1.1. 實(shí)驗(yàn)?zāi)康?b class='flag-5'>模塊化程序設(shè)計(jì)不知不覺(jué)我們的51單片機(jī)開(kāi)發(fā)實(shí)例已經(jīng)進(jìn)行到第三十篇了,是時(shí)候進(jìn)行一個(gè)總結(jié)和反思了,總結(jié)什
    發(fā)表于 11-21 15:36 ?13次下載
    c++<b class='flag-5'>程序設(shè)計(jì)</b>_基于proteus的51單片機(jī)開(kāi)發(fā)實(shí)例30-<b class='flag-5'>模塊化</b><b class='flag-5'>程序設(shè)計(jì)</b>

    嵌入式軟件架構(gòu)設(shè)計(jì)之模塊化

    模塊化程序設(shè)計(jì)是指在進(jìn)行程序設(shè)計(jì)時(shí)將一個(gè)大程序按照功能劃分為若干小程序模塊,每個(gè)小程序模塊完成一
    的頭像 發(fā)表于 02-15 14:42 ?1197次閱讀
    嵌入式軟件架構(gòu)設(shè)計(jì)之<b class='flag-5'>模塊化</b>