文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2012)09-0021-03
2012年1月,,春運(yùn)火車票全面實(shí)行實(shí)名制, 在旅客進(jìn)站檢票時(shí),工作人員要查驗(yàn)兩種證件:印有乘車人信息以及二維條碼的火車票,、乘車人本人身份證,。目前的查驗(yàn)設(shè)備主要由三部分組成:電腦、二維碼讀取設(shè)備和二代身份證信息讀取設(shè)備,。至少需要配備2名工作人員,、一臺(tái)小型電腦桌,一張電腦椅,。旅客進(jìn)站檢票時(shí),,通常需經(jīng)過如下流程:
出示火車票和身份證給工作人員,工作人員分別在二維碼讀取設(shè)備上讀出車票的信息和在二代身份證讀取個(gè)人信息,, 兩者聯(lián)網(wǎng)比對(duì)無誤后確認(rèn)是否有效[1],。在這個(gè)過程中,由于二維碼讀取設(shè)備和二代身份證信息讀取設(shè)備是兩個(gè)不同的設(shè)備,,整體造價(jià)很高,,給大面積使用造成一定的困難。同時(shí)整個(gè)實(shí)名制檢票系統(tǒng)占地大,,不方便移動(dòng),,須在每個(gè)檢票口都必須安放一套實(shí)名制檢票系統(tǒng),這更增加了成本[2],。而且檢票過程用時(shí)較多,,影響旅客的出行。
針對(duì)以上情況,,本文提出了一種基于Android的實(shí)名制火車票檢票手持設(shè)備,。通過對(duì)火車票二維碼以及二代身份證RFID信息的采集、顯示,,同時(shí)通過WIFI網(wǎng)絡(luò)對(duì)實(shí)名火車票信息進(jìn)行驗(yàn)證來解決實(shí)名驗(yàn)票過程中遇到的各種問題,。
1 系統(tǒng)的總體構(gòu)成
基于Android嵌入式平臺(tái)的火車票實(shí)名檢票系統(tǒng)主要由基于ARM11嵌入式微處理器、二維條碼掃描系統(tǒng),、RFID身份證識(shí)別系統(tǒng)和無線網(wǎng)絡(luò)系統(tǒng)WIFI組成,。手持設(shè)備采用基于ARM11內(nèi)核的S3C6410嵌入式微處理器組成信息處理核心,二維碼條碼掃描模塊采用500萬像素自動(dòng)對(duì)焦CMOS攝像頭組成二維條碼采集系統(tǒng),,RFID模塊主要完成身份證信息的提取。采用開源的Android操作系統(tǒng)作為嵌入式系統(tǒng)軟件平臺(tái),,主要為用戶提供友好的圖形界面以及驅(qū)動(dòng)底層的硬件設(shè)備,。系統(tǒng)的總體框架如圖1所示。
2 系統(tǒng)硬件構(gòu)成
基于Android嵌入式平臺(tái)的火車票實(shí)名檢票系統(tǒng)由嵌入式系統(tǒng)硬件和軟件構(gòu)成,,其中系統(tǒng)硬件主要包括S3C6410微處理器,、二維碼攝像頭掃描系統(tǒng),、RFID身份證掃描系統(tǒng)及外圍電路等。
2.1 基于S3C6410的嵌入式系統(tǒng)
通常手持設(shè)備要求移動(dòng)方便,、外形美觀,、低功耗、高性能,、擴(kuò)展方便,。為此,使用三星公司的S3C6410嵌入式微處理器,,采用FPGA封裝,,共424引腳。通過外接總線,,通用I/O和各種專用模塊的擴(kuò)展,,其功能強(qiáng)大。S3C6410外圍電路主要包括DDR RAM,、Flash,、串行接口模塊、LCD顯示模塊,、WIFI收發(fā)模塊,、攝像頭接口模塊、USBHost接口模塊等,。硬件平臺(tái)的總體設(shè)計(jì)框架如圖2所示,。
2.2 RFID識(shí)別系統(tǒng)
目前二代身份證使用ISO14443 TYPEB標(biāo)準(zhǔn)。為此,,RFID識(shí)別系統(tǒng)作為二代身份證的信息采集設(shè)備,,采用飛利浦MFRC522芯片來讀取二代身份證。MFRC522集成了13.56 MHz頻率下所有類型的被動(dòng)非接觸式協(xié)議和通信方式,,支持ISO14443兼容應(yīng)答器信號(hào),,數(shù)字信號(hào)部分處理錯(cuò)誤及檢測(cè)ISO14443幀。此外,,芯片支持快速CRYPTO1加密算法,,用于驗(yàn)證MIFARE系列卡片。MFRC522支持MIFARE更高速的非接觸式通信,,雙向數(shù)據(jù)傳輸速率高達(dá)424 kb/s,。MFRC522與主機(jī)間通信采用連線較少的串行通信,且可根據(jù)不同的需求,,選取串行UART,、SPI或IIC模式之一進(jìn)行通信。在本系統(tǒng)中采用UART串行通信的模式與S3C6410嵌入式微處理器進(jìn)行通信,,其構(gòu)成如圖3所示,。
2.3 條碼掃描系統(tǒng)
火車票實(shí)名檢票系統(tǒng)中,,條碼掃描系統(tǒng)主要負(fù)責(zé)火車票票面的二維碼信息的采集和解碼。在本系統(tǒng)中,,采用500萬像素自動(dòng)對(duì)焦的攝像頭對(duì)二維碼進(jìn)行拍照并識(shí)別其中的票面信息,,相對(duì)于傳統(tǒng)的激光掃描器,攝像頭采集器件具備外圍連線簡(jiǎn)單,、價(jià)格便宜,、功耗低等特點(diǎn),較適合于移動(dòng)設(shè)備中使用,。
3 系統(tǒng)軟件構(gòu)成
在本系統(tǒng)中,,選用Android 2.3.7操作系統(tǒng)作為火車票實(shí)名檢票系統(tǒng)的軟件平臺(tái)。Andioid是Google開發(fā)的基于Linux平臺(tái)的開源手機(jī)操作系統(tǒng),,后由開放手持設(shè)備聯(lián)盟開發(fā),。它采用了軟件堆層的架構(gòu),主要由底層系統(tǒng),、中間件和應(yīng)用程序三部分組成,,是第一個(gè)為移動(dòng)終端打造的真正開放和完整的移動(dòng)操作系統(tǒng)[3]。其中軟件開發(fā)部分主要包括Android底層驅(qū)動(dòng)開發(fā),、二維碼掃描解碼模塊開發(fā)以及上層用戶應(yīng)用程序的開發(fā),。系統(tǒng)的軟件結(jié)構(gòu)如圖4所示。
3.1 條碼掃描解碼模塊軟件設(shè)計(jì)
我國現(xiàn)行的火車票是將包含持票人身份信息以及售票信息的QRCode二維碼印制在火車票的右下角,。在本系統(tǒng)中,,采用500萬像素可自動(dòng)對(duì)焦的CMOS攝像頭采集火車票票面的二維碼信息。為此,,在軟件設(shè)計(jì)中,,需要設(shè)計(jì)攝像頭驅(qū)動(dòng)程序。Android底層使用的是Linux內(nèi)核,,攝像頭系統(tǒng)部分在libui庫中定義本地代碼框架,,對(duì)上層提供接口功能部件,由CameraServices實(shí)現(xiàn),,CameraServices通過調(diào)用硬件抽象層下層的攝像頭來實(shí)現(xiàn)功能,。Camera 本地系統(tǒng)上層接口既可以通過本地程序調(diào)用,也可以使用JNI 來構(gòu)建攝像頭應(yīng)用的 Java 框架,。攝像頭接口驅(qū)動(dòng)的框架如圖5所示,。
在本系統(tǒng)中,采用攝像頭對(duì)QR二維碼進(jìn)行圖像數(shù)據(jù)采集,。而采集到的QR二維碼圖像通常存在一定程度的污損,,需要先適當(dāng)?shù)貙?duì)圖像進(jìn)行處理,然后再對(duì)圖像進(jìn)行探測(cè)定位,,最后進(jìn)行RS糾錯(cuò),,輸出解碼結(jié)果。具體的步驟如下:
(1)圖像灰度化,。將攝像頭得到的彩色圖像轉(zhuǎn)為灰度圖像,。
(2)中值濾波。將得到的灰度圖像去除噪聲,,保留圖像的原本特征,。
(3)二值化。采用積分圖的快速二值化算法,。
(4)邊緣檢測(cè),。采用Sobel算子對(duì)二值化的圖像進(jìn)行邊緣檢測(cè)。
(5)圖像校正,。在拍攝過程中通常存在一定程度的幾何失真,,需要通過Hough變換對(duì)圖像進(jìn)行旋轉(zhuǎn),并采用雙線性插值法對(duì)旋轉(zhuǎn)后的圖像進(jìn)行修正,。
(6)QR碼識(shí)別,。QR碼的識(shí)別特征是QR碼的探測(cè)圖形,根據(jù)探測(cè)圖形的三個(gè)頂點(diǎn)坐標(biāo)可以初步估算版本號(hào)以及確定模塊的寬度,,然后尋找QR碼的定位圖像,。當(dāng)發(fā)現(xiàn)有校正圖形時(shí),則利用校正圖形和定位圖形建立取樣網(wǎng)絡(luò),,將QR碼圖像轉(zhuǎn)換為數(shù)據(jù)矩陣,,“0”代表網(wǎng)格上顏色較淺的模塊,“1”代表網(wǎng)格上顏色較深的模塊,。
(7)提取版本和格式信息,,并校驗(yàn)信息檢測(cè)是否有誤,如果有誤,,則中止解碼,。
(8)提取掩模信息,將數(shù)據(jù)矩陣與掩模的圖形碼進(jìn)行相應(yīng)的“異或”操作,。
(9)RS糾錯(cuò),。如圖像中錯(cuò)誤量超過糾錯(cuò)能力,則中止解碼,。
(10)解碼結(jié)果輸出,。
條碼掃描解碼模塊的流程如圖6所示。
3.2 身份證識(shí)別器串行通信接口設(shè)計(jì)
在本系統(tǒng)中,,二代身份證通過RS232串口與S3C6410嵌入式微處理器進(jìn)行通信,。因此,需要在Android系統(tǒng)中加入串行口驅(qū)動(dòng)程序,。本系統(tǒng)硬件抽象層中通過兩個(gè)線程對(duì)串口的設(shè)備節(jié)點(diǎn)/dev/ttymv1進(jìn)行讀和寫,。
JNI中的源碼通過init,、download、upload 3個(gè)硬件抽象層中的函數(shù)接口對(duì)串口進(jìn)行初始化,、讀數(shù)據(jù)和寫數(shù)據(jù),。讀數(shù)據(jù)時(shí),在硬件抽象層中通過讀數(shù)據(jù)的線程從串行設(shè)備節(jié)點(diǎn)中將數(shù)據(jù)讀出后進(jìn)行CRC校驗(yàn)和解析,,如果CRC校驗(yàn)正確,,則把解析之后的數(shù)據(jù)通過JNI層傳到Java中進(jìn)行使用。寫數(shù)據(jù)時(shí),,直接把Java傳過來的數(shù)據(jù)通
實(shí)驗(yàn)表明,,該系統(tǒng)硬件電路簡(jiǎn)單,可靠性強(qiáng),,易于擴(kuò)展,;軟件圖形界面友好,使用方便,。對(duì)本系統(tǒng)硬軟件稍作更改,,即可運(yùn)用于餐飲點(diǎn)餐、物流,、超市等領(lǐng)域,,可以極大地提高各領(lǐng)域的工作效率,適合于大面積推廣,。
參考文獻(xiàn)
[1] 李軼舜,,徐建閩,盧凱.基于第2代身份證的火車電子售檢票系統(tǒng)的構(gòu)建[J].交通與計(jì)算機(jī),,2008,,26(5):148-151.
[2] 胡弼,程永生.基于ARM的實(shí)名制檢票手持識(shí)別終端設(shè)計(jì)[J].國外電子測(cè)量技術(shù),,2010,,29(10):62-65.
[3] 蔣耘晨.Android系統(tǒng)原理和實(shí)戰(zhàn)應(yīng)用[M].北京:北京理工大學(xué)出版社,2011.