GPRS通用通信系統(tǒng)的服務(wù)器端軟件開(kāi)發(fā)
時(shí)間:2022-07-15 05:10:00
導(dǎo)語(yǔ):GPRS通用通信系統(tǒng)的服務(wù)器端軟件開(kāi)發(fā)一文來(lái)源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。
摘要:利用Struts和Hibernate技術(shù),開(kāi)發(fā)gprs通用通信系統(tǒng)的服務(wù)器端軟件。對(duì)軟件的功能模塊進(jìn)行了分解。也從數(shù)據(jù)處理流程的角度,詳細(xì)分析了數(shù)據(jù)處理過(guò)程。
關(guān)蕾詞:GPRS;通信協(xié)議;Struts;數(shù)據(jù)庫(kù);Hibernate
O.引育
GPRS通用通信系統(tǒng)由現(xiàn)場(chǎng)監(jiān)控終端(也稱數(shù)據(jù)終端單元。DTU),GPRS網(wǎng)絡(luò),數(shù)據(jù)庫(kù)和服務(wù)器端軟件(也稱數(shù)據(jù)服務(wù)中心.DSQ四部分組成。服務(wù)器端軟件接收DTU通過(guò)GPRS網(wǎng)絡(luò)上傳的數(shù)據(jù).處理后存儲(chǔ)到數(shù)據(jù)庫(kù);服務(wù)器端軟件也可以反向傳送各種指令到DTU??刂艱TU的運(yùn)行。為了用戶方便使用數(shù)據(jù)監(jiān)控等功能,服務(wù)器端軟件采用Web頁(yè)面方式。開(kāi)發(fā)基于Java,使用了Struts,Hibemate等多項(xiàng)技術(shù)。
1.技術(shù)關(guān)量
Struts和Hibernate是WEB開(kāi)發(fā)中提高開(kāi)發(fā)效率。使程序結(jié)構(gòu)清晰化的工具。本設(shè)計(jì)積極的運(yùn)用了這兩項(xiàng)技術(shù)。
1.Sturts技術(shù)Struts框架實(shí)現(xiàn)MVC(Model—View—Comroller)設(shè)計(jì)模式。通過(guò)這個(gè)設(shè)計(jì)模式。實(shí)現(xiàn)功能模塊,視圖和控制的分離。將數(shù)據(jù)的監(jiān)聽(tīng)和解析以及其他功能封裝在不同的功能模塊中。而將展現(xiàn)給用戶的結(jié)果作為視圖。這通常是一個(gè)JSP頁(yè)面或純HTML頁(yè)面,視圖也常作為接受用戶輸入或請(qǐng)求的用戶接口。而控制則管理對(duì)功能模塊的調(diào)用,以及選擇正確合適的視圖來(lái)響應(yīng)用戶的請(qǐng)求。
1.2Hibemate技術(shù)Hibernate將Java對(duì)象映射到關(guān)系數(shù)據(jù)庫(kù)表中,對(duì)數(shù)據(jù)庫(kù)表的操作通過(guò)對(duì)Java對(duì)象的操作完成,這樣就簡(jiǎn)化了數(shù)據(jù)持久化相關(guān)的編程任務(wù)。
2.功能模塊設(shè)計(jì)
服務(wù)器端軟件主要任務(wù)是完成對(duì)通信數(shù)據(jù)的接收。處理和存儲(chǔ)。功能設(shè)置都是以數(shù)據(jù)為中心。本設(shè)計(jì)的主要功能模塊如圖1所示。
在服務(wù)啟停模塊啟動(dòng)服務(wù)后,開(kāi)始接收DTU數(shù)據(jù)。由于數(shù)據(jù)包的解析功能相對(duì)獨(dú)立。實(shí)現(xiàn)也較為復(fù)雜,因此將解析過(guò)程作為一個(gè)線程。接收一個(gè)數(shù)據(jù)包.就啟動(dòng)一個(gè)獨(dú)立的解析線程.對(duì)數(shù)據(jù)包進(jìn)行解析。解析完后將提取出的數(shù)據(jù)存人設(shè)計(jì)好的數(shù)據(jù)庫(kù)中。隨后發(fā)出一個(gè)應(yīng)答數(shù)據(jù)包,線程結(jié)束。解析、入庫(kù)和應(yīng)答三個(gè)步驟在同一線程中完成。服務(wù)啟停模塊完成了本設(shè)計(jì)的核心功能。
服務(wù)設(shè)置模塊主要完成服務(wù)啟動(dòng)與運(yùn)行中的參數(shù)設(shè)置。
數(shù)據(jù)監(jiān)控模塊是重要的一個(gè)功能模塊,它向用戶直觀的展示任一DTU發(fā)出的數(shù)據(jù)變化圖。數(shù)據(jù)隨時(shí)問(wèn)的變化顯示在專門定制的圖表上,而且實(shí)時(shí)刷新,做到實(shí)時(shí)性和準(zhǔn)確性。
在遠(yuǎn)程控制模塊,用戶可以查看每一個(gè)DTU所連接的數(shù)據(jù)采集終端的狀態(tài),通過(guò)向DTU發(fā)送指令數(shù)據(jù)包,遠(yuǎn)程控制與DTU相連的儀表。
與多數(shù)管理系統(tǒng)類似。為了做到對(duì)使用用戶進(jìn)行管理.設(shè)置了系統(tǒng)管理模塊,可以對(duì)用戶的權(quán)限、登錄、安全進(jìn)行管理。以做到系統(tǒng)的完備和安全。
3.?dāng)?shù)據(jù)處理流程
本數(shù)據(jù)管理軟件的核心是數(shù)據(jù),所有的功能都是圍繞數(shù)據(jù)進(jìn)行。數(shù)據(jù)的處理主要有解析,存儲(chǔ)和顯示幾個(gè)過(guò)程.另外,本系統(tǒng)也向遠(yuǎn)程數(shù)據(jù)終端單元發(fā)送數(shù)據(jù)。
3.1數(shù)據(jù)的接收服務(wù)啟動(dòng)后,服務(wù)器啟動(dòng)監(jiān)聽(tīng)線程在服務(wù)端口監(jiān)聽(tīng)線程,直到停止服務(wù),監(jiān)聽(tīng)線程才終止。監(jiān)聽(tīng)線程中.建立了在服務(wù)端口上的數(shù)據(jù)報(bào)soeket:
pfivateDatagramSoeketsocket;
socket=newDatagramSoeket(INPORT);soeke調(diào)用阻塞式函數(shù)receive(DatagramPacketdp)監(jiān)聽(tīng)端口,接收到數(shù)據(jù)返回后即可在dp中獲取數(shù)據(jù)開(kāi)始處理,而監(jiān)聽(tīng)線程檢查服務(wù)停止標(biāo)志started,若服務(wù)巳停止則終止線程。否則重新開(kāi)始監(jiān)聽(tīng),如此循環(huán)。
3.2數(shù)據(jù)的解析數(shù)據(jù)的解析是數(shù)據(jù)處理的主要過(guò)程.解析過(guò)程就是實(shí)現(xiàn)DSC與DTU應(yīng)用層通信協(xié)議的過(guò)程。解析線程在監(jiān)聽(tīng)線程中啟動(dòng),服務(wù)器接收到數(shù)據(jù)后啟動(dòng)數(shù)據(jù)解析線程處理數(shù)據(jù)報(bào)。而監(jiān)聽(tīng)線程繼續(xù)監(jiān)聽(tīng),解析線程完成解析后結(jié)束自身。解析線程的啟動(dòng)代碼如下:
ProcessReceiveDatapmcessReceiveData;new
ProcessReceiveData(buf,
lnetAddress.getByName(dp.getAddmss0.
getHostAddress0),
dp.getPort0,
dp.getLength0,
socket,BUF_MAX_LEN)
processReceiveData.start0;
其中bur為存放完攤數(shù)據(jù)報(bào)的緩沖區(qū),第二個(gè)參數(shù)為數(shù)據(jù)報(bào)的發(fā)送源IP地址,即發(fā)送此數(shù)據(jù)報(bào)的DTU的IP地址。第三個(gè)參數(shù)為發(fā)送源端口。第四個(gè)參數(shù)為數(shù)據(jù)報(bào)長(zhǎng)度。第五個(gè)參數(shù)為監(jiān)聽(tīng)套接字,第六個(gè)參數(shù)為緩沖區(qū)最大長(zhǎng)度(單位為字節(jié))。這些參數(shù)在監(jiān)聽(tīng)線程中獲得,都在數(shù)據(jù)處理線程中使用。
協(xié)議中定義的數(shù)據(jù)報(bào)格式單位都以字節(jié)為單位,為便于解析,在ProcessReceiveData中定義了私有方法:
privateStringbyte.I’oslring(byteb)
privateinthexToDec(char[1hexData,intlen)
byteToString方法將字節(jié)轉(zhuǎn)化為十六進(jìn)制字符串。而hexToDec將十六進(jìn)制字符串轉(zhuǎn)換為十進(jìn)制數(shù)值。比如數(shù)據(jù)報(bào)中有兩個(gè)字節(jié)表示數(shù)據(jù)報(bào)長(zhǎng)度,可以先將這兩個(gè)直接轉(zhuǎn)化為十六進(jìn)制字符串,再將十六進(jìn)制字符串轉(zhuǎn)化為十進(jìn)制數(shù)值,這樣就得到了數(shù)據(jù)報(bào)長(zhǎng)度的數(shù)值。
3.3數(shù)據(jù)的存儲(chǔ)根據(jù)解析的結(jié)果。一般要更新數(shù)據(jù)庫(kù)表或向數(shù)
據(jù)庫(kù)表中添加記錄。
3.4數(shù)據(jù)的發(fā)送解析完數(shù)據(jù)報(bào)后按照協(xié)議一般要對(duì)發(fā)送數(shù)據(jù)報(bào)的DTU發(fā)送應(yīng)答數(shù)據(jù)報(bào)。首先接格式構(gòu)造數(shù)據(jù)報(bào),然后通過(guò)soeket向DTU的IP地址發(fā)送。
4.結(jié)論
軟件實(shí)現(xiàn)了數(shù)據(jù)的接收、解析、存儲(chǔ)和發(fā)送等管理功能.并且能夠?qū)τ脩粜畔⑦M(jìn)行管理,基本滿足了數(shù)據(jù)管理系統(tǒng)的功能需求。比較合理的使用了Struts框架技術(shù),使得處理邏輯較為清晰,前臺(tái)頁(yè)面與后臺(tái)耦合度較低,結(jié)構(gòu)清晰。功能組件JavaBean設(shè)置較為合理,能夠完成獨(dú)立的功能,JavaBean組件之間耦合度低。后臺(tái)線程能正確的啟動(dòng)與停止。能完成設(shè)計(jì)的功能,線程之間沒(méi)有出現(xiàn)互相影響的情況。該設(shè)計(jì)在實(shí)時(shí)性能上還有提升的空間。
參考文獻(xiàn)
[1]宋波,馬黎,孫連科.用JAVA實(shí)現(xiàn)一個(gè)多線程唧服務(wù)器[J].沈陽(yáng)電力高等??茖W(xué)校學(xué)報(bào).2001.1.
[2]馮冬芹,金建祥,褚健.Ethemet與工業(yè)控制網(wǎng)絡(luò)[J].儀器儀表學(xué)報(bào),2003(1):600-603.
[3]何小榮,錢泉.GPRS在工業(yè)監(jiān)控中的應(yīng)用m.鐵道工程學(xué)報(bào).2004(19):42-45.
[4]DouglasE.Comer.用TCP/IP進(jìn)行州際互連[M].北京:電子工業(yè)出版社.1998.
[5]孫衛(wèi)琴.精通Struts:基于MVC的JavaWeb設(shè)計(jì)與開(kāi)發(fā)[M].北京:電子工業(yè)出版社.2005.
[6]王海峰,奠偉鋒,李位星.Oracle9i初學(xué)者指南[M].北京:機(jī)械工業(yè)出版社.2003.
熱門標(biāo)簽
GPS GPRS GPS技術(shù) GPS系統(tǒng) GPS測(cè)量 心理培訓(xùn) 人文科學(xué)概論