使用射頻IC卡管理貨場(chǎng)的系統(tǒng)設(shè)計(jì)
文章出處:http://srpd123.com 作者:孫玉潔 余雪麗 李玉冰 人氣: 發(fā)表時(shí)間:2011年12月02日
[文章內(nèi)容簡(jiǎn)介]:主要介紹一種射頻IC卡就貨場(chǎng)事務(wù)管理的硬件和軟件設(shè)計(jì)。硬件設(shè)計(jì)方面簡(jiǎn)述系統(tǒng)結(jié)構(gòu);軟件方面給出了開(kāi)發(fā)環(huán)境.設(shè)計(jì)架構(gòu)和關(guān)鍵代碼。數(shù)據(jù)庫(kù)服務(wù)器采用SQLServer。靈活的C/S結(jié)構(gòu)使得系統(tǒng)擴(kuò)充很容易。
1、引言
如何對(duì)大型貨場(chǎng)中的貨物進(jìn)行管理,是一個(gè)非常關(guān)鍵的問(wèn)題 本文介紹了一種對(duì)貨物進(jìn)入貨場(chǎng)進(jìn)行驗(yàn)證和查收的解決方案。即:使用手持電腦與遠(yuǎn)程數(shù)據(jù)服務(wù)器聯(lián)系,對(duì)貨物進(jìn)行管理。
2、系統(tǒng)總體方案
本系統(tǒng)采用美國(guó)HP公司的SI850射頻識(shí)別IC卡讀寫(xiě)器、HP掌上電腦、HP射頻卡、無(wú)線接收裝置、以太網(wǎng)絡(luò)開(kāi)發(fā)貨場(chǎng)管理系統(tǒng) 系統(tǒng)具有目標(biāo)識(shí)別、身份驗(yàn)證、數(shù)據(jù)采集、數(shù)據(jù)加密和數(shù)據(jù)庫(kù)管理的功能。系統(tǒng)由掌上電腦、與掌上電腦匹配的讀寫(xiě)卡器、本地服務(wù)器、數(shù)據(jù)庫(kù)管理系統(tǒng)、掌上電腦和數(shù)據(jù)庫(kù)管理微機(jī)及本地服務(wù)器的通訊系統(tǒng)部分組成。本地主機(jī)與掌上電腦之間的通信采用TCP/IP協(xié)議。采用C/S模式。本地服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器之問(wèn)用基于以太網(wǎng)的ADO接口進(jìn)行數(shù)據(jù)交流。
本系統(tǒng)主要目的是對(duì)物流運(yùn)輸行業(yè)中的貨場(chǎng)部分進(jìn)行管理, 當(dāng)有車輛到達(dá)時(shí)。如網(wǎng)絡(luò)連通.使用車輛所帶的IC卡查詢遠(yuǎn)程數(shù)據(jù)庫(kù).如網(wǎng)絡(luò)不通.則讀出IC卡中的物料清單.并將貨物清單顯示在掌上電腦上.供貨場(chǎng)管理人員審核,如無(wú)誤.則將貨物已到貨場(chǎng)信息寫(xiě)入數(shù)據(jù)庫(kù)服務(wù)器.并寫(xiě)入IC卡.通過(guò)使用IC卡的方式.管理物流問(wèn)題,具體流程如圖1所示。
3、系統(tǒng)硬件結(jié)構(gòu)
系統(tǒng)由遠(yuǎn)程數(shù)據(jù)服務(wù)器,本地服務(wù)器,若干掌上電腦及讀卡器組成。如圖2所示。若干個(gè)掌上電腦通過(guò)無(wú)線通訊網(wǎng)絡(luò)與本地服務(wù)器通訊.本地服務(wù)器與遠(yuǎn)程數(shù)據(jù)庫(kù)服務(wù)器使用以太網(wǎng)通訊。
4、軟件結(jié)構(gòu)
掌上電腦使用微軟WINCE操作系統(tǒng).該客戶端軟件使用EVC4.0為開(kāi)發(fā)工具.使用Pocket PC 2003 SDK庫(kù).本地服務(wù)器程序使用VC6.0開(kāi)發(fā).?dāng)?shù)據(jù)庫(kù)服務(wù)器使用SQL Server為數(shù)據(jù)庫(kù)平臺(tái),通訊都采用TCP, 中的面向連接的服務(wù)。其中掌上電腦與本地服務(wù)器之間通訊采用無(wú)線通訊。掌上電腦使用紅外端口。而本地服務(wù)器采用無(wú)線網(wǎng)卡。本地服務(wù)器與數(shù)據(jù)庫(kù)服務(wù)器通訊使用以太網(wǎng)。
1.掌上電腦軟件
掌上電腦軟件分為兩部份。第一部分為讀,寫(xiě)卡軟件。第二部分為無(wú)線通訊部分.無(wú)線通訊與普通通訊軟件沒(méi)有任何區(qū)別,系統(tǒng)底層屏蔽了有線與無(wú)線的通訊差異,都采用WINSOCKET通訊。
(1) 讀寫(xiě)卡部份
HP公司提供了掌上電腦的讀寫(xiě)器.并將掌上電腦安裝在其中。通過(guò)這一單元來(lái)進(jìn)行卡的讀寫(xiě)。編寫(xiě)卡讀寫(xiě)軟件時(shí),只須將隨讀寫(xiě)器一起提供的動(dòng)態(tài)連接庫(kù)安裝到臺(tái)式機(jī)上,并且連接到EVC4、0的工程內(nèi)。對(duì)于此動(dòng)態(tài)連接庫(kù)來(lái)說(shuō)。常用的函數(shù)有四個(gè):
第一個(gè)函數(shù)用來(lái)打開(kāi)與讀寫(xiě)器的連接。第一個(gè)參數(shù)為返回的句柄hCom.第二個(gè)參數(shù)為用來(lái)通訊的端口??梢栽O(shè)為“COM1:”到“COM9”中的一個(gè)。第二個(gè)函數(shù)用來(lái)關(guān)閉打開(kāi)的句柄。
第三個(gè)函數(shù)用來(lái)向卡中寫(xiě)入一個(gè)32位整數(shù).hCom 為端口句柄,word 為寫(xiě)入整數(shù)的地址。data為寫(xiě)入的32位整形數(shù)據(jù)。標(biāo)志flags一般設(shè)為0。
第四個(gè)函數(shù)用來(lái)從卡中讀人數(shù)據(jù),*data為指向讀人的整形數(shù)據(jù)的指針。word_ start為讀人數(shù)據(jù)的起始地址,word_length要讀入的數(shù)據(jù)個(gè)數(shù).flags同上。使用這些函數(shù)時(shí)應(yīng)按如下步驟:首先用RFIDOpen打開(kāi)一個(gè)與讀寫(xiě)器相連的端口.并獲得一個(gè)句柄:接著用SaharaWfitd SaharaRead讀寫(xiě)卡;讀寫(xiě)完畢后用RHDCIose關(guān)閉端口以釋放資源。必須注意的是打開(kāi)通訊口時(shí)必須用一個(gè)循環(huán)從Com1開(kāi)始向上試探。如果某個(gè)口被成功打開(kāi)(返回值為scs_OK)時(shí)退出循環(huán)。另外須注意讀寫(xiě)卡時(shí)可能會(huì)出錯(cuò).所以用循環(huán)讀取,如果成功則退出,否則等待100豪秒后繼續(xù)讀寫(xiě).如果讀寫(xiě)循環(huán)次數(shù)用完還未成功,則寫(xiě)錯(cuò)誤日志并退出。
(2) 通訊程序
掌上電腦通訊軟件為客戶端軟件.所以在這里主動(dòng)與本地服務(wù)器通訊。遵循以下步驟:
第一根據(jù)本地服務(wù)器的IP地址和給定的端口打開(kāi)一個(gè)與服務(wù)器的連接。
第二根據(jù)協(xié)議類型使用此連接向本地主機(jī)發(fā)送協(xié)議數(shù)據(jù),或從本地主機(jī)接收數(shù)據(jù)。進(jìn)行數(shù)據(jù)傳輸。
第三完成流程后斷開(kāi)連接.以釋放本地服務(wù)器和掌上電腦資源。
從掌上電腦打開(kāi)與本地服務(wù)器的連接使用TCP/IP協(xié)議.雖然使用無(wú)線網(wǎng)卡與本地服務(wù)器通訊. 由于系統(tǒng)屏蔽了無(wú)線通訊與有線通訊的差別,所以對(duì)程序員來(lái)說(shuō)是透明的,無(wú)線通訊與有線通訊是一樣的接口,沒(méi)有任何區(qū)別。每次發(fā)送或接收的數(shù)據(jù)類型都是BYTE型的,所以當(dāng)接收到一定數(shù)量的數(shù)據(jù)后。都將其轉(zhuǎn)換為相應(yīng)的數(shù)據(jù)結(jié)構(gòu)。關(guān)鍵代碼如下:
打開(kāi)連接的關(guān)鍵代碼:
以上代碼中m_psecket是Csecket派生類的對(duì)象.
2.本地服務(wù)器端的程序
本地服務(wù)器端的程序由以下兩功能.一是建立一個(gè)監(jiān)聽(tīng)服務(wù)線程.用于接收掌上電腦端的連接請(qǐng)求。二是接收到掌上電腦的連接請(qǐng)求后。建立一個(gè)單獨(dú)的線程用于和掌上電腦進(jìn)行通訊,并且和遠(yuǎn)程服務(wù)器進(jìn)行通訊。處理數(shù)據(jù)流動(dòng)。
(1)監(jiān)聽(tīng)服務(wù)線程
本地服務(wù)器軟件啟動(dòng)后。首先建立監(jiān)聽(tīng)服務(wù)線程。用于監(jiān)聽(tīng)掌上電腦的連接請(qǐng)求.即用來(lái)啟動(dòng)服務(wù)程序.在本軟件中是通過(guò)菜單來(lái)啟動(dòng)的.建立一個(gè)新的線程使用函數(shù)AfxBeginThread(Re.ceiveSeivice。&data)來(lái)實(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ù)線程中接收到客戶請(qǐng)求后。啟動(dòng)客戶線程的流程。
(2)客戶線程
客戶線程啟動(dòng)后.根據(jù)接收到的套接字句柄建立新的套接字,與掌上電腦端進(jìn)行通訊,接受協(xié)議數(shù)據(jù),根據(jù)協(xié)議數(shù)據(jù)要同遠(yuǎn)程數(shù)據(jù)庫(kù)或掌上電腦端進(jìn)行數(shù)據(jù)交流.同遠(yuǎn)程數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行數(shù)據(jù)交換是采用ADO組件.以下是關(guān)鍵代碼:
3.遠(yuǎn)程數(shù)據(jù)庫(kù)服務(wù)器
遠(yuǎn)程數(shù)據(jù)庫(kù)服務(wù)器使用SQL Server 20o0作為數(shù)據(jù)庫(kù)平臺(tái).建立數(shù)據(jù)庫(kù).并向本地服務(wù)器提供數(shù)據(jù)。
參考文獻(xiàn):
1.方可燕主編,VC6.0實(shí)戰(zhàn)與精通,清華大學(xué)出版社,2000
2.Steve Holzner著,瀟湘工作室譯,VC6.0高級(jí)鳊程,人民郵電出版社2000
本文關(guān)鍵詞:射頻ic卡,tcp/ip服務(wù)程序,貨物管,頻ic卡,tcp/ip服務(wù)程序,貨物管理,ic卡,tcp/ip服務(wù)程序,貨物管理,,c卡,tcp/ip服務(wù)程序,貨物管理,i,卡,tcp/ip服務(wù)程序,貨物管理,ic,,tcp/ip服務(wù)程序,貨物管理,ic卡,tcp/ip服務(wù)程序,貨物管理,ic卡,,cp/ip服務(wù)程序,貨物管理,ic卡,i,p/ip服務(wù)程序,貨物管理,ic卡,ic,/ip服務(wù)程序,貨物管理,ic卡,ic卡,ip服務(wù)程序,貨物管理,ic卡,ic卡讀,p服務(wù)程序,貨物管理,ic卡,ic卡讀寫(xiě),服
上一篇:智能識(shí)別市場(chǎng)現(xiàn)狀及未來(lái)幾年發(fā)展趨勢(shì)[ 12-01 ]
下一篇:手機(jī)支付與IC卡應(yīng)用關(guān)系分析[ 12-02 ]