GPRS通用通信系統(tǒng)的服務(wù)器端軟件開發(fā)

時間:2022-07-15 05:10:00

導(dǎo)語:GPRS通用通信系統(tǒng)的服務(wù)器端軟件開發(fā)一文來源于網(wǎng)友上傳,不代表本站觀點,若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

摘要:利用Struts和Hibernate技術(shù),開發(fā)gprs通用通信系統(tǒng)服務(wù)器端軟件。對軟件的功能模塊進行了分解。也從數(shù)據(jù)處理流程的角度,詳細分析了數(shù)據(jù)處理過程。

關(guān)蕾詞:GPRS;通信協(xié)議;Struts;數(shù)據(jù)庫;Hibernate

O.引育

GPRS通用通信系統(tǒng)由現(xiàn)場監(jiān)控終端(也稱數(shù)據(jù)終端單元。DTU),GPRS網(wǎng)絡(luò),數(shù)據(jù)庫和服務(wù)器端軟件(也稱數(shù)據(jù)服務(wù)中心.DSQ四部分組成。服務(wù)器端軟件接收DTU通過GPRS網(wǎng)絡(luò)上傳的數(shù)據(jù).處理后存儲到數(shù)據(jù)庫;服務(wù)器端軟件也可以反向傳送各種指令到DTU??刂艱TU的運行。為了用戶方便使用數(shù)據(jù)監(jiān)控等功能,服務(wù)器端軟件采用Web頁面方式。開發(fā)基于Java,使用了Struts,Hibemate等多項技術(shù)。

1.技術(shù)關(guān)量

Struts和Hibernate是WEB開發(fā)中提高開發(fā)效率。使程序結(jié)構(gòu)清晰化的工具。本設(shè)計積極的運用了這兩項技術(shù)。

1.Sturts技術(shù)Struts框架實現(xiàn)MVC(Model—View—Comroller)設(shè)計模式。通過這個設(shè)計模式。實現(xiàn)功能模塊,視圖和控制的分離。將數(shù)據(jù)的監(jiān)聽和解析以及其他功能封裝在不同的功能模塊中。而將展現(xiàn)給用戶的結(jié)果作為視圖。這通常是一個JSP頁面或純HTML頁面,視圖也常作為接受用戶輸入或請求的用戶接口。而控制則管理對功能模塊的調(diào)用,以及選擇正確合適的視圖來響應(yīng)用戶的請求。

1.2Hibemate技術(shù)Hibernate將Java對象映射到關(guān)系數(shù)據(jù)庫表中,對數(shù)據(jù)庫表的操作通過對Java對象的操作完成,這樣就簡化了數(shù)據(jù)持久化相關(guān)的編程任務(wù)。

2.功能模塊設(shè)計

服務(wù)器端軟件主要任務(wù)是完成對通信數(shù)據(jù)的接收。處理和存儲。功能設(shè)置都是以數(shù)據(jù)為中心。本設(shè)計的主要功能模塊如圖1所示。

在服務(wù)啟停模塊啟動服務(wù)后,開始接收DTU數(shù)據(jù)。由于數(shù)據(jù)包的解析功能相對獨立。實現(xiàn)也較為復(fù)雜,因此將解析過程作為一個線程。接收一個數(shù)據(jù)包.就啟動一個獨立的解析線程.對數(shù)據(jù)包進行解析。解析完后將提取出的數(shù)據(jù)存人設(shè)計好的數(shù)據(jù)庫中。隨后發(fā)出一個應(yīng)答數(shù)據(jù)包,線程結(jié)束。解析、入庫和應(yīng)答三個步驟在同一線程中完成。服務(wù)啟停模塊完成了本設(shè)計的核心功能。

服務(wù)設(shè)置模塊主要完成服務(wù)啟動與運行中的參數(shù)設(shè)置。

數(shù)據(jù)監(jiān)控模塊是重要的一個功能模塊,它向用戶直觀的展示任一DTU發(fā)出的數(shù)據(jù)變化圖。數(shù)據(jù)隨時問的變化顯示在專門定制的圖表上,而且實時刷新,做到實時性和準(zhǔn)確性。

在遠程控制模塊,用戶可以查看每一個DTU所連接的數(shù)據(jù)采集終端的狀態(tài),通過向DTU發(fā)送指令數(shù)據(jù)包,遠程控制與DTU相連的儀表。

與多數(shù)管理系統(tǒng)類似。為了做到對使用用戶進行管理.設(shè)置了系統(tǒng)管理模塊,可以對用戶的權(quán)限、登錄、安全進行管理。以做到系統(tǒng)的完備和安全。

3.?dāng)?shù)據(jù)處理流程

本數(shù)據(jù)管理軟件的核心是數(shù)據(jù),所有的功能都是圍繞數(shù)據(jù)進行。數(shù)據(jù)的處理主要有解析,存儲和顯示幾個過程.另外,本系統(tǒng)也向遠程數(shù)據(jù)終端單元發(fā)送數(shù)據(jù)。

3.1數(shù)據(jù)的接收服務(wù)啟動后,服務(wù)器啟動監(jiān)聽線程在服務(wù)端口監(jiān)聽線程,直到停止服務(wù),監(jiān)聽線程才終止。監(jiān)聽線程中.建立了在服務(wù)端口上的數(shù)據(jù)報soeket:

pfivateDatagramSoeketsocket;

socket=newDatagramSoeket(INPORT);soeke調(diào)用阻塞式函數(shù)receive(DatagramPacketdp)監(jiān)聽端口,接收到數(shù)據(jù)返回后即可在dp中獲取數(shù)據(jù)開始處理,而監(jiān)聽線程檢查服務(wù)停止標(biāo)志started,若服務(wù)巳停止則終止線程。否則重新開始監(jiān)聽,如此循環(huán)。

3.2數(shù)據(jù)的解析數(shù)據(jù)的解析是數(shù)據(jù)處理的主要過程.解析過程就是實現(xiàn)DSC與DTU應(yīng)用層通信協(xié)議的過程。解析線程在監(jiān)聽線程中啟動,服務(wù)器接收到數(shù)據(jù)后啟動數(shù)據(jù)解析線程處理數(shù)據(jù)報。而監(jiān)聽線程繼續(xù)監(jiān)聽,解析線程完成解析后結(jié)束自身。解析線程的啟動代碼如下:

ProcessReceiveDatapmcessReceiveData;new

ProcessReceiveData(buf,

lnetAddress.getByName(dp.getAddmss0.

getHostAddress0),

dp.getPort0,

dp.getLength0,

socket,BUF_MAX_LEN)

processReceiveData.start0;

其中bur為存放完攤數(shù)據(jù)報的緩沖區(qū),第二個參數(shù)為數(shù)據(jù)報的發(fā)送源IP地址,即發(fā)送此數(shù)據(jù)報的DTU的IP地址。第三個參數(shù)為發(fā)送源端口。第四個參數(shù)為數(shù)據(jù)報長度。第五個參數(shù)為監(jiān)聽套接字,第六個參數(shù)為緩沖區(qū)最大長度(單位為字節(jié))。這些參數(shù)在監(jiān)聽線程中獲得,都在數(shù)據(jù)處理線程中使用。

協(xié)議中定義的數(shù)據(jù)報格式單位都以字節(jié)為單位,為便于解析,在ProcessReceiveData中定義了私有方法:

privateStringbyte.I’oslring(byteb)

privateinthexToDec(char[1hexData,intlen)

byteToString方法將字節(jié)轉(zhuǎn)化為十六進制字符串。而hexToDec將十六進制字符串轉(zhuǎn)換為十進制數(shù)值。比如數(shù)據(jù)報中有兩個字節(jié)表示數(shù)據(jù)報長度,可以先將這兩個直接轉(zhuǎn)化為十六進制字符串,再將十六進制字符串轉(zhuǎn)化為十進制數(shù)值,這樣就得到了數(shù)據(jù)報長度的數(shù)值。

3.3數(shù)據(jù)的存儲根據(jù)解析的結(jié)果。一般要更新數(shù)據(jù)庫表或向數(shù)

據(jù)庫表中添加記錄。

3.4數(shù)據(jù)的發(fā)送解析完數(shù)據(jù)報后按照協(xié)議一般要對發(fā)送數(shù)據(jù)報的DTU發(fā)送應(yīng)答數(shù)據(jù)報。首先接格式構(gòu)造數(shù)據(jù)報,然后通過soeket向DTU的IP地址發(fā)送。

4.結(jié)論

軟件實現(xiàn)了數(shù)據(jù)的接收、解析、存儲和發(fā)送等管理功能.并且能夠?qū)τ脩粜畔⑦M行管理,基本滿足了數(shù)據(jù)管理系統(tǒng)的功能需求。比較合理的使用了Struts框架技術(shù),使得處理邏輯較為清晰,前臺頁面與后臺耦合度較低,結(jié)構(gòu)清晰。功能組件JavaBean設(shè)置較為合理,能夠完成獨立的功能,JavaBean組件之間耦合度低。后臺線程能正確的啟動與停止。能完成設(shè)計的功能,線程之間沒有出現(xiàn)互相影響的情況。該設(shè)計在實時性能上還有提升的空間。

參考文獻

[1]宋波,馬黎,孫連科.用JAVA實現(xiàn)一個多線程唧服務(wù)器[J].沈陽電力高等專科學(xué)校學(xué)報.2001.1.

[2]馮冬芹,金建祥,褚?。瓻themet與工業(yè)控制網(wǎng)絡(luò)[J].儀器儀表學(xué)報,2003(1):600-603.

[3]何小榮,錢泉.GPRS在工業(yè)監(jiān)控中的應(yīng)用m.鐵道工程學(xué)報.2004(19):42-45.

[4]DouglasE.Comer.用TCP/IP進行州際互連[M].北京:電子工業(yè)出版社.1998.

[5]孫衛(wèi)琴.精通Struts:基于MVC的JavaWeb設(shè)計與開發(fā)[M].北京:電子工業(yè)出版社.2005.

[6]王海峰,奠偉鋒,李位星.Oracle9i初學(xué)者指南[M].北京:機械工業(yè)出版社.2003.