盧愛紅 劉中原 馮蓉珍



摘 要: 為了有效降低現有自助出票機的成本,縮小其體積,擴大其推廣范圍,提出一種基于嵌入式Linux的自助出票機的實現方法。以ARM開發板作為核心板,集成門票打印機模塊和二代身份證識別模塊,設計自助出票機系統硬件平臺;軟件設計包括嵌入式Linux環境下的各功能模塊驅動設計、Linux文件系統環境配置、QT界面程序設計等。系統測試結果顯示,各模塊工作正常,能夠滿足用戶的需求。
關鍵詞: ARM; 嵌入式系統; Linux; QT; 熱敏打印機
中圖分類號:TP368.2 文獻標志碼:A 文章編號:1006-8228(2013)09-28-03
0 引言
隨著智慧化城市的發展,越來越多的人工操作將被智能機器所取代。目前在各種景區、影院等公共場所,人工售票還是主流。本文提出一種基于ARM的自助出票系統的設計,游客可以通過刷身份證來自動獲取公共場所門票,這大大節約了人力成本,方便了人們的生活。目前市面上的自助出票系統都是基于x86電腦硬件系統,采用Windows操作系統來設計的,這使得自助出票機的體積不能縮小,也大大增加了成本,售價非常昂貴。我們采用以S3C2440為CPU核心的ARM平臺,基于Linux操作系統來進行自助出票機系統設計,集成了QT界面設計單元、門票打印單元、身份證識別單元、系統時間單元等多個模塊,設計出低成本、高穩定性、適合景區或影院等公共場所的自助出票機,體積可以做成類似便攜式的嵌入式設備。該設計順應當前智慧城市的需求,有很深遠的應用前景。
1 系統要求與整體設計
自助出票機系統設計的基本要求和服務流程是:設計出一款便攜式的自助出票機,掛在公共場所墻壁上,提供友好的界面支持,在沒有游客取票時,顯示公共場所景點宣傳畫面,有游客取票時,進入取票界面,等待游客刷二代身份證,后臺根據身份證信息,結合系統當前的時間,打印出實時的門票票據。界面需要設計對系統配置的接口,配置系統時間、系統接口參數等。系統提供SQLite數據庫支持,保存游客的客戶信息,便于后臺程序的統計和分析。
考慮到整個系統復雜的界面設計需求,同時系統需實現的多個功能模塊的驅動和應用支持,如身份證識別模塊、打印機模塊、系統時鐘配置、系統接口參數配置等,以及對SQLite輕巧數據庫的支持,我們選用以S3C2440為CPU的ARM開發平臺,采用Linux操作系統,能根據用戶需求進行裁剪,簡化對平臺硬件配置的要求;選用基于Qt4.7類庫的QT嵌入式界面設計,能友好地支持Linux平臺,并提供豐富的復雜的界面設計效果。
系統設計框圖[1,4]如圖1所示。
2 硬件設計
嵌入式自助出票機采用S3C2440的ARM開發板[2],LCD顯示屏選用群創7寸LCD顯示屏,選用RTC模塊來實現系統的實時時間的管理,選用合適的打印機模塊和二代身份證識別模塊搭建出硬件系統。
2.1 熱敏打印機
門票打印機的選擇要根據現場的應用場景來決定,主要參數有:①打印參數:門票的紙張寬度、打印寬度,打印紙的折疊形式(折疊式或卷式)、打印方式(熱敏或熱轉印)等;②通信接口:要根據ARM開發板的接口以及Linux操作系統的特點來選擇打印機的驅動接口,一般熱敏打印機支持USB接口、串口、網口三種通信方式,本設計選用串口驅動打印機,根據串口命令配置打印機輸出的字體格式、位圖、條形碼等多種用戶需求。
本設計選用的打印機是打印寬度為58mm的熱敏票據打印機,工作電壓為5V。
2.2 TX523T身份證卡號模塊
TX523T是一款天線一體化,同時可以讀二代居民身份證卡號的模塊。TX523采用13.56MHz頻基站。當有卡靠近時,模塊會以韋根或 UART方式輸出卡號。根據需要,可選擇UART或Wiegand接口與任何MCU進行連接;使用UART接口時,可以選擇波特率 9600或 19200。為了簡化代碼,我們同樣采用串口通信與ARM開發板通信。5V供電電源需要從ARM開發板引出,ARM開發板通過GPIO口來配置身份證識別模塊的工作模式。
3 軟件設計
自助出票機軟件系統的設計是難點,軟件模塊包括:①基于S3C2440開發板的Linux環境開發的配置[3];②QT嵌入式運行環境的配置和基于Qt4.7類庫的自助出票機界面設計[5];③根據ESCPOS協議設計打印機的串口驅動程序;④身份證識別模塊的串口驅動程序;⑤時間處理模塊等。
3.1 Linux環境開發的配置
我們使用的交叉編譯的虛擬機開發環境為Ubuntu10.10版本,交叉編譯工具為arm-linux-4.3.3版本,S3C2440開發板的Linux內核版本為:linux2.6.30.4,需要根據硬件接口和器件,如LCD顯示屏、UART串口、eth0網口、GPIO口的原理圖來按需對Linux2.6.30.4內核進行裁剪。
3.2 QT嵌入式運行環境的配置和界面設計
自助出票機系統選用QT進行嵌入式界面設計。QT是一個跨平臺的C++類庫,其界面設計程序在各個平臺上是一樣的,只是跨平臺時需要加上各個平臺的庫重新編譯生成可執行文件。QT目前已經發展到第三代,是通過升級類庫來更新發展,目前最高版本的類庫是Qt4.7,Nokia一直在對QT類庫進行更新升級。QT平臺主要是面向嵌入式界面設計的,QT界面程序不是一個桌面系統,而是可以直接運行在嵌入式環境下的程序。
QT界面程序的設計環境是Qt creator,這是QT的集成開發環境(IDE),用于開發源代碼、編譯鏈接源代碼、調試源代碼,大大簡化了設計環境的配置。Qt creator環境配置成交叉編譯的環境之后,用Qt creator設計出的界面可執行文件能夠在S3C2440開發板上運行。
3.2.1 QT嵌入式運行環境的配置
配置QT嵌入式運行環境,需要對S3C2440開發板的文件系統進行修改:添加經過交叉編譯的Qt4.7類庫、添加ts觸摸屏校準庫和配置應用程序、修改/etc/profile配置文件、添加QT配置腳本、添加QT界面設計程序。配置文件主要用于指定環境變量的具體路徑,其中QTDIR是Qt4.7類庫路徑,QWS_MOUSE_PROTO用于指明觸摸屏或鼠標的設備名。
3.2.2 人機界面設計
自助出票機的人機界面是多級界面。主界面提供取票界面、廣告界面、系統設置界面給用戶選擇。取票界面是主要的功能界面,等待從串口接收用戶輸入的身份證信息,與數據庫中的信息進行比對和判斷,決定是否打印門票,并將用戶信息存儲到數據庫。廣告界面是根據用戶需求定制展示用戶宣傳圖片。系統設置界面主要需要讀取當前系統時間,并可以根據時間進行調整和設置,同時提供與打印機通信的串口UART1和與身份證識別模塊通信的UART2的屬性配置選項。系統流程圖如圖2所示。
⑴ 取票的處理過程
取票流程為:進入取票界面,系統等待從串口2接收身份證識別模塊輸入的身份證UID號,再查詢數據庫,若在當前數據庫中沒有查到該游客的信息,則將游客信息存儲到數據庫,啟動門票打印機打印出系統實時信息并自動出一張票;若在當前數據庫中已查到該游客的信息,則不再重復出票,處理完成之后返回主界面等待用戶輸入。在取票處理的程序設計過程中,我們將界面處理和數據處理分開管理,用不同的類進行處理。取票處理過程抽象出五大功能類:GetTicket(取票界面類)、Serial(串口類)、EscPos(操作打印機的類)、IdCardMag(身份證號識別的類)、SqliteHelper(數據庫處理的類)。
⑵ 系統設置的處理過程
系統設置的過程為:進入系統設計界面,通過輸入用戶名和密碼登錄到系統具體的設置頁面,具體功能是,在系統設置頁面中查看當前自助出票機的系統時間:年月日時分,如果與當前實際的時間不匹配,系統設置界面提供了相應的調整時間的按鈕;在系統設置頁面中可以對串口的屬性進行設置。系統設置過程抽象出三大功能類:SystemSet(系統設置界面類)、TimManager(系統時間處理功能類)。在SystemSet(系統設置界面類)中,完成對打印機的串口初始化和打印機設備初始化、身份證識別模塊串口初始化、QT時鐘管理初始化的工作。界面設計如圖3所示。
3.3 根據ESCPOS協議設計打印機驅動
根據ESCPOS協議可以設置打印機打印的字符格式:字體、倍寬、倍高、粗體等,如果需要打印復雜的圖片,可以采用定義打印Flash位圖的方式處理。Flash位圖格式如圖4所示。
3.4 身份證識別模塊串口驅動
身份證識別模塊串口驅動的軟件設計,重點是監聽身份證識別模塊串口發送過來的數據,對串口數據進行分析,找到UID號的有用數據。在Linux操作系統中,串口設備是作為一個文件來進行管理的,本系統中設備名是/dev/ttySAC2。我們對串口文件接收的數據監聽有效地利用了QT的signal/slot信號/槽機制。采用QT提供的QSocketNotifier對象來監聽系統文件操作,可以將文件操作轉換為QT事件(QSocketNotifier::Read)。當串口有數據可讀時,QT事件(QSocketNotifier::Read)會驅動QSocketNotifier對象發送ativated 信號,并調用預先設置好的槽函數(remoteDataIncoming)來處理事件。代碼如下:
m_notifier=new QSocketNotifier(m_fd,QSocketNotifier::Read,this);
connect(m_notifier,SIGNAL(activated(int)),this,SLOT
(remoteDataIncoming()));
3.5 時間處理模塊
S3C2440開發板板載RTC實時時鐘硬件電路,在系統斷電時,RTC時鐘自帶的電池能夠保證時鐘正常工作。Linux操作系統提供的date命令可以設計操作系統的時間,hwclock -w命令可以實現操作系統的時間和硬件RTC實時時鐘的時間同步。我們使用QT的QDataTime類獲取當前系統的實時時間,使用datetimedit控件接收用戶的設置,在通過date和hwclock命令對系統時鐘和硬件時間進行同步修改。
4 實驗結果
自助出票機系統集成時,操作流程如下:
⑴ 將S3C2440開發板和周邊器件的硬件環境連線準備好;
⑵ 在S3C2440開發板中燒入bootloader、Linux內核和文件系統,S3C2440開發板能夠正常啟動進入文件系統;
⑶ 配置S3C2440開發板文件系統中QT運行的環境,正確加載庫文件、配置文件和界面程序可執行文件;
⑷ 自助出票機系統設計完成,可以驗證結果。
自助出票系統的聯調如圖5所示,實驗驗證表明:系統能準備識別出身份證號,并觸發打印門票機制,打印出系統的實時信息。
5 結束語
自助出票機系統整體設計方案綜合考慮了現場應用環境的需求,采用基于Linux的嵌入式開發技術有效地降低產品成本,提高系統的穩定性。本設計可靠性好、成本低廉、操作方便,具有較強的工程實用意義和推廣價值。自助出票機采用S3C2440嵌入式開發板,有效降低了自助出票機的硬件成本;采用Linux操作系統,可以高效地針對應用場景進行內核的裁剪和驅動程序的設計;采用廣泛應用于嵌入式系統界面的QT封裝的C++類來進行界面設計,可以設計出人機交互流暢穩定的工控機界面。目前自助出票機經過第三方的測試和用戶的初步使用,較好地滿足了客戶的需求。為了擴大本設計的應用場景,我們下一階段的工作目標是:設計出一款基于ARM的自動售票機。
參考文獻:
[1] 劉超,周繼超,張紅星.基于Linux Qt的列車人機界面設計與實現[J].計算機與現代化,2013.4:215
[2] 汪思靜,程志強.基于QT的虛擬示波器的軟面板設計[J].計算機技術與發展,2013.6:180
[3] 孫計偉.基于嵌入式Linux的指紋識別系統設計[J].工業控制計算機,2013.3(26):1
[4] 杜春雷.ARM體系結構與編程[M].清華大學出版社,2003.
[5] 華清遠見嵌入式培訓中心.嵌入式Linux應用程序開發標準教程[M].人民郵電出版社,2010.
[6] 韋東山.嵌入式Linux應用開發完全手冊[M].人民郵電出版社,2010.
[7] 尤晉元.UNIX環境高級編程(第2版)[M].人民郵電出版社,2006.
[8] 倪繼利.Qt及Linux操作系統窗口設計[M].電子工業出版社,2009.
[9] 何劍鋒,栗楠.基于ARM920T嵌入式Linux/Qt4的點菜系統設計[J].計算機應用,2011.6:43
[10] 宋榮.基于Qt/Embedded的嵌入式系統GUI開發[J].機電工程,2009.26(4):90
[11] 曾云,胡頻.嵌入式數據庫在QT中的應用研究與實現[J].國外電子測量技術,2010.9:73
[12] MICHAEL Owens.The Definitive Guide to SQLite[M].US: Apress,2006.
[13] Jasmin Blanchette,Mark Summerfield.C++ CUI Qt3 Program-ming[M].Beihang University,2006.3.
[14] 蘆東昕,周建彬.基于Qt/Embedded的控件擴展研究與實現[J].計算機技術與發展,2006.10:97