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

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

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

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

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

O.引育

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

1.技術關量

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

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

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

2.功能模塊設計

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

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

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

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

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

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

3.數(shù)據(jù)處理流程

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

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

pfivateDatagramSoeketsocket;

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

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

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é)轉化為十六進制字符串。而hexToDec將十六進制字符串轉換為十進制數(shù)值。比如數(shù)據(jù)報中有兩個字節(jié)表示數(shù)據(jù)報長度,可以先將這兩個直接轉化為十六進制字符串,再將十六進制字符串轉化為十進制數(shù)值,這樣就得到了數(shù)據(jù)報長度的數(shù)值。

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

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

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

4.結論

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

參考文獻

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

[2]馮冬芹,金建祥,褚健.Ethemet與工業(yè)控制網絡[J].儀器儀表學報,2003(1):600-603.

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

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

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

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