張少能,曾連蓀
(上海海事大學(xué) 信息工程學(xué)院,上海 201306)
隨著物聯(lián)網(wǎng)概念的不斷普及和其技術(shù)的不斷發(fā)展,物聯(lián)網(wǎng)越來越多地滲透到人們?nèi)粘I畹母鱾€方面。智慧旅游,也被稱為智能旅游。就是利用云計算、物聯(lián)網(wǎng)等新技術(shù),通過互聯(lián)網(wǎng)/移動互聯(lián)網(wǎng),借助便攜的智能導(dǎo)覽設(shè)備,主動感知旅游資源、旅游經(jīng)濟、旅游活動、旅游者等方面的信息,及時發(fā)布,讓人們能夠及時了解這些信息,及時安排和調(diào)整工作與旅游計劃,從而達(dá)到對各類旅游信息的智能感知、方便利用的效果[1]。
在已經(jīng)部署智慧旅游的旅游景點中,會有大量的智能導(dǎo)覽設(shè)備可供游客使用。而作為智能導(dǎo)覽設(shè)備的的提供方,越來越多的租賃和歸還信息,以及游客,員工績效等信息有必要生成系統(tǒng)進(jìn)行管理,為此,筆者設(shè)計了一套基于身份證件掃描的智能導(dǎo)覽設(shè)備的租賃管理系統(tǒng)。
該系統(tǒng)采用SQL Server數(shù)據(jù)庫對景點的所有租賃設(shè)備實行標(biāo)準(zhǔn)化管理,借助OCR(Optical Character Recognition,光學(xué)字符識別)設(shè)備,建立起游客與租賃設(shè)備之間的一一對應(yīng)關(guān)系,方便景點工作人員及時掌握租賃設(shè)備的使用情況。該系統(tǒng)的主要功能功能包括:系統(tǒng)登錄,導(dǎo)覽機租借,導(dǎo)覽機更換,導(dǎo)覽機歸還,導(dǎo)覽機查看,匯總統(tǒng)計,客戶資料,系統(tǒng)設(shè)置,用戶管理等。
1)系統(tǒng)登錄模塊:需用戶提供正確的賬戶和密碼方可進(jìn)入系統(tǒng)。
2)導(dǎo)覽機租借模塊:借助身份證件掃描儀建立游客與導(dǎo)覽機之間的對應(yīng)關(guān)系,做出出租記錄。
3)導(dǎo)覽機更換模塊:提供故障導(dǎo)覽機的更換服務(wù),做出更換記錄。
4)導(dǎo)覽機歸還模塊:將已出租的設(shè)備回收等級,并做出歸還記錄。
5)導(dǎo)覽機查看模塊:提供導(dǎo)覽機租賃情況的實時查詢服務(wù)。
6)匯總統(tǒng)計模塊:統(tǒng)計匯總景點工作人員選定時間段內(nèi)的工作量,工作時間等信息。
7)客戶資料模塊:提供OCR設(shè)備所掃描出的游客資料的查詢服務(wù)。
8)系統(tǒng)設(shè)置模塊:設(shè)置OCR設(shè)備按鍵的功能調(diào)整,掃描圖片的保存路徑等。
9)用戶管理模塊:用戶密碼修改,用戶添加和用戶刪除。
通過調(diào)用IDcard.ocx控件中的特定方法來實現(xiàn)掃描信息的初步獲取。以二代身份證為例,接口方法為BOOLRecog NewIDCardALL(),其實現(xiàn)了對二代證的掃描和識別,識別內(nèi)容包括身份證號碼、姓名、性別、民族、出生日期、住址等。該方法的調(diào)用需要提供4個參數(shù),透過這些參數(shù)來完成掃描結(jié)果的輸出。其中Content參數(shù)為識別內(nèi)容選項,僅使用最低的五個比特。例如要識別姓名和證件號號,那么通過位運算0x00000001&0x00000010得值為0x00000011,即17。在本系統(tǒng)中,需要將掃描出來的信息全部識別出來,則Content參數(shù)的值為 0x0000001E,即 31。
ADO.NET 的名稱起源于 ADO(ActiveX Data Objects),這是一個廣泛的類組,用于在以往的Microsoft技術(shù)中訪問數(shù)據(jù).之所以使用ADO.NET名稱,是因為Microsoft希望表明,這是在.NET編程環(huán)境中優(yōu)先使用的數(shù)據(jù)訪問接口[2]。
它提供了平臺互用性和可伸縮的數(shù)據(jù)訪問。ADO.NET增強了對非連接編程模式的支持,并支持RICH XML。由于傳送的數(shù)據(jù)都是XML格式的,因此任何能夠讀取XML格式的應(yīng)用程序都可以進(jìn)行數(shù)據(jù)處理。事實上,接受數(shù)據(jù)的組件不一定要是ADO.NET組件,它可以是基于一個Microsoft Visual Studio的解決方案,也可以是任何運行在其他平臺上的任何應(yīng)用程序。
2) 采用綜合評分法得出的土豆播種機的播種架試驗裝置的最優(yōu)組合進(jìn)行二次試驗,選取的主要參數(shù)為播種機架傾角α=10°、皮帶轉(zhuǎn)速ω=0.27m/s、種勺空間尺寸大小55 mm×17.5mm。試驗結(jié)果表明,優(yōu)選后的排種器播種粒距合格率可達(dá)91.0%,重播率9%,漏播率2.0%,可以為土豆播種機播種架的改進(jìn)提供理論支持。
ADO.NET的最重要概念之一是DataSet。DataSet是不依賴于數(shù)據(jù)庫的獨立數(shù)據(jù)集合。所謂獨立,就是:即使斷開數(shù)據(jù)鏈路,或者關(guān)閉數(shù)據(jù)庫,DataSet依然是可用的[3]。
有了DataSet,那么,ADO.NET訪問數(shù)據(jù)庫的步驟就相應(yīng)地改變了:
1)創(chuàng)建一個數(shù)據(jù)庫鏈路;
2)請求一個記錄集合;
3)把記錄集合暫存到DataSet;
4)如果需要,返回第 2步;(DataSet可以容納多個數(shù)據(jù)集合);
5)關(guān)閉數(shù)據(jù)庫鏈路;
6)在DataSet上作所需要的操作。
本文采用了sql server express版本的數(shù)據(jù)庫,使用ADO.NET技術(shù)測試數(shù)據(jù)庫連接的部分代碼如下[4]:
一個采用了多線程技術(shù)的應(yīng)用程序可以更好地利用系統(tǒng)資源。其主要優(yōu)勢在于充分利用了CPU的空閑時間片,可以用盡可能少的時間來對用戶的要求做出響應(yīng),使得進(jìn)程的整體運行效率得到較大提高,同時增強了應(yīng)用程序的靈活性。更為重要的是,由于同一進(jìn)程的所有線程是共享同一內(nèi)存,所以不需要特殊的數(shù)據(jù)傳送機制,不需要建立共享存儲區(qū)或共享文件,從而使得不同任務(wù)之間的協(xié)調(diào)操作與運行、數(shù)據(jù)的交互、資源的分配等問題更加易于解決。
在智能導(dǎo)覽設(shè)備的租賃環(huán)節(jié),需要同時進(jìn)行兩項工作:1)即時響應(yīng)現(xiàn)場工作人員關(guān)于掃描導(dǎo)覽設(shè)備的條碼;2)即時響應(yīng)身份掃描設(shè)備的按鍵開始掃描游客證件。為此,需要借助vb.net的多線程技術(shù)。由于vb.net是基于.net框架的,而.net框架的重要組成部分CLR(Common Language Runtime,通用語言運行時)內(nèi)置支持多線程應(yīng)用,可以通過系統(tǒng)的System.Threading類直接建立多線程應(yīng)用程序[5]。
多線程應(yīng)用程序把程序分解為獨立的事務(wù),它們能通過下面的途徑充分提高性能:
1)多線程技術(shù)可以使程序更容易響應(yīng),因為在其他工作繼續(xù)時用戶界面可以保持激活。
2)當(dāng)前不忙的事務(wù)可以把處理器時間讓給其他事務(wù)。
3)花費大量處理時間的事務(wù)可以周期性的把時間讓給其他的事務(wù)。
4)事務(wù)可以在任何時候停止。
5)可通過把單獨事務(wù)的優(yōu)先級調(diào)高或調(diào)低來優(yōu)化性能。
創(chuàng)建和維護(hù)線程的基類是System.Threading.Thread類,它能夠創(chuàng)建并控制線程,設(shè)置其優(yōu)先級并獲取其狀態(tài)。在創(chuàng)建線程前必須引用threading基類:Imports System.Threading。然后可創(chuàng)建一個新的線程類實例,并使用AddressOf語句為要運行的線程指定任務(wù)。接著可以利用 Start、Resume、Suspend、Sleep、Stop、Abort和 Join 等方法操縱線程,還可以通過如 IsAlive、IsBackground、Priority、ApartmentState和 ThreadState等屬性查詢和設(shè)置線程狀態(tài)。如使用Thread類的Sleep方法可以阻滯當(dāng)前線程,使用Suspend方法可以掛起線程,使用Resume可以重新啟動掛起的線程,使用Abort方法可以停止一個線程,使用Join方法可以使當(dāng)前線程等待其他線程運行結(jié)束[6]。
建立并啟動線程的部分代碼如下:
為了防止現(xiàn)場工作人員私自將導(dǎo)覽設(shè)備借出而不在系統(tǒng)記錄以謀取私利的情況發(fā)生,有必要加入導(dǎo)覽設(shè)備的激活認(rèn)證過程。具體實現(xiàn)過程如下:導(dǎo)覽機開機后并不直接進(jìn)入導(dǎo)覽程序,而是進(jìn)入特殊的激活認(rèn)證環(huán)節(jié),監(jiān)聽等待著來自管理機的激活信號;管理機也只有在完成機器條碼掃描及游客身份證件掃描后才會發(fā)出激活信號,待導(dǎo)覽機與管理機完成一次握手協(xié)議后導(dǎo)覽機便進(jìn)入正常的導(dǎo)覽程序。而此時,管理機已經(jīng)將機器的激活信息記錄下來,這樣就可以有效避免前文提到的問題發(fā)生。
完成各個功能模塊的設(shè)計后,就可以將整體融合建立可執(zhí)行文件,形成一個獨立的可執(zhí)行文件,再利用安裝向?qū)Щ蛘咂渌虬ぞ甙严到y(tǒng)打包成一個安裝文件。最終實現(xiàn)如圖1所示的應(yīng)用界面[7]。
圖1 用戶界面Fig.1 User interface
本文使用數(shù)據(jù)庫管理系統(tǒng)實現(xiàn)了對智能導(dǎo)覽設(shè)備的管理,目前已經(jīng)應(yīng)用到安徽省國家AAAA級某風(fēng)景區(qū)。在使用過程中也發(fā)現(xiàn)了一些不足,例如單機版不能實現(xiàn)局域網(wǎng)內(nèi)的多臺機器共享同一數(shù)據(jù)庫,數(shù)據(jù)的處理量有限等問題,還需要再進(jìn)一步地升級和完善。
[1]徐迪威,蔡建新.物聯(lián)網(wǎng)及其應(yīng)用剖析[J].計算機工程與應(yīng)用,2011,47(15):229-231.
XU Di-wei,CAI Jian-xin.Analysis on internet of things and its application[J].Computer Engineering and Applications,2011,47(15):229-231.
[2]王寶祥.基于ADO.NET的數(shù)據(jù)庫訪問技術(shù)研究[J].計算機應(yīng)用與軟件,2004(2):130-132.
WANG Bao-xiang.Study of datebase access technology using ADO.NET method[J].Computer Appiications and software,2004(2):130-132.
[3]Willis T,Newsome B.Visual Basic 2005入門經(jīng)典[M].4版.北京:清華大學(xué)出版社,2006.
[4]李維杰,孫乾君.SQL Server2005數(shù)據(jù)庫原理與應(yīng)用簡明教程[M].北京:清華大學(xué)出版社,2007.
[5]張躍廷.C#數(shù)據(jù)庫系統(tǒng)開發(fā)案例精選[M].北京:人民郵電出版社,2007.
[6]張焰林.基于VB.NET的多線程技術(shù)應(yīng)用[J].計算機系統(tǒng)應(yīng)用,2009,18(2):87-89.
ZHANG Yan-lin.Implementation of multithread technique based on VB.NET [J].Computer system&application,2009,18(2):87-89.
[7]徐振明.Visual Basic.NET程序設(shè)計與應(yīng)用[M].北京:中國水利水電出版社,2007.