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