4.門禁控制系統(tǒng)軟件設(shè)計
4.1 門禁控制系統(tǒng)總體軟件設(shè)計
系統(tǒng)采用ARM和指紋識別模塊實(shí)現(xiàn)基于Linux操作系統(tǒng)下TCP/IP的網(wǎng)絡(luò)型門禁系統(tǒng)。系統(tǒng)中將門禁控制器作為服務(wù)器,以太網(wǎng)終端的上位機(jī)PC作為客戶端。上位PC機(jī)可以對多個控制器通過局域網(wǎng)或互聯(lián)網(wǎng)對其進(jìn)行訪問、查詢和設(shè)臵,一個客戶端可以登陸多個服務(wù)器,一個服務(wù)器也可以支持多個用戶的并發(fā)訪問。系統(tǒng)在完成門禁系統(tǒng)的功能的同時,還可以提供視頻監(jiān)控和報警的聯(lián)動管理。
本文主要描述了系統(tǒng)指紋識別模塊和視頻監(jiān)控兩個方面。門禁控制器的程序流程如圖4-1所示。
圖4-1 門禁控制器程序流程圖
開始初始化控制器,通過網(wǎng)卡AX88796向客戶端發(fā)送聯(lián)絡(luò)數(shù)據(jù)包,等待客戶端的回應(yīng),建立起控制器與客戶端的聯(lián)機(jī)工作。然后開啟攝像頭不斷采集現(xiàn)場圖像,將采集到的圖像發(fā)送到客戶端,客戶端通過瀏覽器可以對現(xiàn)場進(jìn)行實(shí)時監(jiān)控。同時,系統(tǒng)等待鍵盤輸入用戶ID,并進(jìn)行指紋采集,此時創(chuàng)建數(shù)據(jù)傳輸任務(wù),將采集到的指紋圖像數(shù)據(jù)和用戶ID在SRAM中進(jìn)行打包,然后發(fā)送至客戶端,由客戶端接收到的ID和指紋圖像進(jìn)行處理和對比,控制器創(chuàng)建數(shù)據(jù)接收任務(wù),接收客戶端返回的認(rèn)證結(jié)果,并由控制器進(jìn)行相應(yīng)的顯示和控制。在實(shí)際中,用戶ID和指紋可以設(shè)臵成多種認(rèn)證模式進(jìn)行控制,增加用戶ID有利于提高服務(wù)器的辨認(rèn)對比的速度。
4.2 指紋圖像采集
系統(tǒng)的指紋采集模塊為SPI串口模塊,指紋的采集工作由檢測到手指中斷開始的,系統(tǒng)檢測到中斷就會從串口發(fā)送一個字符控制FPS200開始采集。FPS200指紋采集采用分行方法對指紋圖像進(jìn)行采集和傳輸,其指紋采集流程圖如下。
圖4-2 指紋采集流程圖
系統(tǒng)首先打開FPS200指紋采集儀,初始化系統(tǒng)寄存器,然后查詢等待,在沒有檢測到手指時,F(xiàn)PS200處于睡眠狀態(tài),在檢測到手指中斷時,就可進(jìn)行指紋的采集。
4.3 網(wǎng)絡(luò)通信
4.3.1 TCP/IP協(xié)議
Linux支持多種不同的網(wǎng)絡(luò)協(xié)議,TCP/IP是Linux系統(tǒng)中最健壯、速度最快和最可靠的部分。TCP/IP協(xié)議包括了各個層次上的眾多協(xié)議,如ARP、IP、ICMP、TCP和UDP等。下面主要介紹網(wǎng)絡(luò)編程中涉及到的傳輸層TCP和UDP協(xié)議,其中TCP協(xié)議是一個面向連接的傳輸層協(xié)議,它為網(wǎng)絡(luò)上的兩臺主機(jī)的應(yīng)用程序提供一個可靠的字節(jié)流傳輸通道。面向連接意味著兩個使用TCP協(xié)議的應(yīng)用程序在彼此交換數(shù)據(jù)前必須先建立一個TCP連接。UDP協(xié)議是一個不可靠、面向無連接的傳輸層協(xié)議,提供簡單的端到端通信服務(wù)。UDP不能保證數(shù)據(jù)的可靠傳輸, 可能存在數(shù)據(jù)丟失和次序錯誤。因此,系統(tǒng)因?yàn)閷?shù)據(jù)要求高可靠性需選用提供可靠連接的TCP協(xié)議。
TCP對話通過三次握手來初始化的,三次握手的目的是使數(shù)據(jù)段的發(fā)送和接收同步,告訴其它主機(jī)其一次可接收的數(shù)據(jù)量,并建立連接。TCP實(shí)體所用的基本協(xié)議是滑動窗口協(xié)議,當(dāng)發(fā)送方傳送一個數(shù)據(jù)報時,它將啟動計時器,當(dāng)該數(shù)據(jù)報到達(dá)目的地后,接收方的TCP實(shí)體返向發(fā)送一個數(shù)據(jù)報,其中包含一個確認(rèn)序號,意思是希望收到下一個數(shù)據(jù)報的順序號。如果發(fā)送方定時器超時,那么發(fā)送方會重發(fā)該數(shù)據(jù)報。
通常應(yīng)用程序通過打開一個SOCKET使用TCP服務(wù),TCP管理到其它 SOCKET的數(shù)據(jù)傳遞??梢哉f,通過IP的源/目的可以唯一地區(qū)分網(wǎng)絡(luò)中的兩個設(shè)備的關(guān)聯(lián),通過SOCKET的源/目的可以唯一地區(qū)分網(wǎng)絡(luò)中兩個應(yīng)用程序的關(guān)聯(lián)。因此,系統(tǒng)中門禁控制器作為服務(wù)器與外部的監(jiān)控客戶端的通信均可由SOCKET編程來完成。
4.3.2 系統(tǒng)網(wǎng)絡(luò)通信軟件設(shè)計
系統(tǒng)是通過SOCKET套接口來進(jìn)行網(wǎng)絡(luò)編程,套接口地址的格式是一個IP地址和一個端口號,套接口是進(jìn)程間通信的端點(diǎn),每個套接口的名字都是唯一的,所以依靠套接口來確定整個以太網(wǎng)域中的一個網(wǎng)絡(luò)進(jìn)程。SOCKET接口是TCP/IP網(wǎng)絡(luò)中的API,SOCKET編程的基本模式是Client/Server。即由客戶機(jī)向服務(wù)器發(fā)出請求,服務(wù)器執(zhí)行被請求的任務(wù)并將響應(yīng)的結(jié)構(gòu)返回給客戶端程序。
SOCKET是TCP/IP協(xié)議傳輸層所提供的接口,供用戶編程訪問網(wǎng)絡(luò)資源,它是使用標(biāo)準(zhǔn)的Unix文件描述符(file descriptor)和其它程序通信的方式。SOCKET描述符是一個指向內(nèi)部數(shù)據(jù)結(jié)構(gòu)的指針,可以將這個描述符看成普通的文件描述符來讀寫操作實(shí)現(xiàn)網(wǎng)絡(luò)之間的數(shù)據(jù)交流,這就是Linux設(shè)備的無關(guān)性。按其應(yīng)用,SOCKET套接口主要有流式套接字(Stream Socket)和數(shù)據(jù)報套接字(Datagram Socket)兩種,在系統(tǒng)中采用TCP協(xié)議傳輸數(shù)據(jù),采用流式套接字。
系統(tǒng)中的將門禁控制器作為服務(wù)器,以太網(wǎng)終端的上位機(jī)作為客戶端。系統(tǒng)中TCP/IP協(xié)議SOCKET編程流程如圖4-3所示。
圖4-3 TCP協(xié)議SOCKET編程流程圖
在門禁系統(tǒng)控制端上運(yùn)行的RedHat Linux9.0操作系統(tǒng)已經(jīng)提供了TCP/IP服務(wù),在其上通常有相應(yīng)的應(yīng)用程序進(jìn)行管理,如Telnet、FTP、http等服務(wù),在門禁系統(tǒng)控制端通常移植服務(wù)器進(jìn)行系統(tǒng)網(wǎng)絡(luò)管理,系統(tǒng)中門禁控制器作為服務(wù)器程序流程介紹如下:
?。?)調(diào)用s=socket(AF_INET,SOCK_STREAM,O)函數(shù)來創(chuàng)建一個用于通信的套接字,每個Socket都是一個數(shù)據(jù)通道,使用Socket描述符可以從套接口中讀取數(shù)據(jù)或向其它數(shù)據(jù)通道寫入數(shù)據(jù)。
(2)設(shè)臵套接字地址結(jié)構(gòu),可對sockaddr_in進(jìn)行初始化,以保存所建立的Socket信息。如下: bzero(&sin,sizeof(sin)); //清除舊的服務(wù)器記錄sin.sin_family=AF_INET; //設(shè)臵網(wǎng)絡(luò)類型sin.sin_port=htons(myport);//設(shè)臵服務(wù)器監(jiān)聽端口
(3)調(diào)用bind(s,(struct sockaddr*)&sin,sizeof(sin))函數(shù)將其與本機(jī)地址以及一個本地端口號綁定,若綁定其它地址則不能成功。另外,它主要用于TCP的連接,而在UDP的連接中則無必要。
?。?)調(diào)用listen(s,5)函數(shù)在相應(yīng)的Socket號上監(jiān)聽。
?。?)調(diào)用ns=accept(s,NULL,NULL)函數(shù),睡眠并等待客戶的連接請求,當(dāng)accept函數(shù)接收到一個連接服務(wù)請求時,將生成一個新的Socket號,并通過新的socket號來發(fā)送圖像信息。
(6)調(diào)用recv()函數(shù)接收客戶端的請求,調(diào)用send()函數(shù)向客戶端發(fā)送數(shù)據(jù)。
?。?)當(dāng)所有的數(shù)據(jù)操作結(jié)束以后:調(diào)用close()函數(shù)來釋放Socket。
4.3.3 GoAhead嵌入式Web服務(wù)器
隨著Internet技術(shù)的興起,在嵌入式設(shè)備的管理與交互中,基于Web方式的應(yīng)用成為目前的主流。嵌入式Web服務(wù)器是指將Web服務(wù)器引入現(xiàn)場測試和控制設(shè)備中,在相應(yīng)的硬件平臺和軟件系統(tǒng)的支持下,使傳統(tǒng)的測試和控制設(shè)備轉(zhuǎn)變?yōu)榫邆淞艘訲CP/IP為底層通信協(xié)議和以Web技術(shù)為核心的基于互聯(lián)網(wǎng)的網(wǎng)絡(luò)測試和控制設(shè)備。目前用得較多的Web服務(wù)器主要有thttpd、shttpd、boa、appweb以及goAhead等。
在嵌入式系統(tǒng)中,由于處理器的運(yùn)行速度、存儲容量和內(nèi)存等的限制,使用嵌入式Web服務(wù)器可以節(jié)約系統(tǒng)資源,為用戶遠(yuǎn)程訪問、管理和控制提供支持,并可以實(shí)現(xiàn)用戶的分級訪問。系統(tǒng)采用goAhead作為Web服務(wù)器,用戶可以通過Form、CGI等應(yīng)用程序?qū)崿F(xiàn)交互。
GoAhead Web Server是GoAhead公司推出的一個功能強(qiáng)大源碼免費(fèi),并可以運(yùn)行在多個平臺上的嵌入式W曲服務(wù)器。GoAhead Webserver的主要功能特點(diǎn)有:很小的內(nèi)存消耗、支持安全的通信、支持動態(tài)Web頁面,如ASP頁面、可以使用傳統(tǒng)的C語言編程定制Web頁面里的HTML標(biāo)簽、支持CGI、嵌入式的JavaScript腳本翻譯器以及獨(dú)特的URL分析器。當(dāng)前的最新版本是GoAhead WebServer 2.1.8。GoAhead無須安裝,只需要將GoAhead的源碼軟件包拷貝到Linux文件系統(tǒng)中的任何目錄中即可,修改Makenle的相關(guān)內(nèi)容,通過交叉編譯, 在源代碼目錄中的LINUX文件夾下已經(jīng)存在了GoAhead的可執(zhí)行文件webs,在門禁控制器服務(wù)器端運(yùn)行。/webs就開戶了系統(tǒng)的服務(wù)器。
系統(tǒng)在PC機(jī)客戶端的Windows平臺上基于TCP/IP協(xié)議用VC++開發(fā)了客戶端的程序,通過客戶端程序可以通過以太網(wǎng)與門禁控制器的GoAhead Web Server通信并實(shí)現(xiàn)門禁系統(tǒng)的管理。
5.結(jié)論
隨著數(shù)字化和網(wǎng)絡(luò)化的發(fā)展,智能門禁系統(tǒng)是未來安防監(jiān)控系統(tǒng)的發(fā)展趨勢。安全可靠、方便易用的門禁系統(tǒng)在企業(yè)銀行、智能小區(qū)等門禁和考勤領(lǐng)域具有較強(qiáng)的實(shí)用價值和推廣性。本課題設(shè)計開發(fā)了一種基于ARM9處理器和指紋識別技術(shù)的以太網(wǎng)門禁控制系統(tǒng)。在ARM-Linux的基礎(chǔ)上,研究了指紋采集和視頻采集模塊、網(wǎng)絡(luò)傳輸模塊以及自動指紋識別算法??偨Y(jié)起來,本文主要做了下面的一些工作:
(1)論述了門禁系統(tǒng)在國內(nèi)外發(fā)展現(xiàn)狀及其在未來的發(fā)展方向,指出了本課題的研究背景和意義,介紹了一種基于ARM的指紋識別以太網(wǎng)門禁控制系統(tǒng)。
(2)給出了聯(lián)網(wǎng)型指紋識別的門禁系統(tǒng)的總體設(shè)計原則、功能特點(diǎn)和總體硬件框圖。重點(diǎn)論述了系統(tǒng)使用的各個重要模塊設(shè)計的硬件資源,主要包括USB攝像頭;LCD顯示模塊;網(wǎng)絡(luò)通信模塊;指紋識別模塊等。
(3)研究了指紋識別算法,包括指紋圖像預(yù)處理以及指紋圖像的特征提取和匹配兩部分。文中主要對指紋圖像分割做出了一些改進(jìn),結(jié)合指紋圖像灰度方差和梯度設(shè)臵一個合適的局部閾值對指紋進(jìn)行分割,提出了一種指紋圖像的局部閾值分割方法,該算法提高了指紋分割的精確度和適應(yīng)性。然后參考其它的算法介紹了一個整體的自動指紋識別算法。
(4)闡述了門禁控制系統(tǒng)軟件的總體設(shè)計,然后分別闡述了系統(tǒng)中軟件編程中重要的幾個方面:使用Video4Linux編程采集圖像、指紋圖像的采集、GoAhead web server的應(yīng)用以及系統(tǒng)運(yùn)用TCP/IP實(shí)現(xiàn)系統(tǒng)門禁控制器和上位機(jī)PC之間的網(wǎng)絡(luò)通信。
評論
查看更多