苗風(fēng)明 吳德科 田 霞
(1、上海交通大學(xué)軟件學(xué)院,上海 200240;2、萊蕪鋼鐵集團(tuán)有限公司自動(dòng)化部,山東 萊蕪 271104)
山東省萊蕪市鋼鐵集團(tuán)有限公司是年產(chǎn)鋼鐵量1000萬噸以上的特大型鋼鐵聯(lián)合企業(yè),公司每日進(jìn)出倉庫物資數(shù)萬噸,對(duì)外貿(mào)易和內(nèi)部倉儲(chǔ)物資倒運(yùn)車輛日均千車,物資驗(yàn)收工作是關(guān)系到企業(yè)經(jīng)濟(jì)效益與企業(yè)形象的基礎(chǔ)工作。近年來,隨著經(jīng)濟(jì)的發(fā)展,生產(chǎn)規(guī)模的不斷擴(kuò)大,物資驗(yàn)收點(diǎn)也隨之增多,原有的物資驗(yàn)收方法已不能滿足企業(yè)發(fā)展的需要,為解決驗(yàn)收點(diǎn)增多而人員設(shè)備相對(duì)較少而帶來的矛盾,我們借助手持移動(dòng)數(shù)據(jù)終端開發(fā)了一套物資驗(yàn)收程序。
MS7000W 型手持移動(dòng)數(shù)據(jù)終端完全體現(xiàn)了“ALL IN ONE”的設(shè)計(jì)思想,它將圖像獲取、無線通訊、條形碼掃描、RFID讀寫器、WIFI等功能集一身。并且具有堅(jiān)固耐用、多協(xié)議兼容、二次開發(fā)、多種讀取方式、多種通訊傳輸方式、觸摸屏幕、可擴(kuò)展等優(yōu)點(diǎn),能廣泛的應(yīng)用于物流管理、倉儲(chǔ)管理、防偽檢測、圖書館、餐飲業(yè)、門禁考勤等各種場合。
手持移動(dòng)數(shù)據(jù)終端整體框圖
在物資收貨工作中,主要利用手持設(shè)備的RFID讀寫器功能。此設(shè)備通過與IC卡的通訊實(shí)現(xiàn)了物資信息在IC卡中的存儲(chǔ),免去了紙質(zhì)單據(jù)帶來的不便。具體的開發(fā)流程是:
Microsoft ActiveSync
MS7000型手持移動(dòng)設(shè)備裝有Windows Embedded CE操作系統(tǒng)。要使手持設(shè)備與PC機(jī)相連接,首先需要安裝Microsoft ActiveSync同步軟件(網(wǎng)上可以下載,有多種版本)。安裝后啟動(dòng)該軟件,會(huì)在計(jì)算機(jī)右下角顯示此軟件的圖標(biāo)。此外還需安裝Device Driver和SDK(Software Development Kits),前者是 MS7000W手持移動(dòng)數(shù)據(jù)終端的驅(qū)動(dòng)程序,安裝驅(qū)動(dòng)程序后電腦才能識(shí)別設(shè)備并通過同步軟件與設(shè)備進(jìn)行同步,而后者是MS7000W手持移動(dòng)數(shù)據(jù)終端進(jìn)行二次開發(fā)的必要條件,需要通過SDK聯(lián)機(jī)進(jìn)行程序調(diào)試。最后再把手持移動(dòng)設(shè)備數(shù)據(jù)線連接在計(jì)算機(jī)的USB口上,手持設(shè)備和PC機(jī)都會(huì)有相應(yīng)的提示連接成功。
這是本文的重點(diǎn),也是手持設(shè)備二次開發(fā)的核心。手持設(shè)備通過其自帶的感應(yīng)區(qū)與RFID標(biāo)簽進(jìn)行通訊,此設(shè)備的RFID感應(yīng)區(qū)域在機(jī)器的背部,識(shí)別時(shí)需要把標(biāo)簽靠近感應(yīng)區(qū)(標(biāo)簽不同,識(shí)別標(biāo)簽的距離也會(huì)不同),就可以識(shí)別相應(yīng)的標(biāo)簽。RFID技術(shù)是一種非接觸式的射頻識(shí)別技術(shù),它通過射頻信號(hào)自動(dòng)識(shí)別目標(biāo)對(duì)象并獲取射頻卡里相關(guān)的數(shù)據(jù)信息,射頻卡是RFID技術(shù)和IC卡技術(shù)的完美結(jié)合。
手持設(shè)備可以與多種類型的射頻卡進(jìn)行通訊,我們選用的射頻卡類型是M1卡,也就是8位的非接觸式IC卡,具有防沖突機(jī)制,可支持多卡操作。M1卡分為16個(gè)扇區(qū),每個(gè)扇區(qū)分為4個(gè)塊(塊0~3),共64個(gè)塊,按塊號(hào)編輯為0-63。第0扇區(qū)的塊0用于存放廠商的代碼,已經(jīng)固化,不可更改。其他各扇區(qū)的塊0、塊1、塊2為數(shù)據(jù)塊,用來存儲(chǔ)數(shù)據(jù);每個(gè)扇區(qū)的塊3為控制塊,用來存放密碼A、存取控制、密碼B。每個(gè)扇區(qū)的密碼和存取控制都是獨(dú)立的,新卡會(huì)帶有一套初始密碼,為安全起見,使用新卡時(shí)要利用IC卡的加密功能重新設(shè)定其各自扇區(qū)的密碼及存取控制,以防持卡人員用其他讀寫設(shè)備對(duì)IC卡進(jìn)行操作。
手持設(shè)備與IC卡建立通訊的步驟是:首先調(diào)用動(dòng)態(tài)鏈接庫文件(*.DLL)。這是手持設(shè)備與IC卡通訊的基礎(chǔ);執(zhí)行模塊初始化函數(shù);把IC卡靠近手持設(shè)備感應(yīng)區(qū)然后再執(zhí)行尋卡函數(shù),如果函數(shù)返回值為0,則說明手持移動(dòng)設(shè)備與卡通訊成功了。否則說明通訊失?。煌ㄟ^上面對(duì)M1卡的介紹我們知道IC存放數(shù)據(jù)是按塊來存儲(chǔ)的,每個(gè)塊存儲(chǔ)一組數(shù)據(jù),除了第一塊和每個(gè)扇區(qū)用來存放密碼的第4塊,其他塊均可存放數(shù)據(jù),數(shù)據(jù)的讀取和寫入也都是按塊來進(jìn)行的。在對(duì)指定的塊進(jìn)行讀寫之前,需要對(duì)此塊所在扇區(qū)的密碼進(jìn)行認(rèn)證,此時(shí)需要調(diào)用密鑰認(rèn)證函數(shù)。如果忽略了此步驟,接下來執(zhí)行IC卡讀寫函數(shù)時(shí)就會(huì)失敗。以上步驟執(zhí)行成功后,就可以調(diào)用讀寫函數(shù)對(duì)IC卡按塊進(jìn)行讀寫等操作。
前期測試工作完成后,就可以進(jìn)行軟件二次開發(fā)了。我們采用的是VS2005(Visual Studio 2005)平臺(tái),開發(fā)語言選擇的是C#(也支持C++等語言)。新建項(xiàng)目選擇智能設(shè)備Windows CE 5.0,即可進(jìn)行程序的開發(fā)和測試。當(dāng)程序開發(fā)完成后,連接上設(shè)備,啟動(dòng)調(diào)試,選擇Windows CE 5.0就可以將程序部署在手持設(shè)備上。物資收貨程序主要分為以下幾個(gè)部分:用戶登錄、收貨確認(rèn)、收貨查詢和數(shù)據(jù)同步。
用戶登錄:為了便于管理,我們?yōu)槊课皇肇洸僮魅藛T建立一個(gè)用戶,登錄自己的用戶名和密碼即可進(jìn)入程序進(jìn)行物資收貨和查詢等操作。對(duì)每一個(gè)收貨地點(diǎn)和收貨人進(jìn)行的收貨操作,系統(tǒng)都要詳細(xì)的記錄。用戶登陸后可根據(jù)需要修改自己的登錄密碼。
收貨確認(rèn):在司機(jī)把貨物運(yùn)到目標(biāo)倉庫后,收貨人員對(duì)司機(jī)隨身攜帶的IC卡中的物資信息(例如車號(hào)、物資名稱、重量、發(fā)貨單位、去向等)進(jìn)行讀取,如果手持設(shè)備讀出的IC卡物資信息與實(shí)際物資信息完全一致,則可進(jìn)行收貨確認(rèn)。將目標(biāo)倉庫對(duì)應(yīng)的收貨單位名稱和收貨人員名字等信息寫入IC卡中,同時(shí)將此條收貨記錄存儲(chǔ)在手持移動(dòng)設(shè)備的SQL CE數(shù)據(jù)庫中。反之,若卡中信息與實(shí)際物資信息不一致,則不予收貨,同時(shí)聯(lián)系發(fā)貨單位和計(jì)量中心核對(duì)相關(guān)信息。
收貨查詢:在手持設(shè)備中裝入SQL Server Compact Edition(SQL CE)數(shù)據(jù)庫,將收貨記錄存入數(shù)據(jù)庫,以方便對(duì)歷史信息的查詢、修改和匯總??芍С侄鄺l件組合式查詢。
數(shù)據(jù)同步:在應(yīng)用程序部署完成后,由于移動(dòng)設(shè)備里的SQL CE數(shù)據(jù)庫是離線數(shù)據(jù)庫,因此需要對(duì)離線數(shù)據(jù)進(jìn)行初始化,就是將后臺(tái)數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)入到離線數(shù)據(jù)庫中,即所謂的數(shù)據(jù)同步。SQL CE數(shù)據(jù)庫支持桌面應(yīng)用程序,可以先將SQL Server,Oracle等各種數(shù)據(jù)庫的數(shù)據(jù)導(dǎo)入到SQL CE中,然后通過ActiveSync將SQL CE的數(shù)據(jù)庫文件(*.sdf)拷貝到移動(dòng)設(shè)備上。數(shù)據(jù)同步的技術(shù)有很多種,我們采用的是ADO.NET直接讀寫數(shù)據(jù)。這種方式性能好且靈活,可以節(jié)省大量的時(shí)間和成本。
手持移動(dòng)設(shè)備在物資驗(yàn)收方面的應(yīng)用,效率高、成本低。既解放了大批人力,使他們可以騰出手來進(jìn)行其他方面的工作,又節(jié)約了大量設(shè)備,避免了浪費(fèi),還能夠提高勞動(dòng)生產(chǎn)率,尤其是物資采購、對(duì)外貿(mào)易和場內(nèi)物資倒運(yùn)的效率,提高了物資管理水平,增加了企業(yè)的經(jīng)濟(jì)效益,促進(jìn)了企業(yè)的現(xiàn)代化和信息化進(jìn)程。
[1].Karli Watson,Christian Nagel,Beginning Microsoft Visual C#2008[M],第4版 清華大學(xué)出版社,2008(12).
[2].王輝,馬維華,基于SQL Server CE數(shù)據(jù)同步技術(shù)的研究與實(shí)現(xiàn)[J],計(jì)算機(jī)技術(shù)與發(fā)展,2008(04).
[3].閆紅蕾,曾文火,Pocket PC 與 SQL Server數(shù)據(jù)庫同步移動(dòng)數(shù)據(jù)的研究[J],科學(xué)技術(shù)與工程,2007(18).