馮洋++周立輝++盧洪鋒++邵利民
摘 要:報警系統是遠程監控系統的重要組成部分,其實現的關鍵在于如何對監控對象指數超標的情況進行響應,并及時將報警信息傳送至監控中心。該文提出的基于E-mail的遠程監控系統報警軟件,充分利用現存穩定的網絡資源實現軟件報警,通過Winsock實現對POP3協議進行編程,對收到的報警E-mail的主題進行分析,提取有效報警信息,并輸出報警信號,達到實時監測報警功能。該設計能有效降低整個系統的硬件設施投資,并提高了報警系統功能的擴展性及可優化性,已應用于多個遠程監控系統中。
關鍵詞:E-mail 報警軟件 遠程監控系統 Winsock
中圖分類號:TP872 文獻標識碼:A 文章編號:1672-3791(2014)11(b)-0012-03
報警系統是遠程監控系統的重要組成部分,實現的關鍵在于如何對監控對象指數超標的情況進行響應,并即時地將報警信息傳送至監控中心。目前報警系統較多采用硬件電路與軟件的配合實現,該類方案設計思想簡單,但隨之帶來硬件成本提高、需要附加報警電路等問題。針對所涉及的城市下水道可燃性氣體監控系統等項目的特點,該文提出了一種基于E-mail的報警軟件設計思想,采用Visual Basic語言編寫報警軟件[1],利用現存網絡資源,無需追加任何硬件投資便可實現報警功能。
1 設計思想
該文涉及的城市下水道可燃性氣體預警系統,采用熱導傳感器對下水道內可燃性氣體濃度進行測定,具有實時、連續、自動監測的能力。系統依托現有網絡運營商,利用GPRS/GSM網絡實現數據采集終端與監控中心的雙向數據傳遞。根據項目需要,監控中心報警系統可以有兩種設計思路[2]:
(1)硬件實現。由單片機、通信模塊及其外圍元件構成報警系統硬件。現場單元采樣結果超標則向監控中心發送一條報警短消息,由監控中心的通信模塊完成短消息的接收和判斷,實現聲光報警功能。
(2)軟件實現。利用現成的計算機或Internet網絡資源,構造軟件報警系統。對采樣結果超標情況立即向監控中心相應郵箱發送報警E-mail。報警軟件應具有自動定時查詢郵箱,對獲取的郵件關鍵字段進行判斷,對于報警信息及時產生報警提示。
通過上述兩種報警系統設計思路的對比分析,第一種主要是通過硬件設計,依托GSM網絡實現,其特點在于設計思路簡單清晰,但是存在需添加附加電路而導致硬件成本增加的問題,并且也難以實現即時報警信息的顯示。第二種則通過利用現存網絡資源,通過成熟的E-mail技術實現軟件報警。其無需追加任何硬件成本,且具有管理方便、報警信息清晰顯示、并能隨時修改升級等特點,可以方便與各類監控軟件整合。該文基于該設計思想,實現了一種基于E-mail的報警軟件。
E-mail以報文的形式通過網絡在工作站之間進行信息的傳遞,其主要組成構件如圖1所示[3]。
E-mail從用戶發出后,通過特定程序將該其內容送至SMTP服務器(即發送郵件服務器)上,再由發送郵件服務器將郵件傳遞到目的郵箱,然后通過程序接收信箱內郵件,包括賬號及口令。因此,一封郵件的發送至少經過4個不同任務的處理,以及不同功能的程序。
對于E-mail的程序編程主要針對收發電子郵件的客戶端程序進行。而收發電子郵件通常依靠標準的會話協議,其中關于發送的協議為SMTP,該協議對SMTP進行對話的命令和過程標準進行了相應規定;關于接收的協議為POP3,該協議則對POP3服務器進行對話的命令和過程標準進行了相應規定。
該文的報警系統軟件未涉及郵件發送,而只需要分析接收到的郵件。因此,該設計的報警系統軟件主要是依靠POP3協議進行編程。
2 系統框架
POP3通信在Windows里是通過Winsock來實現的,與POP3服務器進行通信的客戶端程序,設置Winsock連接的IP地址或域名,指定端口號[4]。若POP3服務器程序運行在指定地址,就能夠與服務器進行通信。POP3會話主要包括三個狀態:驗證狀態、事務狀態和更新狀態。值得注意的是,接收郵件的POP對話大部分時間都處在事務狀態中。
信件占了電子郵件的大部分內容,信件的內容通常為一系列由ASCII碼字符,即文本文件。對于POP3而言,從POP3接收的信件內容是未經整理的,包含大量的相關信息,如發信人、主題、時間、內容等,為了正確識別信件內所包含的信息,就必須對取回內容進行分類整理。在該文的設計中,為簡化系統工作,程序只對信件的主題進行讀取和判讀,分析其是否為指定格式的報警郵件。系統設定發自現場單元的報警郵件主題如下:
ALARM.LAB3205.02.LEL-XX%
其中,“ALARM”是報警郵件主題的識別字段,從而判斷是否收到指定格式的報警郵件;“LAB3205”是報警的現場單元地址;“02”是報警現場單元編號;“LEL-XX%”為報警單元的可燃性氣體LEL(Lower Explosive Limit)濃度數值。該系統軟件實現流程如圖2所示。
該文涉及的郵件報警客戶端可根據需要對報警郵箱和POP3郵件接收服務器進行自定義設置。系統運行過程中,根據所設定的時間間隔與設置的POP3郵件接收服務器建立自動連接。在經過用戶和密碼等驗證后,系統首先查詢指定郵箱內的郵件總數,然后依次讀出郵箱內的各則郵件。將獲取的內容存在Text box控件中,再分析Text box控件中所存數據的郵件主題。判斷主題中是否含有“ALARM”字段,決定是否繼續操作。對于含有“ALARM”字段的郵件主題,系統進一步對主題中所包含的報警信息進行提取,包括地址、現場單元編號、氣體LEL濃度、日期時間等,并存入信息數據庫。郵箱內所有郵件都讀取完畢后,系統將對郵箱進行清空,從而防止郵箱內剩余郵件太多造成堵塞。接著系統再查詢報警數據庫,若判斷有新的報警信息生成,則彈出含有報警信息的報警窗口,同時觸發報警聲音文件,形成告警。若查詢得知無新增的報警信息,系統便循環進行下一輪判斷。
該設計的報警系統軟件,采用成熟的VB語言編寫,較為關鍵部分為Winsock控件的應用。Winsock控件的特點在于其對用戶來說不可見,它為可訪問TCP及UDP網絡服務提供了較為方便的途徑。采用Winsock控件編寫應用程序,不必了解TCP的細節或調用低級的Winsock API,只需通過對控件的屬性的設置并進行調用就可以順利連接到遠程計算機并實現數據的雙向交換。該文程序中Winsock控件連接過程如下:
(1)進入查詢周期,對Winsock進行初始化,設定連接信息,包括協議、服務器地址、端口(110)等。
(2)進行Winsock.connect事件,成功則返回+OK。
(3)發送“USER+用戶名”命令,成功則返回+OK。
(4)發送“PASS”命令(用戶密碼),成功則返回+OK。
(5)發送“STAT”命令,返回內容即為郵件數量和大小。
(6)發送“RETR”命令,進行郵件的依次取出操作,同時存入TEXT BOX控件中供分析使用。
(7)分析結束,發送“DELE”命令,刪除郵件。
(8)發送“QUIT”命令,斷開與服務器的連接,并執行Winsock.close事件。
報警郵件獲取后,通過ADO控件與ACCESS數據庫連接實現所提取報警信息的存儲。報警信息的顯示(包括查詢窗口和報警窗口)都由MSHFlexGrid控件實現[5]。系統框圖如圖3所示。
3 軟件功能
系統可以在軟件運行之前對郵箱地址、POP3郵件接收服務器和查詢的時間間隔進行修改或設置。郵箱查詢間隔時間可根據要求由程序實現。系統運行后便實時監控報警郵箱,主界面的滾動條可實時顯示讀取工作進行情況。
系統可以根據不同檢索條件對數據庫內的報警信息進行查詢,內容顯示在MSHFlexGrid控件中。若接收到報警郵件,系統將彈出對應的報警對話框,可顯示報警地址、現場單元編號、報警日期時間以及報警點目前的可燃性氣體LEL濃度。
4 結語
該文提出的基于E-mail的報警系統設計思想,相比于常規的報警系統,無需追加任何硬件投資,僅利用現有的網絡及計算機資源便可實現監控中心對報警信息的及時響應,有效降低整個系統的硬件設施投資,并只需通過修改軟件便可實現報警系統功能擴展以及優化升級,可整合于各種類型的監控系統軟件中,具有成本低、效果好的特點。目前該報警軟件模塊的設計思想已應用于教育部春暉計劃的城市下水道可燃性氣體監測系統項目,以及國網浙江省電力公司檢修分公司的變電站地基沉降監測系統、變電站導線接頭溫度在線監測系統等科技項目中,應用狀況良好。
參考文獻
[1] James W.Cooper.Design patterns and object oriented programming in Visual Basic 6 and VB.NET[M].IBM Thomas J Watson Research Center,2001.
[2] 馮洋.下水道可燃氣體預警系統關鍵技術研究[D].重慶:重慶大學,2009.
[3] 謝希仁.計算機網絡[M].第4版.北京:電子工業出版社,2003.
[4] 汪曉平,鐘軍.Visual Basic 網絡通信協議分析與應用實現[M].北京:人民郵電出版社,2003.
[5] 沈建蓉,單貴.大學VB程序設計實踐教程[M].上海:復旦大學出版社,2006.