袁 海,劉幺和,花 奇
(湖北工業(yè)大學(xué)機(jī)械工程學(xué)院,湖北 武漢430068)
隨著物聯(lián)網(wǎng)[1]大規(guī)模普及,在零售、醫(yī)療衛(wèi)生、物流、運(yùn)輸、公共事業(yè)、制造及公共安全等重點(diǎn)行業(yè),及平安家庭、個(gè)人健康、電子支付等公共服務(wù)領(lǐng)域?qū)ζ髽I(yè)級、家庭級或個(gè)人級的移動類物聯(lián)網(wǎng)終端提出了更高要求。不同的移動終端采集自不同來源的數(shù)據(jù),數(shù)據(jù)信息內(nèi)容和信息格式各不相同,導(dǎo)致移動終端對數(shù)據(jù)的識別難度大大增加,識別的種類包括:光電一體化信息識別、圖像處理與識別、聲學(xué)信號的識別、射頻信息識別等。因此,對物體的信息進(jìn)行實(shí)時(shí)、有效的識別是物聯(lián)網(wǎng)發(fā)展亟待解決的問題。利用物聯(lián)網(wǎng)本身的智能處理能力,以及云計(jì)算、模式識別等各種智能技術(shù)能有效解決這一問題。
信息識別技術(shù)是計(jì)算機(jī)發(fā)展的產(chǎn)物,又是輔助計(jì)算機(jī)識別信息的一大類技術(shù)系統(tǒng),可以將它看成是計(jì)算機(jī)的眼睛、耳朵、鼻子和感覺神經(jīng)。就像人的大部分信息獲取來自人的感官一樣,自動信息識別技術(shù)是人們?nèi)粘I钪羞\(yùn)用較多,且較為成熟的一門技術(shù)。
目前信息的載體有一維條形碼、二維條形碼,而容量較大的芯片則通過射頻技術(shù)識別。一維條形碼[2]有信息承載成本低、識別方便等顯著優(yōu)勢,但是信息容量太小。射頻識別技術(shù)的發(fā)展相當(dāng)成熟,對信息的保存也相對安全,不像一維條形碼那樣容易受到損壞,但是其成本相對較高。近幾年逐步成長起來的二維條形碼同一維條形碼一樣,幾乎是零成本信息存儲技術(shù),但是二維條形碼[3]的存儲容量卻大得多,十分適合移動終端本地識別。
移動終端對信息在本地識別的框架如圖1所示,主要包括采集模塊、處理模塊、顯示模塊、系統(tǒng)控制模塊、嵌入式數(shù)據(jù)庫。

圖1 移動終端識別框架圖
采集模塊負(fù)責(zé)對模擬信號進(jìn)行采集,并且轉(zhuǎn)換為數(shù)字信號,如對二維條形碼進(jìn)行掃描。處理模塊所處理的可能是圖像、視頻等數(shù)據(jù),而圖像、視頻數(shù)據(jù)處理的速度要求較高,因此可能會用到DSP等高速處理器。顯示模塊主要應(yīng)用于對識別信息的顯示。控制模塊也稱作主控制器,可進(jìn)行系統(tǒng)移植。μC/OS-II是一個(gè)可移植性、可固化、可裁剪的、占先式多任務(wù)實(shí)時(shí)內(nèi)核,它適用于多種微處理器[4]。嵌入式數(shù)據(jù)庫的種類繁多,主要有Sybase SQL Anywhere、Oracle TimesTen、BerkleyDb和SQLite等,其中SQLite是一款開源的,不受許可證費(fèi)用約束,并且是專門為嵌入式設(shè)計(jì)的[5]。其主要用途在于儲存一定量的識別數(shù)據(jù),例如在語音控制系統(tǒng)中,需要將語音指令保存在系統(tǒng)中。當(dāng)有指令過來時(shí),需要對語音信息進(jìn)行識別,進(jìn)而執(zhí)行指令所對應(yīng)的操作。
這種在本地識別的技術(shù)識別速率高,適合對信息量相對較小的、數(shù)據(jù)結(jié)構(gòu)不復(fù)雜的信息進(jìn)行識別,并且隨著移動終端數(shù)目的增多,其成本也將不斷提高。隨著網(wǎng)絡(luò)化的發(fā)展,面對需要海量存儲和管理的數(shù)據(jù),NSA/SAN(網(wǎng)絡(luò)化存儲)、云存儲和虛擬信息中心在物流、運(yùn)輸、公共事業(yè)、安防監(jiān)控行業(yè)有著巨大的應(yīng)用前景。因此,對海量數(shù)據(jù)的識別也是大勢所趨。
1.2.1 遠(yuǎn)程識別的基本結(jié)構(gòu) 遠(yuǎn)程識別技術(shù)[6]為不同程序域、不同進(jìn)程和不同計(jì)算機(jī)中活動的對象提供了廣泛的框架,使其相互之間能夠進(jìn)行暢通無阻的通信,真正實(shí)現(xiàn)了軟件的分布式應(yīng)用。云端服務(wù)是采用面向服務(wù)的體系結(jié)構(gòu)(service-oriented architecture,SOA)[7],在 SOA 中,接口是關(guān)鍵的,接口定義了服務(wù)的類型,而不是實(shí)現(xiàn)服務(wù)的技術(shù)。
遠(yuǎn)程識別技術(shù)有移動終端和云端兩部分(圖2)。
移動終端分為信息采集器、識別代理、顯示器三個(gè)部分。信息采集器主要用于采集待識別信息,并進(jìn)行模數(shù)轉(zhuǎn)換。采集器采集的信息傳遞給識別代理,由于采集的二進(jìn)制代碼不夠規(guī)范,所以需要識別代理對二進(jìn)制代碼進(jìn)行過濾處理。例如:利用DS18B20采集的十進(jìn)制數(shù)信息為25.6,則其真實(shí)溫度為25.6×0.0625=16℃(0.0625為溫度常數(shù)),并且將過濾后的信息轉(zhuǎn)發(fā)到Internet遠(yuǎn)程識別服務(wù)器。顯示器用來顯示經(jīng)過云端識別的結(jié)果。
云端主要由云數(shù)據(jù)中心和云服務(wù)中心兩部分組成[8]。云計(jì)算平臺是一個(gè)集海量數(shù)據(jù)存儲、分析于一體的服務(wù)平臺。將海量待識別信息存放于云計(jì)算平臺的數(shù)據(jù)中心,形成一個(gè)信息庫。由于移動終端識別的信息結(jié)構(gòu)復(fù)雜,類型繁多,所以對信息的存儲有較為嚴(yán)格的要求,數(shù)據(jù)中心就是基于數(shù)據(jù)模型管理和操作數(shù)據(jù)的。云服務(wù)中心為云平臺提供了一致的設(shè)計(jì)、開發(fā)、部署和運(yùn)行服務(wù)器端程序的框架。類似插件的方式,對各種服務(wù)器端信息識別程序都可以在云平臺上運(yùn)行,無論是基于“.NET”的識別組件,還是基于java的識別組件,云平臺提供了調(diào)用這些組件的接口,云平臺管理員只需設(shè)置這些組件的位置和所開發(fā)的工具即可。云服務(wù)中心可以對大量實(shí)時(shí)數(shù)據(jù)和歷史數(shù)據(jù)進(jìn)行高性能計(jì)算和數(shù)據(jù)挖掘,并且集成了報(bào)表和數(shù)據(jù)分析、輔助決策等服務(wù),能夠?qū)ΥR別信息進(jìn)行有效識別。

圖2 遠(yuǎn)程處理基本結(jié)構(gòu)
1.2.2 遠(yuǎn)程識別的工作機(jī)制 遠(yuǎn)程識別與典型的客戶端/服務(wù)器模式(C/S)應(yīng)用程序的工作機(jī)制相似,服務(wù)器對象在網(wǎng)絡(luò)上某個(gè)地方創(chuàng)建、部署它的位置,并且時(shí)刻監(jiān)聽要鏈接的客戶端。當(dāng)客戶端向服務(wù)器發(fā)送請求時(shí),攜帶了有關(guān)調(diào)用和參數(shù)的詳細(xì)信息,服務(wù)器接受請求參數(shù),調(diào)用相關(guān)方法處理,并將處理結(jié)果返回客戶端。如圖2所示的遠(yuǎn)程識別的工作機(jī)制,移動終端利用信息采集器采集信息,經(jīng)過轉(zhuǎn)換后,將信息發(fā)送到識別代理,識別代理對數(shù)據(jù)進(jìn)行過濾,轉(zhuǎn)換成利于傳輸?shù)母袷剑⑶覕y帶服務(wù)器端IP地址,使用Createlnstanee或Getobjeet方法向云端發(fā)出識別請求。云服務(wù)中心接受請求,調(diào)用識別組件中的函數(shù),并且將云數(shù)據(jù)中心的識別數(shù)據(jù)查詢出來,提取特征進(jìn)行識別,識別完成后將識別結(jié)果返回至移動終端。移動終端對組件的調(diào)用是基于租約機(jī)制的,租約到期,遠(yuǎn)程處理機(jī)制將釋放引用。
本案例所針對的是產(chǎn)品二維碼識別文件信息。由于文件信息很大,故無法采用二維碼直接存儲;同樣由于文件量大,且移動終端內(nèi)存不夠,過多的文件也不易于在移動終端存儲。因此結(jié)合以上兩種方案,只在移動終端存儲文件信息的地址,而把文件存放在云端。這樣就可以識別海量的文件,聲音,視頻信息。
EPC——產(chǎn)品電子代碼,實(shí)際上是一種編碼手段,其載體可以是二維條形碼、電子標(biāo)簽等。這里采用 EPC-64編碼格式(圖3)[9]。

圖3 基于EPC-64的車輛信息編碼結(jié)構(gòu)
產(chǎn)品信息EPC就是需要識別的信息,即產(chǎn)品的出廠日期、公司簡介,以及在各大商場的出售價(jià)格等。EPC就像一把打開所有信息大門的鑰匙。例如:11 0000000000 10111101 01001010 00000010 00000 00000000000000000000001。頭字段11(十進(jìn)制3)表示采用的是EPC-64,后面相應(yīng)的部分表示:中國湖北省武漢市某某公司,桶裝面,編號1。其二維碼見圖4。

圖4 產(chǎn)品信息EPC二維碼
移動終端需要移植μC/OS-II系統(tǒng),并且安裝SQLite數(shù)據(jù)庫[10],其創(chuàng)建數(shù)據(jù)庫表以及存儲數(shù)據(jù)如下sql語句所示:
sqlite> create table EPC2IP (id integer primary key,EPCcode text,IP text,Company text,Category text,Serial-Num text);
sqlite>insert into EPC2IP(id,EPCcode,IP,Company,Category,SerialNum)values(1,’1100 0000 0000 1011 1101 01001010000000100000000000000000000000000001’,’xxx.xxx.xxx.xxx:8080’,’中國湖北省武漢市某某公司’,’桶裝面’,’1’);
移動終端的數(shù)據(jù)錄入是通過觸摸屏實(shí)現(xiàn)的,也可通過鍵盤實(shí)現(xiàn),還可以借助上位機(jī)串口錄入。數(shù)據(jù)錄入完之后移動終端進(jìn)入循環(huán),等待掃描后的二維碼。由識別代理進(jìn)行處理,以下是識別代理的部分代碼:
uchar checkrightflag;//驗(yàn)證標(biāo)志位
uchar EPCcodebuffer[65];//EPCcode接受數(shù)組
uchar Querydata[6][64];//查詢sqlite接受二維數(shù)組
uchar SendCode[64];//處理后的數(shù)組
...
while(1)
{
EPCcodebuffer= ScanQRcode();//二維碼掃描
if(EPCodebuffer[0]!=OLDCODEFLG)//判斷是否發(fā)生數(shù)據(jù)更新
{
checkrightflag=Check(EPCcodebuffer);//驗(yàn)證掃描的二維碼
if(checkrightflag)//驗(yàn)證是否正確
{ Querydata=QuerybyEPCcode(EPCcodebuffer);//查詢sqlite的函數(shù)
SendCode=QuerydateDispose(Querydata);//對查詢出的數(shù)據(jù)進(jìn)行轉(zhuǎn)換為規(guī)范的格式
}
EPCodebuffer[0]=0;//更新位置位
}
....
}
移動終端的代理組件將數(shù)據(jù)處理后將Send-Code轉(zhuǎn)換為:“http://xxx.xxx.xxx.xxx:8080/中國湖北省武漢市某某公司.do?Category=桶裝面&SerialNum=1”,移動終端利用這個(gè)IP到達(dá)云端服務(wù)的地址,在云端調(diào)用服務(wù)提供者提供的服務(wù)即可。遠(yuǎn)程識別組件會首先根據(jù)條件去查詢云服務(wù)中心的數(shù)據(jù),然后將識別成功的數(shù)據(jù)返回給移動終端。服務(wù)中心數(shù)據(jù)庫采用SQL SERVER2008。云端的識別數(shù)據(jù)見圖5。

圖5 SQL SERVER2008云端產(chǎn)品數(shù)據(jù)表
從云端返回的數(shù)據(jù)可以是XML格式的,這里采用JSON的數(shù)據(jù)格式,因?yàn)樵诒磉_(dá)相同的信息時(shí),JSON比XML形成的文件更小,更便于機(jī)器解析。以下是從云端返回的JSON數(shù)據(jù):
識別數(shù)據(jù):{產(chǎn)品:{編號:1,品種號:1,生產(chǎn)日期:’2014-1-20’,產(chǎn)地:’湖北省 xxxxxx’,消費(fèi)者服務(wù)熱線:’0278xxxxxx’},
品種:{品種號:1,品種名稱:’桶裝面’,產(chǎn)品配料:’面餅,調(diào)味包,火腿腸’,致敏原信息:’包含小麥制品,大豆制品,乳制品,蟹,貝類,魚類制品,蛋類制品’,溫馨提示:’如發(fā)現(xiàn)調(diào)味包膨脹,破損,請勿食用,保質(zhì)期6個(gè)月’},
公司:{成立年限:1988,發(fā)展歷程:’1988年創(chuàng)始人靠打工開始了艱苦的創(chuàng)業(yè)歷程……’,公司簡介:’xx企業(yè)中國控股有限公司([本公司])為中國領(lǐng)先飲料及方便面制造商之一……’}
}
移動終端接收到數(shù)據(jù)后,利用JSON解析器將識別內(nèi)容解析,然后將結(jié)果顯示在顯示屏上。至此,整個(gè)識別過程結(jié)束。
移動終端在本地以及在云端對信息進(jìn)行識別的技術(shù)各有其優(yōu)勢,本地識別識別速度明顯高于在云端識別,適用于數(shù)據(jù)量較小的情況,但如果移動終端數(shù)量多,其成本會急劇上升。隨著4G網(wǎng)絡(luò)的發(fā)展,移動終端在云端的識別速度也會隨之提高。這兩種模型不僅適用于對文本信息的識別,而且還適用于語音、圖像、視頻等信息的識別。如何更好地利用這兩種模型,需要具體問題具體分析。
[1] 楊正洪,周發(fā)武.云計(jì)算和物聯(lián)網(wǎng)[M].北京:清華大學(xué)出版社,2011.
[2] 鐘書成,陳曉紅.一維條碼識別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].成都信息工程學(xué)院學(xué)報(bào),2006,21(12)::73-77.
[3] 中國物品編碼中心.條碼技術(shù)與應(yīng)用[M].北京:清華大學(xué)出版社,2003.
[4] DAI Qihua,DAI Shuguang,MU Pingan.The solution of real time response for uCOS[J].J.University of Shanghai for Science and Technology,2002,24(01):73-75.
[5] Allen G,Owens M.The Definitive Guide to SQLite[M].第二版.北京:電子工業(yè)出版社,2012.
[6] ZHANG Guohua,YUAN Zhongfan.Remote heart sound collection and identification system[J].China Measurement & Test,2012,38(06):49-52.
[7] 欒大為,劉偉君.基于云計(jì)算和SOA構(gòu)架的信息化辦公系統(tǒng)[J].通信管理與技術(shù),2013(03):27-30.
[8] ZHANG Hongli.Distributed Digital Library Framework Based on Cloud Computing Platform[J].Information Science,2013,31(03):40-45.
[9] 張海成,張 鐸.物聯(lián)網(wǎng)與產(chǎn)品電子代碼[M].武漢:大學(xué)出版社,2010.
[10]吳名星,李 彤.嵌入式數(shù)據(jù)庫SQLite在UC/OS2上的移植[J].科學(xué)技術(shù)與工程,2009,9(04):1 023-1 027.