聞 明,朱亞萍
(杭州電子科技大學自動化學院,浙江杭州310018)
隨著物聯(lián)網(wǎng)的發(fā)展,射頻識別技術和基于WINCE系統(tǒng)的終端設備更多地應用于生產(chǎn)和生活當中。終端設備的應用在國外起步比較早,嵌入式WINCE系統(tǒng)以其友好的用戶界面和良好的性能得到了廣泛地應用,人們一直以來都在關注WINCE系統(tǒng)及其周圍相應配套設備在應用上的優(yōu)勢和需要改進的地方[1]。由于WINCE系統(tǒng)的局限性[2],并不支持對其周圍相應配套設備的直接通信操作。無論是在國外還是國內(nèi),可以直接配套應用在WINCE系統(tǒng)上的射頻讀寫模塊的價格都比較高昂。在讀寫應用上,市面上的中低端RFID模塊一般都是基于單片機和PC機的,并不支持WINCE系統(tǒng),再加上WINCE本來就很復雜的開發(fā)環(huán)境,對于普通開發(fā)者來說,無疑增加了WINCE系統(tǒng)下的讀卡應用的開發(fā)應用難度,找到合適的開發(fā)步驟和方法就顯得很重要了。本文選用價格一般的高頻IC卡讀寫模塊——YW-20x-C,給出了其在ARM 9處理器、WINCE 6.0系統(tǒng)下的讀寫應用的開發(fā)過程。
本文采用的是利用PHILIPS公司的非接觸技術設計的微型嵌入式非接觸式讀寫模塊Y W-20x-C,該天線一體讀寫模塊內(nèi)嵌MFRC500射頻基站,可以讀取13.56 MHz的Mifare One射頻卡[3],帶有默認自動尋卡功能。讀寫模塊引腳如表1所示。
本文選用友善之臂公司的S3C2440開發(fā)板作為讀寫卡模塊的應用平臺,通過UART接口與模塊進行通信,當卡片進入到天線區(qū)后在CARDIN引腳上出現(xiàn)低電平,上位機可通過尋卡指令直接讀取卡片上的信息。模塊與開發(fā)板平臺的連接如圖1所示。
表1 YW-20x-C模塊引腳
圖1 電路連接圖
WINCE驅(qū)動程序是對硬件設備或是虛擬設備的一層軟件抽象,WINCE系統(tǒng)通過設備驅(qū)動與外圍設備進行通信,實現(xiàn)對硬件設備的操作、管理[4]。市面上的RFID模塊基本上沒有提供基于WINCE系統(tǒng)的設備驅(qū)動程序,所以讀寫模塊硬件設備在WINCE系統(tǒng)下開發(fā)應用的首要問題就是解決設備流驅(qū)動的問題,下面給出其驅(qū)動設計的一般步驟:
(1)建立模擬器工具[5]。運行Platform Builder,建立一個基于X86體系的模擬器;
(2)創(chuàng)建驅(qū)動程序工程。在PB6.0平臺的driver目錄下建立要創(chuàng)建的驅(qū)動所在的目錄。如在C:Wince600platformmini2440Srcdrivers目錄下建立一個IOCtrol目錄,修改Drivers目錄下的dirs文件;
(3)創(chuàng)建驅(qū)動程序頭文件YW20x.h和源代碼文件YW20x.c,在該文件中實現(xiàn)流接口函數(shù)。由于模塊使用的是串口通信,故加入DLL接口函數(shù)[6],用來完成標準的文件I/O函數(shù),提供給WINCE操作系統(tǒng)的內(nèi)核使用;
(4)準備配置文件。創(chuàng)建相應的動態(tài)庫導出文件 YW20x.def、Makefile文件和編譯鏈接文件Sources,控制編譯這些文件。使用CEC Editor修改cec文件編譯添加的新特性;
(5)復制新生成的4個文件到Release目錄下。修改注冊表文件platform.reg和platform.bib文件;
(6)Buid and Sysgen,編譯內(nèi)核,將驅(qū)動源程序下載到內(nèi)核文件;
(7)加載驅(qū)動。在模擬器下可以看到驅(qū)動被加載的狀態(tài)。
至此,流驅(qū)動編寫完畢,在相應的目錄下會找到編譯好的動態(tài)庫YW20x.dll,即為驅(qū)動庫文件。將驅(qū)動庫文件加載到目標機中,稍后應用程序使用WINCE操作系統(tǒng)的文件API函數(shù)和流接口進行通信,訪問驅(qū)動程序及實現(xiàn)相應的讀寫卡功能。
應用軟件的開發(fā)環(huán)境[7]是VS2005+SP1+WINCE6.0+mini2440SDK,平臺為.NET,開發(fā)語言為 C#。完成 VS2005下 WINCE6.0開發(fā)環(huán)境的搭建后,安裝 mini2440SDK,然后編寫應用程序YW20xWinceDemo,實現(xiàn)尋卡函數(shù)YW_RequestCard(),讀卡函數(shù)YW_ReadaBlo ck(),寫卡函數(shù)YW_WriteaBlock(),讀錢包函數(shù)YW_Purse_Read(),充值函數(shù)YW_Purse_Charge(),扣費函數(shù)YW_Purse_Decrease()。其功能程序結(jié)構(gòu)框圖如圖2所示。
在VS2005下對應用程序YW20xWinceDemo進行編譯,然后將編譯生成的demo文件在CHSINT SDK ForWinCE 6.0(ARMV4I)模擬器中模擬在wince系統(tǒng)環(huán)境下的運行。模擬調(diào)試結(jié)果顯示完成了WINCE環(huán)境下應用軟件的開發(fā),讀卡、寫卡、充值、扣費等功能函數(shù)得到了體現(xiàn)。
最后,將ARM開發(fā)板通過USB線與PC機相連,通過同步軟件ActiveSync將PC機中之前生成的demo文件同步到ARM終端機中。將射頻讀寫模塊和ARM開發(fā)板連接,打開demo文件,ARM終端機顯示屏上看到的軟件運行界面和之前VS2005平臺下模擬器中模擬運行的軟件界面是完全一樣的,再次驗證了讀寫應用軟件的成功編寫。對各功能函數(shù)進行測試,可以順利讀取IC卡的卡號,以及實現(xiàn)對IC卡的充值、扣費等讀寫操作。
圖2 功能程序結(jié)構(gòu)圖
本文完成了RFID讀寫模塊在WINCE系統(tǒng)下的接口驅(qū)動設計和讀寫應用的軟件設計,實現(xiàn)了讀寫應用功能。目前流行的基于WINCE的終端設備很多都具有導航、呼叫等功能[8],其相應的GPS、GSM/GPRS等功能模塊在WINCE系統(tǒng)平臺下的應用開發(fā)顯得越來越普遍。本文給出了RFID讀寫模塊應用開發(fā)的關鍵過程——流驅(qū)動的編寫步驟和應用程序的開發(fā),為研究基于WINCE系統(tǒng)下的射頻讀寫應用開發(fā)和其他功能模塊的應用開發(fā),奠定了基礎和提供了借鑒。
[1] Nagl L,Krishnamurthi B,Schoenig S,et al.Experiences Using WinCE PocketPCs as Computation and Data Acquisition Platforms for Ambulatory Telemonitoring[C].San Francisco:Proceedings of the 26th Annual International Conference of the IEEE EMB,2004:3 373 -3 376.
[2] Hong bin Ma,Dong yang Lu,Qun He,et al.Serial Communication between PDA and GPSBased on Windows CE[C].Wu Han:2011 Third Pacific-Asia Conference on Circuits Communications and System,2011:1-3.
[3] 友我科技.YW-20x-C射頻卡天線一體讀寫模塊[EB/OL].http://www.youwokeji.com.cn/YW-20x-C.htm l,2010 -03 -12/2012 -06 -10.
[4] 丁智勇.基于Windows CE的RFID讀卡器系統(tǒng)設計與實現(xiàn)[D].武漢:武漢理工大學,2008.
[5] 姜波.Windows CE.Net程序設計[M].北京:機械工業(yè)出版社,2007:194-230.
[6] 汪兵.Windows CE嵌入式高級編程及其實例詳解[M].北京:中國水利水電出版社,2008:352-390.
[7] 邱小平,李恬,雷群英.Windows CE6開發(fā)經(jīng)典[M].北京:電子工業(yè)出版社,2009:1-100.
[8] 吳紅蘭,黃圣國.嵌入式GPS數(shù)據(jù)采集與分析系統(tǒng)設計[J].實驗室研究與探索,2011,30(1):54-57.