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