李小魁,韓大偉
(河南工程學(xué)院,鄭州451191)
POS系統(tǒng)廣泛應(yīng)用于商場(chǎng)、超市、專賣店、餐飲等連鎖企業(yè)的實(shí)時(shí)業(yè)務(wù)處理和信息管理中.目前,主流的有線通信線路POS系統(tǒng)有兩個(gè)缺點(diǎn):一是ATM機(jī)和POS機(jī)的架設(shè)受線路約束,無(wú)法實(shí)現(xiàn)靈活部署;二是有線線路提供的是專用信道,而業(yè)務(wù)數(shù)據(jù)屬于突發(fā)流量,信道利用率低,通信成本高[1].
本文提出一種基于S3C2440硬件平臺(tái)與 Windows CE操作系統(tǒng)的無(wú)線POS機(jī)的系統(tǒng)設(shè)計(jì)方案,采用Wi-Fi和GPRS相結(jié)合的方式,可解決傳統(tǒng)的POS機(jī)只能在固定場(chǎng)合使用的問(wèn)題,使POS終端不再受有限通信網(wǎng)的限制.
本系統(tǒng)利用Windows CE典型的并行開發(fā)方法[2]進(jìn)行設(shè)計(jì),如圖1所示.
采用結(jié)構(gòu)化的設(shè)計(jì)思想及相應(yīng)技術(shù),將復(fù)雜的系統(tǒng)設(shè)計(jì)轉(zhuǎn)化為各模塊設(shè)計(jì)和數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì).硬件開發(fā)、系統(tǒng)定制、應(yīng)用程序開發(fā)三個(gè)階段[3]的工作都分別完成后,將定制的操作系統(tǒng)和開發(fā)的應(yīng)用程序最終再移植到定制的設(shè)備硬件上進(jìn)行綜合測(cè)試和調(diào)試.
圖1 Windows CE的并行開發(fā)過(guò)程
硬件部分的設(shè)計(jì)包括S3C2440最小化系統(tǒng)、無(wú)線通信模塊、磁卡采集模塊、微型打印機(jī)模塊、液晶顯示模塊的設(shè)計(jì)[4],總體框圖如圖2所示.
圖2 系統(tǒng)總體框圖
1.1.1 S3C2440硬件平臺(tái)
S3C2440是三星公司推出的基于ARM920T的嵌入式處理器,主頻高達(dá)400MHz,最高可達(dá)533MHz.該處理器主要面向高性價(jià)比、低功耗的應(yīng)用設(shè)備.本系統(tǒng)的硬件平臺(tái)以S3C2440為核心,具有無(wú)線網(wǎng)絡(luò)、有線網(wǎng)絡(luò)、液晶顯示、觸摸屏、USB等終端模塊,其構(gòu)成如圖3所示.
圖3 硬件終端模塊示意圖
圖4 POS機(jī)中操作系統(tǒng)的開發(fā)過(guò)程
1.1.2 外圍設(shè)備
無(wú)線模塊:采用的是華為EC121,USB總線接口,數(shù)據(jù)傳輸率為153.6kbps.
磁卡:選用的是強(qiáng)盛QS-901,USB總線接口,滿足本系統(tǒng)一、三磁道的基本要求.
微型打印機(jī):RD-E系列熱敏微型打印機(jī),外接口為串口.
Windows CE操作系統(tǒng)具有很多特性,支持多線程,包含多種可選擇的GUI,能被一系列不同的CPU編譯.同時(shí),Windows CE也具有臺(tái)式計(jì)算機(jī)操作系統(tǒng)的特性.開發(fā)人員無(wú)需花太多的時(shí)間就可以很容易地進(jìn)行基于Windows CE的軟件開發(fā).POS機(jī)中操作系統(tǒng)的開發(fā)過(guò)程如圖4所示.
操作系統(tǒng)開發(fā)大部分是在SDB(標(biāo)準(zhǔn)開發(fā)板)上進(jìn)行的,開發(fā)者通過(guò)新平臺(tái)向?qū)?chuàng)建一個(gè) Windows CE操作系統(tǒng)配置,然后在Platform Builder開發(fā)環(huán)境中增加無(wú)線POS機(jī)所需的用戶特征,將涉及到的無(wú)線網(wǎng)卡、磁卡采集器、微型打印機(jī)、液晶顯示器等驅(qū)動(dòng)程序創(chuàng)建到新的BSP(板級(jí)支持包)上.BSP開發(fā)完成后,將其移植到S3C2440的硬件平臺(tái)當(dāng)中.
1.2.1 Windows CE的Bootloader
在S3C2440系統(tǒng)開發(fā)中,整個(gè)系統(tǒng)的加載啟動(dòng)任務(wù)由Bootloader[5]完成.本設(shè)計(jì)使用的Bootloader是Supervivi,它支持 CRAMFS、YAFFS文件系統(tǒng)和USB下載,能自動(dòng)識(shí)別并啟動(dòng)Windows CE等多種嵌入式操作系統(tǒng),能下載程序到內(nèi)存中執(zhí)行,并具有系統(tǒng)備份和恢復(fù)功能,非常適合批量生產(chǎn)中使用.
Supervivi的菜單中有燒寫系統(tǒng)、調(diào)試、設(shè)置參數(shù)和分區(qū)等模式.它采用USB下載的方式,搭建燒寫環(huán)境極為簡(jiǎn)單,并且下載速度快,使用十分方便.
1.2.2 設(shè)備的驅(qū)動(dòng)程序
設(shè)備的驅(qū)動(dòng)程序可以通過(guò)動(dòng)態(tài)鏈接庫(kù)(DLL)靜態(tài)鏈接到操作系統(tǒng)中,也可以作為目標(biāo)文件靜態(tài)鏈接到操作系統(tǒng)中.
無(wú)線POS系統(tǒng)終端依據(jù)無(wú)線網(wǎng)卡與上位機(jī)或其他網(wǎng)絡(luò)主機(jī)通信,無(wú)線網(wǎng)卡通過(guò)天線發(fā)送和接受數(shù)據(jù)信號(hào).網(wǎng)卡驅(qū)動(dòng)程序包括USB入口函數(shù)、小端口初始化、數(shù)據(jù)接收、數(shù)據(jù)發(fā)送和信息設(shè)置與查詢,網(wǎng)卡驅(qū)動(dòng)結(jié)構(gòu)如圖5所示.
在Windows CE系統(tǒng)下,驅(qū)動(dòng)的安裝都是由驅(qū)動(dòng)控制程序讀取相關(guān)注冊(cè)表,然后加載到特定空間實(shí)現(xiàn)的.
無(wú)線網(wǎng)卡驅(qū)動(dòng)的安裝也是通過(guò)Platform Builder平臺(tái)將無(wú)線網(wǎng)卡驅(qū)動(dòng)構(gòu)建到OS鏡像當(dāng)中,然后在相關(guān)配置文件中進(jìn)行添加與修改完成的,包括自動(dòng)加載注冊(cè)表和相關(guān)配置文件如DIRS文件、makefile文件、SOURCES文件和.bib文件.
圖5 網(wǎng)卡驅(qū)動(dòng)結(jié)構(gòu)
無(wú)線網(wǎng)卡驅(qū)動(dòng)的設(shè)計(jì)步驟如下:
(1)在%_WINCEBOOT%\PLATFORM\CEPC\Drivers文件目錄下創(chuàng)建一個(gè)新的文件夾KUI500,然后將寫好的.c和.h文件拷貝到KUI500內(nèi);
(2)添加 makefile文件和sources文件.其中,makefile文件為:
!INCLUDE $(_M(jìn)AKEENVROOT)\makefile.def
sources文件為:
WINCEREL=1
__PROJROOT = $(_PROJECTROOT)
TARGETNAME=KUI500
TARGETTYPE=NOTARGET//定義連接類型
DLLENTRY=DllEntry//相關(guān)函數(shù)從此開始
CDEFINES= $(CDEFINES)-DNDIS_M(jìn)INIPORT_DRIVER
-DNDIS50_M(jìn)INIPORT
-DWIN2000
-D_802_11_PROTOCOL
-DNDIS_WDM
-DWINCE
-DCE5
TARGETLIBS=\//定義所需連接庫(kù)信息
%_PROJECTROOT%\cesysgen\oak\lib\x86\retail\usbd.lib\
%_PROJECTROOT%\cesysgen\sdk\lib\x86\retail\commctrl.lib\
%_PROJECTROOT%\cesysgen\sdk\lib\x86\retail\coredll.lib\
%_PROJECTROOT%\cesysgen\sdk\lib\x86\retail\ndis.lib\
%_PROJECTROOT%\cesysgen\sdk\lib\x86\retail\winsock.lib\
%_PROJECTROOT%\cesysgen\sdk\lib\x86\retail\ntcompat.lib\
SOURCES=\//定義所需代碼
KUI500.c\
iterrrupt.c\
request.c\
FILE_VIEW_PARAMETER_FOLDER=\
KUI500.bib\
KUI500.reg\
KUI500.def\
(3)添加.def文件:
LIBRARY KUI500
EXPORTS
DriverEntry //程序入口
USBInstallDriver //USB讀驅(qū)動(dòng)
USBDeviceAttach //讀取設(shè)備,執(zhí)行網(wǎng)卡驅(qū)動(dòng)
(4)創(chuàng)建.bib文件:
MODULES
KUI500.dll$(_FLATRELEASEDIR)\KUI500.dll NK
(5)添加注冊(cè)表信息如下:[HKEY_LOCAL_M(jìn)ACHINE\Drivers\USB\ClientDr ivers\KUI500]
"Miniport"="KUI500"
"Prefix"="NDS"
"Dll"="NDIS.dll"
[HKEY_LOCAL_M(jìn)ACHINE\Drivers\USB\LoadClients\VNT_RNN\Default\Default\KUI500]
"Dll"="KUI500.dll"
;USB相關(guān)信息,設(shè)備具體信息說(shuō)明
[HKEY_LOCAL_M(jìn)ACHINE\Comm\KUI500]
"DisplayName"="WLAN Card Driver""Group"="NDIS"
"ImagePath"="KUI500.dll"
[HKEY_LOCAL_M(jìn)ACHINE\Comm\KUI500\Parms]
;網(wǎng)卡相關(guān)參數(shù)設(shè)置以及小端口具體參數(shù)設(shè)置如下:
"BusType"=dword:0
"BusNumber"=dword:0
"AdapterCFID"=dword:31841106
"NetworkAddress"=""
"DesiredSSID"=""
"AdapterType"=dword:0
"TransmitBuffers"=dword:00000020
"ReceiveBuffers"=dword:00000020
"ConnectionRate"=dword:0c
"Channel"=dword:06
"PreambleType"=dword:1
"RTSThreshold"=dword:092b
"FragThreshold"=dword:092a
"OperationMode"=dword:0
"BeaconInterval"=dword:64
"RadioControl"=dword:0
;靜態(tài)IP分配設(shè)置相關(guān)信息如下:[HKEY_LOCAL_M(jìn)ACHINE\Comm\KUI500\Parms\
TcpIp]
"EnableDHCP"=dword:0;DHCP使能關(guān)閉
eZeroBroadcast"=dword:0
"IpAddress"="192.168.1.100";靜態(tài)IP地址
"Subnetmask"="255.255.255.0";相對(duì)子網(wǎng)掩碼分配
"DNS"="";DNS分配
"WINS"=""
BSP文件調(diào)好以后,點(diǎn)Build->Build Platform或者點(diǎn)工具欄的圖標(biāo)開始編譯.編譯完畢,若不出錯(cuò),D:\WINCE500\PBWorkspaces\kui\RelDir\2440_ARMV 4I_Release文件夾中就會(huì)存在 NK.bin和NK.nb0兩個(gè)文件,其中NK.bin為本設(shè)計(jì)所需的系統(tǒng)映像文件.
Windows CE系統(tǒng)的燒寫過(guò)程如下:
(1)格式化 Nand Flash;
(2)重新安裝BIOS;
(3)安裝Eboot;
(4)裝載Windows CE內(nèi)核映象并運(yùn)行硬件系統(tǒng).
為了驗(yàn)證所開發(fā)的POS機(jī)的工作性能是否符合設(shè)計(jì)要求,將系統(tǒng)大致劃分為主控板模塊、觸摸屏驅(qū)動(dòng)模塊、讀卡模塊、無(wú)線通信模塊等4個(gè)功能模塊,分別對(duì)其測(cè)試與驗(yàn)證.具體測(cè)試方法[6]如下:
(1)主控板測(cè)試:
①下載系統(tǒng)映像文件NK.bin到主控板中,查看能否正常下載;
②下載完成后加電,觀察啟動(dòng)過(guò)程是否正常;
③啟動(dòng)完成后,和PC機(jī)進(jìn)行文本同步傳輸和系統(tǒng)小程序操作,測(cè)試主控板是否正常工作.
(2)觸摸屏驅(qū)動(dòng)測(cè)試:
①主控板檢測(cè)完成后,通過(guò)控制面板調(diào)試,觀察觸摸屏能否正常工作;
②反復(fù)啟動(dòng)校準(zhǔn),觀察啟動(dòng)過(guò)程對(duì)觸摸屏校準(zhǔn)是否影響.
(3)讀卡測(cè)試:
①將讀卡器與主控板鏈接,反復(fù)插拔讀卡器接口,觀察讀卡器工作情況;
②多次讀取會(huì)員卡號(hào)與銀行卡號(hào),查看讀卡編號(hào)情況.
(4)無(wú)線通信測(cè)試:
采用無(wú)線網(wǎng)絡(luò)收發(fā)測(cè)試方法,測(cè)試步驟如下:
①通過(guò)PC機(jī)地址欄輸入IP登錄無(wú)線路由器,更改無(wú)線路由器MAC地址及IP地址,PING主機(jī)與路由器,檢查主機(jī)與無(wú)線路由器的網(wǎng)絡(luò)通信情況;
②打開路由器無(wú)線工作模式選項(xiàng),設(shè)置無(wú)線工作信息,打開硬件開發(fā)平臺(tái),確定工作正常后,插上無(wú)線網(wǎng)卡,完成自動(dòng)收索,然后在PC機(jī)運(yùn)行ping 192.168.1.100-n 16進(jìn)行檢測(cè),查看無(wú)線網(wǎng)絡(luò)通訊是否正常;
③多次操作以上步驟,并觀察無(wú)線路由器服務(wù)端,查看無(wú)線網(wǎng)卡的工作情況.
由于測(cè)試過(guò)程受到偶然因素的影響,我們對(duì)系統(tǒng)進(jìn)行了1 000次測(cè)試.測(cè)試結(jié)果表明,系統(tǒng)誤差率為0.1%,符合系統(tǒng)功能測(cè)試誤差率的標(biāo)準(zhǔn)要求.可見,無(wú)線POS系統(tǒng)性能良好.
本文提出了一種基于S3C2440硬件平臺(tái)和嵌入式Windows CE操作系統(tǒng)的無(wú)線POS機(jī)的系統(tǒng)設(shè)計(jì)方案.硬件部分重點(diǎn)設(shè)計(jì)主控系統(tǒng)和無(wú)線通信驅(qū)動(dòng)模塊;操作系統(tǒng)主要設(shè)計(jì)外圍設(shè)備的驅(qū)動(dòng)程序,通過(guò)新平臺(tái)向?qū)?chuàng)建一個(gè)操作系統(tǒng)配置,然后通過(guò)增加無(wú)線POS機(jī)所需的用戶特征,創(chuàng)建一個(gè)新的BSP,把Windows CE內(nèi)核裝載到硬件系統(tǒng)當(dāng)中.最后對(duì)主控系統(tǒng)、無(wú)線網(wǎng)卡、讀卡、觸摸屏等重要模塊進(jìn)行了測(cè)試.測(cè)試結(jié)果表明,本文設(shè)計(jì)的無(wú)線POS系統(tǒng)性能良好,有一定的實(shí)用價(jià)值.(本研究受河南工程學(xué)院青年基金支持)
[1]許德剛,孫會(huì)峰,甄彤.物流系統(tǒng)中移動(dòng)POS終端的設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2007(6):149-151.
[2]張冬泉,譚南林.Windows CE實(shí)用開發(fā)技術(shù)[M].北京:電子工業(yè)出版社,2006.
[3]李梅.基于 Windows平臺(tái)的POS信息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].科技創(chuàng)新導(dǎo)報(bào),2008(1):11-12.
[4]李小魁,王忠勇.基于嵌入式操作系統(tǒng)平臺(tái)下的觸摸屏驅(qū)動(dòng)程序的開發(fā)與實(shí)現(xiàn)[J].計(jì)算機(jī)與數(shù)字工程,2009(4):79-82.
[5]徐晨輝,盧文科,黃浩.基于ARM-Linux嵌入式移動(dòng)POS機(jī)系統(tǒng)中啟動(dòng)程序的研究與設(shè)計(jì)[J].電子測(cè)量技術(shù),2009,32(1):77-81
[6]韋余紅.無(wú)線POS機(jī)數(shù)據(jù)傳輸安全控制策略研究[J].通信技術(shù),2009(2):270-271.