新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > UPS監(jiān)控軟件設(shè)計(jì)

UPS監(jiān)控軟件設(shè)計(jì)

作者: 時(shí)間:2011-02-20 來源:網(wǎng)絡(luò) 收藏

2.2 軟件實(shí)現(xiàn)

該軟件包含2個(gè)部分:數(shù)據(jù)庫部分和應(yīng)用程序部分。在本程序里面,將使用Microsoft Access 2000來建立數(shù)據(jù)庫,使用VisualBasic6.0來編制應(yīng)用程序。數(shù)據(jù)庫部分包含3個(gè)表格:用戶表,事件日志表和數(shù)據(jù)日志表。用戶表中包含該用戶的帳號,密碼和用戶類型;事件日志表中包含日期,時(shí)間,事件描述,事件處理等各項(xiàng)內(nèi)容;數(shù)據(jù)日志表中包含日期,時(shí)間和UPS的主要運(yùn)行狀態(tài)參數(shù)。

要使用該軟件必須輸入用戶名和密碼,軟件根據(jù)數(shù)據(jù)庫中的資料判斷該用戶的注冊類型,決定該軟件的使用權(quán)限。如果沒有這個(gè)用戶,則請求用戶注冊成為新用戶。用戶注冊時(shí),要填寫一些必要的個(gè)人信息,如果該注冊名已經(jīng)存在,系統(tǒng)將要求采用其它的用戶名重新注冊,保存后存放到用戶表中去。只有系統(tǒng)管理員級別的用戶才能使用該軟件的所有功能,一般用戶只能使用該監(jiān)視方面的功能。

電源監(jiān)控軟件開發(fā)的關(guān)鍵環(huán)節(jié)是如何實(shí)現(xiàn)計(jì)算機(jī)串并口與電源設(shè)備的通信(即計(jì)算機(jī)采集電源設(shè)備送出的狀態(tài)信號,經(jīng)分析處理后在終端上顯示或發(fā)出控制信號送往電源設(shè)備),而最簡單的信息傳送方式就是使用串行通信。VB中提供了一個(gè)重要的通信控件:MSComm。在本程序中使用到該軟件的5個(gè)重要屬性:CommPort,Settings,PortOpen,Input,Output。Settings屬性設(shè)置為“1200,N,8,1”。PortOpen屬性使用前必須打開,用完后必須關(guān)閉。圖3是該監(jiān)控軟件的主流程圖。

圖3 上位機(jī)監(jiān)控軟件主流程圖

該軟件包含對30多種電源事件的處理,處理的方式有:通知系統(tǒng)管理員,執(zhí)行命令文件,發(fā)送電子郵件或傳呼信息給指定的用戶報(bào)警,在嚴(yán)重的情況下執(zhí)行文件自動保存后關(guān)閉系統(tǒng)。這里主要通過調(diào)用系統(tǒng)的API函數(shù)來實(shí)現(xiàn)。實(shí)際上,在整個(gè)軟件的編寫過程中,很多子程序都用到了相應(yīng)的API函數(shù)調(diào)用。使用Windows API,可以訪問常用代碼庫,使用通過測試的和認(rèn)證過的代碼,獲得跨平臺的兼容性,得到一個(gè)更小巧的應(yīng)用程序。

該軟件通過輸出電流來推算負(fù)載百分比,而蓄電池的電壓可以反映電池的剩余容量,所以程序通過測量電池電壓并查表來近似推算蓄電池的剩余容量。并通過當(dāng)前輸出電流和計(jì)算得到的電池剩余容量估算出電池的剩余放電時(shí)間,再根據(jù)得到的剩余放電時(shí)間來決定是否需要進(jìn)行計(jì)算機(jī)的自動保存操作。如果自動存檔時(shí),檔案未賦予文件名,軟件以temp格式暫存或離開,供電系統(tǒng)正常后,用戶還可查看上次關(guān)閉Windows時(shí)關(guān)閉的應(yīng)用程序名稱和儲存的檔案。

由于該軟件要適應(yīng)各種主流操作系統(tǒng),如Win9X和Win2000。當(dāng)文件自動保存后,要退出操作系統(tǒng),安全關(guān)機(jī)。這時(shí),要注意兩類操作系統(tǒng)的區(qū)別。在Win9X中退出操作系統(tǒng),只需調(diào)用一個(gè)底層的API函數(shù)ExitWindowsEx()就可以了,但是Win2000用的是NT的內(nèi)核,Windows NT不象Win9X和DOS那樣可以隨意進(jìn)行底層的操作,它非常注重系統(tǒng)每個(gè)進(jìn)程的權(quán)利(這也是為什么Win9X和DOS底下病毒成災(zāi)的原因),在Win2000下,要退出操作系統(tǒng),必須賦予它足夠的權(quán)限。圖4是關(guān)機(jī)子程序流程圖。

圖4 關(guān)機(jī)子程序流程圖

為了繪制UPS各個(gè)運(yùn)行參數(shù)的實(shí)時(shí)平滑曲線,得到掃描的效果,本程序中使用了一個(gè)重要的API函數(shù)BitBlt。在主窗體的菜單中,“窗口”主菜單在設(shè)計(jì)時(shí),選取“顯示窗口列表”項(xiàng)。這樣,不用編寫任何代碼,“窗口”主菜單下就會自動顯示MDI窗體的已打開子窗體的列表。其它子菜單的程序也很簡單,只需調(diào)用MDIForm對象的Arrange方法就可以了。“語言”菜單下的“英文”或簡體中文,編程的思路和過程是一樣的,只不過是做做翻譯工作而已。對于菜單中的“關(guān)于UPS監(jiān)控軟件”,主要是獲得注冊表中的一些系統(tǒng)信息,Visual Basic開發(fā)軟件本身也帶有這方面的例示窗體和源代碼,可以根據(jù)需要作相應(yīng)的改變。

3 結(jié)語

該軟件在Windows98和Windows2000下調(diào)試通過,其功能也基本上能滿足一般UPS監(jiān)控系統(tǒng)的要求。不過,程序運(yùn)行時(shí)總覺得不是很流暢,這是因?yàn)楫?dāng)一個(gè)窗體界面的設(shè)計(jì)中要容納多張圖片和多個(gè)控制時(shí),將出現(xiàn)窗體顯示速度明顯變慢的現(xiàn)象。為此,將“界面設(shè)計(jì)窗體”和“功能實(shí)現(xiàn)窗體”分開處理,基本可以解決這一問題。即在設(shè)計(jì)時(shí)根據(jù)需要設(shè)計(jì)漂亮的界面,但是在全屏運(yùn)行時(shí)將該界面復(fù)制到剪貼板上,然后將其作為一張圖片粘貼在功能實(shí)現(xiàn)窗體的背景上。這樣,從外觀上看效果相同,但是顯示速度明顯加快。不過,不可避免地增加了程序本身的存儲容量。


上一頁 1 2 下一頁

關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉