目前,對于遠程的數據傳送,通常采用無線發(fā)射的方式或modem通訊方式,前者由于受到地形、天氣等因素的影響,往往通訊不穩(wěn)定甚至出現通信中斷。相比之下,選用現有的程控電話網作為通訊媒質的modem遠程通訊方式則顯得相對的穩(wěn)定可靠,并且成本較低。監(jiān)控主機通過rs-485總線與門禁控制器通訊,每隔一段時間,監(jiān)控主機便發(fā)出查詢命令,查詢命令中包含所要查詢的門禁控制器的地址,所有門禁控制器都能收到查詢命令,但只有地址與查詢命令中所帶的地址一致的門禁控制器才能響應此命令。監(jiān)控主機對門禁控制器上傳的數據進行處理,判斷是否有告警發(fā)生,通過人機界面顯示門禁上傳的重要數據和告警信息。并且將刷卡記錄等重要數據存入數據庫中相應的表單。監(jiān)控主機還可以實現對門禁控制1器的遠程控制,實現遠程開門、修改門禁參數等功能。
軟件實現監(jiān)控主機的程序采用vc610編寫,數據庫采用的是sybase11數據庫系統(tǒng)。程序采用windows的多線程技術,監(jiān)控主機有數據采集線程和數據顯示線程。數據采集線程與門禁控制器通訊,接受門禁控制器上傳的數據,并將數據存儲到數據庫的相應表單中。數據顯示線程從表單中獲取數據,進行相應的顯示。串口初始化在windows環(huán)境下使用vc編寫串行通信程序一般采用兩種方法:(1)采用microsoftwin32應用程序編程接口(api)提供的串行通信函數,用sdk思路編寫。(2)使用microsoftvc的通信控件(mscomm)。第一種方法使用起來比較復雜,專業(yè)化程度高;采用mscomm控件編程方便、直觀。因此在設計串口通信程序時采用第二種方法。mscomm控件提供了兩種控制串行口的方法:即事件驅動方式和查詢方式,使用事件驅動方式時,當有新的字符到達或端口狀態(tài)改變時,將會觸發(fā)on-comm事件,應用程序在捕獲該事件后,通過檢查mscomm控件的commevent屬性,可以響應發(fā)生的事件。這種方法程序響應及時,可靠性高。因此,本設計采用這種方法。modem撥號在串口初始化結束后,開始進行modem的撥號。
實時數據采集當modem撥號撥通以后,數據采集線程開始工作。采集線程采用輪巡的方式,在每個采集周期中,監(jiān)控主機對串口下的所有設備進行一次數據采集,然后開始下一個循環(huán)的采集進程。系統(tǒng)結構顯示監(jiān)控主機通過查詢數據庫中的house表單、e-quipment表單和station表單以樹狀控件的方式進行系統(tǒng)結構的顯示(監(jiān)控主機作為根目錄,串口作為子目錄,設備作為文件,將樹狀控件展開,可以查看系統(tǒng)的整個配置情況,當選中某個設備時,則顯示該設備對應的實時數據。實時數據顯示監(jiān)控主機通過查詢數據庫中signal表單進行實時數據顯示,根據信號的特征標志,將信號劃分為不同的類型,在不同的列表中進行顯示。其顯示的內容包括門禁的時間、刷卡的卡號及刷卡時間、門開關狀態(tài)等信息。