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