物聯(lián)傳媒 旗下網(wǎng)站
登錄 注冊

使用射頻IC卡管理貨場的系統(tǒng)設(shè)計(jì)

作者:孫玉潔 余雪麗 李玉冰
來源:中國一卡通網(wǎng)
日期:2007-08-24 15:26:58
摘要:主要介紹一種射頻IC卡就貨場事務(wù)管理的硬件和軟件設(shè)計(jì)。硬件設(shè)計(jì)方面簡述系統(tǒng)結(jié)構(gòu);軟件方面給出了開發(fā)環(huán)境.設(shè)計(jì)架構(gòu)和關(guān)鍵代碼。數(shù)據(jù)庫服務(wù)器采用SQLServer。靈活的C/S結(jié)構(gòu)使得系統(tǒng)擴(kuò)充很容易。
1、引言 

    如何對大型貨場中的貨物進(jìn)行管理,是一個(gè)非常關(guān)鍵的問題 本文介紹了一種對貨物進(jìn)入貨場進(jìn)行驗(yàn)證和查收的解決方案。即:使用手持電腦與遠(yuǎn)程數(shù)據(jù)服務(wù)器聯(lián)系,對貨物進(jìn)行管理。 

2、系統(tǒng)總體方案

    本系統(tǒng)采用美國HP公司的SI850射頻識別IC卡讀寫器、HP掌上電腦、HP射頻卡、無線接收裝置、以太網(wǎng)絡(luò)開發(fā)貨場管理系統(tǒng) 系統(tǒng)具有目標(biāo)識別、身份驗(yàn)證、數(shù)據(jù)采集、數(shù)據(jù)加密和數(shù)據(jù)庫管理的功能。系統(tǒng)由掌上電腦、與掌上電腦匹配的讀寫卡器、本地服務(wù)器、數(shù)據(jù)庫管理系統(tǒng)、掌上電腦和數(shù)據(jù)庫管理微機(jī)及本地服務(wù)器的通訊系統(tǒng)部分組成。本地主機(jī)與掌上電腦之間的通信采用TCP/IP協(xié)議。采用C/S模式。本地服務(wù)器和數(shù)據(jù)庫服務(wù)器之問用基于以太網(wǎng)的ADO接口進(jìn)行數(shù)據(jù)交流。

    本系統(tǒng)主要目的是對物流運(yùn)輸行業(yè)中的貨場部分進(jìn)行管理, 當(dāng)有車輛到達(dá)時(shí)。如網(wǎng)絡(luò)連通.使用車輛所帶的IC卡查詢遠(yuǎn)程數(shù)據(jù)庫.如網(wǎng)絡(luò)不通.則讀出IC卡中的物料清單.并將貨物清單顯示在掌上電腦上.供貨場管理人員審核,如無誤.則將貨物已到貨場信息寫入數(shù)據(jù)庫服務(wù)器.并寫入IC卡.通過使用IC卡的方式.管理物流問題,具體流程如圖1所示。 
 

射頻IC卡管理貨場流程圖

3、系統(tǒng)硬件結(jié)構(gòu)

    系統(tǒng)由遠(yuǎn)程數(shù)據(jù)服務(wù)器,本地服務(wù)器,若干掌上電腦及讀卡器組成。如圖2所示。若干個(gè)掌上電腦通過無線通訊網(wǎng)絡(luò)與本地服務(wù)器通訊.本地服務(wù)器與遠(yuǎn)程數(shù)據(jù)庫服務(wù)器使用以太網(wǎng)通訊。

射頻IC卡管理貨場系統(tǒng)硬件結(jié)構(gòu)

4、軟件結(jié)構(gòu) 

    掌上電腦使用微軟WINCE操作系統(tǒng).該客戶端軟件使用EVC4.0為開發(fā)工具.使用Pocket PC 2003 SDK庫.本地服務(wù)器程序使用VC6.0開發(fā).?dāng)?shù)據(jù)庫服務(wù)器使用SQL Server為數(shù)據(jù)庫平臺,通訊都采用TCP, 中的面向連接的服務(wù)。其中掌上電腦與本地服務(wù)器之間通訊采用無線通訊。掌上電腦使用紅外端口。而本地服務(wù)器采用無線網(wǎng)卡。本地服務(wù)器與數(shù)據(jù)庫服務(wù)器通訊使用以太網(wǎng)。

1.掌上電腦軟件

 
    掌上電腦軟件分為兩部份。第一部分為讀,寫卡軟件。第二部分為無線通訊部分.無線通訊與普通通訊軟件沒有任何區(qū)別,系統(tǒng)底層屏蔽了有線與無線的通訊差異,都采用WINSOCKET通訊。

    (1) 讀寫卡部份 

    HP公司提供了掌上電腦的讀寫器.并將掌上電腦安裝在其中。通過這一單元來進(jìn)行卡的讀寫。編寫卡讀寫軟件時(shí),只須將隨讀寫器一起提供的動態(tài)連接庫安裝到臺式機(jī)上,并且連接到EVC4、0的工程內(nèi)。對于此動態(tài)連接庫來說。常用的函數(shù)有四個(gè):

    第一個(gè)函數(shù)用來打開與讀寫器的連接。第一個(gè)參數(shù)為返回的句柄hCom.第二個(gè)參數(shù)為用來通訊的端口。可以設(shè)為“COM1:”到“COM9”中的一個(gè)。第二個(gè)函數(shù)用來關(guān)閉打開的句柄。 

    第三個(gè)函數(shù)用來向卡中寫入一個(gè)32位整數(shù).hCom 為端口句柄,word 為寫入整數(shù)的地址。data為寫入的32位整形數(shù)據(jù)。標(biāo)志flags一般設(shè)為0。

    第四個(gè)函數(shù)用來從卡中讀人數(shù)據(jù),*data為指向讀人的整形數(shù)據(jù)的指針。word_ start為讀人數(shù)據(jù)的起始地址,word_length要讀入的數(shù)據(jù)個(gè)數(shù).flags同上。使用這些函數(shù)時(shí)應(yīng)按如下步驟:首先用RFIDOpen打開一個(gè)與讀寫器相連的端口.并獲得一個(gè)句柄:接著用SaharaWfitd SaharaRead讀寫卡;讀寫完畢后用RHDCIose關(guān)閉端口以釋放資源。必須注意的是打開通訊口時(shí)必須用一個(gè)循環(huán)從Com1開始向上試探。如果某個(gè)口被成功打開(返回值為scs_OK)時(shí)退出循環(huán)。另外須注意讀寫卡時(shí)可能會出錯(cuò).所以用循環(huán)讀取,如果成功則退出,否則等待100豪秒后繼續(xù)讀寫.如果讀寫循環(huán)次數(shù)用完還未成功,則寫錯(cuò)誤日志并退出。

    (2) 通訊程序 

    掌上電腦通訊軟件為客戶端軟件.所以在這里主動與本地服務(wù)器通訊。遵循以下步驟: 

    第一根據(jù)本地服務(wù)器的IP地址和給定的端口打開一個(gè)與服務(wù)器的連接。 
    第二根據(jù)協(xié)議類型使用此連接向本地主機(jī)發(fā)送協(xié)議數(shù)據(jù),或從本地主機(jī)接收數(shù)據(jù)。進(jìn)行數(shù)據(jù)傳輸。 
    第三完成流程后斷開連接.以釋放本地服務(wù)器和掌上電腦資源。

    從掌上電腦打開與本地服務(wù)器的連接使用TCP/IP協(xié)議.雖然使用無線網(wǎng)卡與本地服務(wù)器通訊. 由于系統(tǒng)屏蔽了無線通訊與有線通訊的差別,所以對程序員來說是透明的,無線通訊與有線通訊是一樣的接口,沒有任何區(qū)別。每次發(fā)送或接收的數(shù)據(jù)類型都是BYTE型的,所以當(dāng)接收到一定數(shù)量的數(shù)據(jù)后。都將其轉(zhuǎn)換為相應(yīng)的數(shù)據(jù)結(jié)構(gòu)。關(guān)鍵代碼如下: 

    打開連接的關(guān)鍵代碼:

以上代碼中m_psecket是Csecket派生類的對象. 

2.本地服務(wù)器端的程序 

    本地服務(wù)器端的程序由以下兩功能.一是建立一個(gè)監(jiān)聽服務(wù)線程.用于接收掌上電腦端的連接請求。二是接收到掌上電腦的連接請求后。建立一個(gè)單獨(dú)的線程用于和掌上電腦進(jìn)行通訊,并且和遠(yuǎn)程服務(wù)器進(jìn)行通訊。處理數(shù)據(jù)流動。

    (1)監(jiān)聽服務(wù)線程  

    本地服務(wù)器軟件啟動后。首先建立監(jiān)聽服務(wù)線程。用于監(jiān)聽掌上電腦的連接請求.即用來啟動服務(wù)程序.在本軟件中是通過菜單來啟動的.建立一個(gè)新的線程使用函數(shù)AfxBeginThread(Re.ceiveSeivice。&data)來實(shí)現(xiàn),第一個(gè)參數(shù)為線程函數(shù)的執(zhí)行體的函數(shù)名。第二個(gè)參數(shù)為傳遞給此線程的數(shù)據(jù)結(jié)構(gòu)。用于向該線程給出一些具體的數(shù)據(jù).成功執(zhí)行此函數(shù)后.線程函數(shù)便獨(dú)立于主程序運(yùn)行.直至正常退出或被異常中斷.以下是關(guān)鍵代碼:

 

以上代碼顯示在服務(wù)線程中接收到客戶請求后。啟動客戶線程的流程。
 
    (2)客戶線程

    客戶線程啟動后.根據(jù)接收到的套接字句柄建立新的套接字,與掌上電腦端進(jìn)行通訊,接受協(xié)議數(shù)據(jù),根據(jù)協(xié)議數(shù)據(jù)要同遠(yuǎn)程數(shù)據(jù)庫或掌上電腦端進(jìn)行數(shù)據(jù)交流.同遠(yuǎn)程數(shù)據(jù)庫服務(wù)器進(jìn)行數(shù)據(jù)交換是采用ADO組件.以下是關(guān)鍵代碼:


3.遠(yuǎn)程數(shù)據(jù)庫服務(wù)器
 

    遠(yuǎn)程數(shù)據(jù)庫服務(wù)器使用SQL Server 20o0作為數(shù)據(jù)庫平臺.建立數(shù)據(jù)庫.并向本地服務(wù)器提供數(shù)據(jù)。 

參考文獻(xiàn): 
1.方可燕主編,VC6.0實(shí)戰(zhàn)與精通,清華大學(xué)出版社,2000 
2.Steve Holzner著,瀟湘工作室譯,VC6.0高級鳊程,人民郵電出版社2000