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