UPS監(jiān)控軟件設(shè)計
2.2 軟件實(shí)現(xiàn)
該軟件包含2個部分:數(shù)據(jù)庫部分和應(yīng)用程序部分。在本程序里面,將使用Microsoft Access 2000來建立數(shù)據(jù)庫,使用VisualBasic6.0來編制應(yīng)用程序。數(shù)據(jù)庫部分包含3個表格:用戶表,事件日志表和數(shù)據(jù)日志表。用戶表中包含該用戶的帳號,密碼和用戶類型;事件日志表中包含日期,時間,事件描述,事件處理等各項(xiàng)內(nèi)容;數(shù)據(jù)日志表中包含日期,時間和UPS的主要運(yùn)行狀態(tài)參數(shù)。
要使用該軟件必須輸入用戶名和密碼,軟件根據(jù)數(shù)據(jù)庫中的資料判斷該用戶的注冊類型,決定該軟件的使用權(quán)限。如果沒有這個用戶,則請求用戶注冊成為新用戶。用戶注冊時,要填寫一些必要的個人信息,如果該注冊名已經(jīng)存在,系統(tǒng)將要求采用其它的用戶名重新注冊,保存后存放到用戶表中去。只有系統(tǒng)管理員級別的用戶才能使用該軟件的所有功能,一般用戶只能使用該監(jiān)視方面的功能。
電源監(jiān)控軟件開發(fā)的關(guān)鍵環(huán)節(jié)是如何實(shí)現(xiàn)計算機(jī)串并口與電源設(shè)備的通信(即計算機(jī)采集電源設(shè)備送出的狀態(tài)信號,經(jīng)分析處理后在終端上顯示或發(fā)出控制信號送往電源設(shè)備),而最簡單的信息傳送方式就是使用串行通信。VB中提供了一個重要的通信控件:MSComm。在本程序中使用到該軟件的5個重要屬性: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ā)送電子郵件或傳呼信息給指定的用戶報警,在嚴(yán)重的情況下執(zhí)行文件自動保存后關(guān)閉系統(tǒng)。這里主要通過調(diào)用系統(tǒng)的API函數(shù)來實(shí)現(xiàn)。實(shí)際上,在整個軟件的編寫過程中,很多子程序都用到了相應(yīng)的API函數(shù)調(diào)用。使用Windows API,可以訪問常用代碼庫,使用通過測試的和認(rèn)證過的代碼,獲得跨平臺的兼容性,得到一個更小巧的應(yīng)用程序。
該軟件通過輸出電流來推算負(fù)載百分比,而蓄電池的電壓可以反映電池的剩余容量,所以程序通過測量電池電壓并查表來近似推算蓄電池的剩余容量。并通過當(dāng)前輸出電流和計算得到的電池剩余容量估算出電池的剩余放電時間,再根據(jù)得到的剩余放電時間來決定是否需要進(jìn)行計算機(jī)的自動保存操作。如果自動存檔時,檔案未賦予文件名,軟件以temp格式暫存或離開,供電系統(tǒng)正常后,用戶還可查看上次關(guān)閉Windows時關(guān)閉的應(yīng)用程序名稱和儲存的檔案。
由于該軟件要適應(yīng)各種主流操作系統(tǒng),如Win9X和Win2000。當(dāng)文件自動保存后,要退出操作系統(tǒng),安全關(guān)機(jī)。這時,要注意兩類操作系統(tǒng)的區(qū)別。在Win9X中退出操作系統(tǒng),只需調(diào)用一個底層的API函數(shù)ExitWindowsEx()就可以了,但是Win2000用的是NT的內(nèi)核,Windows NT不象Win9X和DOS那樣可以隨意進(jìn)行底層的操作,它非常注重系統(tǒng)每個進(jìn)程的權(quán)利(這也是為什么Win9X和DOS底下病毒成災(zāi)的原因),在Win2000下,要退出操作系統(tǒng),必須賦予它足夠的權(quán)限。圖4是關(guān)機(jī)子程序流程圖。
圖4 關(guān)機(jī)子程序流程圖
為了繪制UPS各個運(yùn)行參數(shù)的實(shí)時平滑曲線,得到掃描的效果,本程序中使用了一個重要的API函數(shù)BitBlt。在主窗體的菜單中,“窗口”主菜單在設(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)行時總覺得不是很流暢,這是因?yàn)楫?dāng)一個窗體界面的設(shè)計中要容納多張圖片和多個控制時,將出現(xiàn)窗體顯示速度明顯變慢的現(xiàn)象。為此,將“界面設(shè)計窗體”和“功能實(shí)現(xiàn)窗體”分開處理,基本可以解決這一問題。即在設(shè)計時根據(jù)需要設(shè)計漂亮的界面,但是在全屏運(yùn)行時將該界面復(fù)制到剪貼板上,然后將其作為一張圖片粘貼在功能實(shí)現(xiàn)窗體的背景上。這樣,從外觀上看效果相同,但是顯示速度明顯加快。不過,不可避免地增加了程序本身的存儲容量。
評論