摘要:本文介紹了GPRS無線通信網(wǎng)與無線打印終端系統(tǒng)之間的實時數(shù)據(jù)通信流程、通信協(xié)議及其軟件設計與實現(xiàn)方法,詳細地分析了各軟件層次的實現(xiàn)方法和TCP/IP在RABBIT3000上的實現(xiàn),達到了移動支付即時獲取的設計目的,取得了良好的經(jīng)濟效益和社會效益。
引言
在信用卡應用不到半個世紀,支付方式又將經(jīng)歷一次歷史性的變革——基于無線通信技術上的移動支付方式的出現(xiàn),使支付形式徹底擺脫空間上的一切束縛,不但廣泛而便捷地應用在固定交易場所;而且可以實現(xiàn)移動過程中的支付功能,從而為消費者創(chuàng)造了更靈活、更親切的消費環(huán)境,實現(xiàn)了錢包的電子化、移動化,是一種全新的支付手段。
目前,世界各國都在積極研究這項新興的移動支付系統(tǒng),澳大利亞和芬蘭已經(jīng)率先推出了商用模式,廣東省也在國內(nèi)第一個推出了商用的移動支付系統(tǒng),移動用戶可以通過他們的手機購買地鐵票、可樂、零食等商品。據(jù)統(tǒng)計,移動終端將在三至五年內(nèi)將成為廣泛使用的支付工具,然而這種新興的支付方式,還不能提供消費者票據(jù)憑證,這不符合中國人目前的消費觀念,人們急待一種能夠獲取票據(jù)憑證的方法來完善這一新興的支付方式,基于這種狀況研制開發(fā)無線POS 打印終端系統(tǒng)就很有必要。
1、系統(tǒng)總體方案的設計
系統(tǒng)總體框圖如圖1所示:
統(tǒng)組成說明:主控CPU 采用Z-WORLD 公司的RABBIT3000,SRAM 采用CYPRESS 公司的CY62128,F(xiàn)LASH 采用SST 公司的SST39VF020,打印機采用GPRINTER 公司的GP-7635,GPRS模塊采用西門子公司的MC35,CPU 內(nèi)嵌TCP/IP 協(xié)議棧。
系統(tǒng)整體框架如下,為了控制整個系統(tǒng)穩(wěn)定運行,系統(tǒng)需要一個微處理器,為了打印出一張憑證,系統(tǒng)需要一個微型打印機。因為系統(tǒng)需要通過無線的方式接入Internet,所以該系統(tǒng)還需要一個無線通信模塊,該通訊模塊可以接入Internet,選用GPRS 通信模塊或者CDMA 通訊模塊。為了接入Internet,僅僅有一個通訊模塊還不行,還需要遵循Internet 的共有通信協(xié)議。這樣改系統(tǒng)有好幾種組合方式,本系統(tǒng)選用內(nèi)嵌TCP/IP 協(xié)議棧的CPU。采用MCU 及固化了TCP/IP 協(xié)議的芯片組成應用系統(tǒng)的核心,應用系統(tǒng)可以直接上網(wǎng),硬件電路相對簡單。該方案具有如下優(yōu)點;①不依賴PC 機或高檔單片機,真正實現(xiàn)8 位單片機系統(tǒng)直接接入Internet,整個系統(tǒng)完全自給自足;②使用外圍器件少,系統(tǒng)成由低。
2、軟件層次結構
程序中的所有代碼都是由C 語言編寫的,并采用分層的結構,從底到上分別為:串口驅(qū)動層、GPRS 模塊驅(qū)動層、PPP 協(xié)議層、IP 協(xié)議層、UDP 協(xié)議層與應用層。上層函數(shù)的實現(xiàn)需要應用到底層函數(shù),而底層函數(shù)的任務就是為上層函數(shù)提供服務,最終完成應用層任務——傳送數(shù)據(jù)。各層的主要函數(shù)如圖2 所示:
2.1 驅(qū)動程序編寫
首先是串行口驅(qū)動層。它實現(xiàn)打開串口(OpenComm)、關閉串口(CloseComm)、讀串口數(shù)據(jù)(ReadComm)、寫串口數(shù)據(jù)(WriteComm)等函數(shù)。例如 WriteComm 函數(shù)向串口發(fā)送一個字節(jié)的數(shù)據(jù),而transmit 函數(shù)向串口發(fā)送一個字符串的數(shù)據(jù)。
然后,在這些串口函數(shù)的基礎上編寫GPRS 模塊的驅(qū)動函數(shù)。微控制器通過串行口控制GPRS模塊,進行撥號、設置等操作?刂频姆椒ㄊ遣捎肁T 命令。在控制GPRS 模塊撥打移動夢網(wǎng)GGSN的登錄號碼“*99**1#”之后,GPRS 模塊就轉(zhuǎn)入在線模式(0n-Line)。此時微控制器向串行口發(fā)送的所有數(shù)據(jù)都透明地傳送給了GGSN ,同樣GGSN 的回答也傳回單片機的串行口。當數(shù)據(jù)傳送完成后,微控制器需要通知 GPRS 模塊結束會話,并從在線模式轉(zhuǎn)口普通的命令模式,這可以通過置高DTR 線完成。同時,如果線路由于異常斷開,CD 線會回復到平常的低電平,所以處于在線模式下也要不斷檢測CD 線是否處于高電平。根據(jù)這些操作,可以編寫GPRS 驅(qū)動函數(shù):初始化GPRS模塊函數(shù)(GPRSInit)、撥號函數(shù)(GPRSDial)、斷開連接函數(shù)(GPRSHangup)、檢測是否處于在線狀態(tài)函數(shù)(GPRS0nline)。
這些底層的驅(qū)動函數(shù)將會使上層協(xié)議的編寫很方便,更重要的是,它為我們提供了一個驅(qū)動抽象層。當?shù)讓佑布龀龈膭拥臅r候,只需要對底層的驅(qū)動函數(shù)進行改動,而上層函數(shù)的代碼不變。
2.2 PPP協(xié)議的實現(xiàn)
由于移動夢網(wǎng)的GGSN與GPRS模塊通信時遵循PPP 協(xié)議,所以要在微控制器中也實現(xiàn)一部分PPP協(xié)議才能與之對話。GPRS 模塊在撥號后首先要與GPRS 網(wǎng)關進行通信鏈路的協(xié)商,即協(xié)商點到點的各種鏈路參數(shù)配置。協(xié)商過程遵守LCP(Link Control Protocol)、PAP(Password AuthenticationProtocol)和IPCP(Internet Protocol Control Protocol)等協(xié)議。其中 LCP 協(xié)議用于建立、構造、測試鏈路連接;PAP 協(xié)議用于處理密碼驗證部分;IPCP 協(xié)議用于設置網(wǎng)絡協(xié)議環(huán)境,并分配IP 地址。
協(xié)商機制用有限狀態(tài)機的模型來實現(xiàn)。一旦協(xié)商完成,鏈路已經(jīng)創(chuàng)建,IP 地址已經(jīng)分配就可以按照協(xié)商的標準進行IP 報文的傳輸了。根據(jù)應用的不同,IP 報文中可以攜帶UDP 報文,也可以是TCP或ICMP 報文。數(shù)據(jù)傳輸完成之后,微控制器會向GGSN 發(fā)送LCP 的斷開連接報文,以終止網(wǎng)絡連接。
微控制器的串口中斷接收程序首先以包起始和結束符來判斷是否有完整的PPP 包,并對PPP 包的內(nèi)容進行校驗;以確定數(shù)據(jù)包的完整性和正確性。然后,在主循環(huán)中進入PPP 報文解析模塊,解析過程如圖4 所示。
2.3 登錄GGSN 的過程
系統(tǒng)的一個難點是微控制器登陸 GPRS 網(wǎng)關(GGSN)并與網(wǎng)關通過LCP、PAP、IPCP 協(xié)議進行協(xié)商的過程。LCP、PAP 與IPCP 協(xié)議的幀結構大同小異,最常用的為請求(REQ)、同意(ACK)和拒絕(NAK)三種幀。微控制器與GGSN 各為一方進行協(xié)商,任何一方都可以發(fā)送REQ 幀請求某方面的配制,另一方覺得配置不能接受會回應NAK 幀,如果可以則回應ACK 幀。為了節(jié)省資源,我們只處理這三種數(shù)據(jù)幀,其它鏈路問題都由微控制器在程序控制下自己重新?lián)芴柦鉀Q。協(xié)商過程大致描述如下:在撥號成功連接后,GGSN 首先會返回一個PAP REQ 數(shù)據(jù)幀。我們發(fā)送一個空 LCP REQ 幀,以強迫進行協(xié)議協(xié)商階段。隨后,GGSN 發(fā)送LCP 設置幀,我們拒絕所有的設置并請求驗證模式。GGSN 選擇CHAP 或PAP 方式驗證,我們只接受PAP 方式。然后,進行PAP 驗證用戶名和密碼過程,在GPRS 中用戶名與密碼都為空,如果成功,GGSN 會返回IPCP報文分配動態(tài)IP 地址。此時,就完成了與GGSN 的協(xié)商過程。協(xié)商過程的狀態(tài)轉(zhuǎn)換如圖5 所示。
協(xié)商完成后進入 IP 數(shù)據(jù)報通信階段。此時,微控制器向GGSN 發(fā)送的所有包含IP 報文的PPP 報文都會被傳送給Internet網(wǎng)中相應的IP地址;而遠端所有向微控制器IP地址發(fā)送的報文也都會經(jīng)GPRS網(wǎng)傳送到微控制器上,從而完成微控制器與遠程主機通過互聯(lián)網(wǎng)的數(shù)據(jù)傳輸。
共 2 頁:1 2
中國一卡通網(wǎng)