基于ARM9+Linux的門禁監(jiān)控系統(tǒng)設(shè)計(jì)
圖2 系統(tǒng)硬件組成示意圖
3 系統(tǒng)軟件架構(gòu)設(shè)計(jì)
整個(gè)系統(tǒng)分為前后臺(tái)兩部分,后臺(tái)監(jiān)控程序會(huì)時(shí)刻監(jiān)控讀卡器是否有刷卡信息,并對(duì)刷卡信息作出響應(yīng),前臺(tái)則通過(guò)boa服務(wù)器調(diào)用CGI服務(wù)程序響應(yīng)客戶端訪問(wèn)請(qǐng)求。系統(tǒng)功能模型如圖3所示。
圖3 系統(tǒng)功能模型
3.1 前臺(tái)設(shè)計(jì)
系統(tǒng)前臺(tái)主要由運(yùn)行在門禁控制器上的boa Server服務(wù)器和CGI服務(wù)程序構(gòu)成,boa server會(huì)時(shí)刻監(jiān)視是否有遠(yuǎn)程用戶的訪問(wèn),當(dāng)有客戶端訪問(wèn)請(qǐng)求到達(dá)后,會(huì)通過(guò)boa server配置文件到相應(yīng)目錄下去調(diào)用對(duì)應(yīng)的CGI服務(wù)程序,在處理完成后,boa server將處理結(jié)果返回給客戶端。
3.1.1 CGI簡(jiǎn)介及工作原理
CGI全稱是“通用網(wǎng)關(guān)接口”(Colnnlon Gateway Interface),是一種基于瀏覽器的輸入并在Web服務(wù)器上運(yùn)行的程序方法。
CGI的工作原理,首先瀏覽器通過(guò)HTML表單或超鏈接請(qǐng)求指上一個(gè)CGI應(yīng)用程序的URL。服務(wù)器接收收到請(qǐng)求后,執(zhí)行所指定的CGI應(yīng)用程序。CGI應(yīng)用程序執(zhí)行所需要的操作(通常是基于瀏覽者輸入的內(nèi)容),并把結(jié)果格式化為網(wǎng)絡(luò)服務(wù)器和瀏覽器能夠理解的文檔(通常是HTML網(wǎng)頁(yè))。最后,網(wǎng)絡(luò)服務(wù)器把結(jié)果返回到瀏覽器中。
3.1.2 嵌入式服務(wù)器boa server
boa Server是一種小型單任務(wù)嵌入式服務(wù)器,支持CGI,可執(zhí)行代碼只有60 kB左右,體積小,速度快,安全性好,能夠滿足本項(xiàng)目的開發(fā)。boa服務(wù)器需要交叉編譯為可在ARM平臺(tái)下運(yùn)行的程序。在pc環(huán)境下,運(yùn)用交叉編譯器arm-linux-gcc對(duì)boa server進(jìn)行交叉編譯后,需要修改其配置文件boa.conf,關(guān)鍵配置有創(chuàng)建日志文件所在目錄,創(chuàng)建HTML文檔的主目錄,將靜態(tài)網(wǎng)頁(yè)存入該目錄下,創(chuàng)建CGI腳本所在目錄,將cgi的腳本存放在該目錄下。
3.2 后臺(tái)設(shè)計(jì)
當(dāng)系統(tǒng)運(yùn)行后,門禁控制器會(huì)一直運(yùn)行主監(jiān)控程序,主監(jiān)控程序存在兩種工作方式,分別為調(diào)試模式和監(jiān)控模式。
3.2.1 調(diào)試模式
在調(diào)試模式下,可以對(duì)門禁控制器進(jìn)行一些基本的設(shè)置:包括有門禁控制器的IP設(shè)置,系統(tǒng)管理員用戶名及密碼設(shè)置,卡權(quán)限設(shè)置等操作,在此部分,需要配合圖形環(huán)境方便調(diào)試,本系統(tǒng)采用minigui嵌入式圖形庫(kù)。
MiniGUI下的通訊是一種類似于Win32的消息機(jī)制,是由某公司開發(fā)的自由軟件,遵循LGPL協(xié)議,可以為嵌入式linux系統(tǒng)建立的一個(gè)快速,穩(wěn)定和輕量級(jí)的圖形用戶界面支持系統(tǒng)。
3.2.2 監(jiān)控模式
在工作模式下,后臺(tái)駐留程序會(huì)時(shí)刻監(jiān)視是否有刷卡信息,在檢測(cè)到刷卡信息后,后臺(tái)駐留程序通過(guò)訪問(wèn)數(shù)據(jù)庫(kù)進(jìn)行卡信息的比對(duì),只有當(dāng)比對(duì)通過(guò)后,方可進(jìn)行門打開動(dòng)作。
由于在開門的同時(shí),需要保存圖片至數(shù)據(jù)庫(kù),而此時(shí),可能會(huì)存在客戶端對(duì)系統(tǒng)存儲(chǔ)圖片的訪問(wèn),這會(huì)造成對(duì)相同數(shù)據(jù)庫(kù)的訪問(wèn)沖突,所以系統(tǒng)在接收到客戶端訪問(wèn)系統(tǒng)存儲(chǔ)圖片請(qǐng)求的時(shí)候,前端CGI服務(wù)程序通過(guò)命名管道的進(jìn)程間通信方式和后臺(tái)監(jiān)控程序通信,以獲得數(shù)據(jù)庫(kù)訪問(wèn)句柄,在客戶端訪問(wèn)結(jié)束后,前端CGI服務(wù)程序會(huì)釋放數(shù)據(jù)庫(kù)句柄。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論