畢業(yè)設(shè)計(jì)光纖網(wǎng)絡(luò)光信號(hào)實(shí)時(shí)監(jiān)測系統(tǒng)項(xiàng)目報(bào)告_第1頁
畢業(yè)設(shè)計(jì)光纖網(wǎng)絡(luò)光信號(hào)實(shí)時(shí)監(jiān)測系統(tǒng)項(xiàng)目報(bào)告_第2頁
畢業(yè)設(shè)計(jì)光纖網(wǎng)絡(luò)光信號(hào)實(shí)時(shí)監(jiān)測系統(tǒng)項(xiàng)目報(bào)告_第3頁
畢業(yè)設(shè)計(jì)光纖網(wǎng)絡(luò)光信號(hào)實(shí)時(shí)監(jiān)測系統(tǒng)項(xiàng)目報(bào)告_第4頁
畢業(yè)設(shè)計(jì)光纖網(wǎng)絡(luò)光信號(hào)實(shí)時(shí)監(jiān)測系統(tǒng)項(xiàng)目報(bào)告_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、鄭州大學(xué)畢業(yè)設(shè)計(jì)(項(xiàng)目報(bào)告) 題 目: 光纖網(wǎng)絡(luò)光信號(hào)實(shí)時(shí)監(jiān)測系統(tǒng) 指導(dǎo)教師: 李翠霞 職稱: 副教授 學(xué)生姓名: 李文豪 學(xué)號(hào): 20107760224 專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù)(軟件開發(fā) java) 院(系): 軟件學(xué)院 完成時(shí)間: 2013-12-9 2013 年 12 月 9 日 目目 錄錄 第第 1 1 章章 項(xiàng)目概述項(xiàng)目概述.1 1.11.1 項(xiàng)目背景項(xiàng)目背景.1 1.21.2 項(xiàng)目來源項(xiàng)目來源.1 1.31.3 光時(shí)域反射測距設(shè)計(jì)依據(jù)光時(shí)域反射測距設(shè)計(jì)依據(jù).1 1.41.4 光網(wǎng)絡(luò)實(shí)時(shí)信號(hào)監(jiān)測模塊設(shè)計(jì)目標(biāo)光網(wǎng)絡(luò)實(shí)時(shí)信號(hào)監(jiān)測模塊設(shè)計(jì)目標(biāo).2 第第 2 2 章章 項(xiàng)目設(shè)計(jì)項(xiàng)目設(shè)計(jì).

2、4 2.12.1 項(xiàng)目總體設(shè)計(jì)項(xiàng)目總體設(shè)計(jì).4 2.22.2 研究思路與技術(shù)路線研究思路與技術(shù)路線.4 2.32.3 模塊選型與設(shè)計(jì)模塊選型與設(shè)計(jì) .5 2.3.1 aq7275 otdr模塊介紹模塊介紹.5 2.3.2 gsm模塊設(shè)計(jì)模塊設(shè)計(jì).6 2.3.3 gps模塊設(shè)計(jì)模塊設(shè)計(jì).7 2.3.4 下位機(jī)管理模塊設(shè)計(jì)下位機(jī)管理模塊設(shè)計(jì).7 2.3.5 實(shí)時(shí)監(jiān)測上位機(jī)模塊設(shè)計(jì)實(shí)時(shí)監(jiān)測上位機(jī)模塊設(shè)計(jì).7 2.3.6 電源模塊設(shè)計(jì)電源模塊設(shè)計(jì).8 2.3.7 軟件設(shè)計(jì)軟件設(shè)計(jì).8 第第 3 3 章章 項(xiàng)目實(shí)現(xiàn)項(xiàng)目實(shí)現(xiàn).8 3.13.1 數(shù)據(jù)庫連接模塊數(shù)據(jù)庫連接模塊.9 3.23.2 w webeb

3、瀏覽器端模塊瀏覽器端模塊.11 3.33.3 j javaava客戶端模塊客戶端模塊.13 3.3.1 程序啟動(dòng)重連程序啟動(dòng)重連.14 3.3.2 保存文件保存文件.14 3.3.3 讀取配置文件讀取配置文件.17 3.3.4 java與下位機(jī)與下位機(jī)socket通信通信.18 3.3.5 從從otdr設(shè)備采集數(shù)據(jù)設(shè)備采集數(shù)據(jù).22 3.3.6 事件是否發(fā)生變化算法事件是否發(fā)生變化算法.24 3.3.7 發(fā)送發(fā)送http post.25 第第 4 4 章章 項(xiàng)目總結(jié)項(xiàng)目總結(jié).26 4.14.1 項(xiàng)目技術(shù)總結(jié)項(xiàng)目技術(shù)總結(jié).26 4.1.1 前臺(tái)頁面技術(shù)前臺(tái)頁面技術(shù).26 4.1.2 服務(wù)器和桌面

4、客戶端技術(shù)服務(wù)器和桌面客戶端技術(shù).26 4.34.3 個(gè)人收獲與體會(huì)個(gè)人收獲與體會(huì).28 4.44.4 參考資料參考資料.29 第第 1 1 章章 項(xiàng)目概述項(xiàng)目概述 1.11.1 項(xiàng)目背景項(xiàng)目背景 近年來,多個(gè)路局報(bào)告了進(jìn)入維護(hù)期的二型車光纖網(wǎng)絡(luò)線路故障的事件。 以西安路局為例,就該問題做了故障統(tǒng)計(jì),統(tǒng)計(jì)結(jié)果如下: 序 號(hào) 動(dòng)車組列號(hào)發(fā)生次數(shù) 1crh2036a4 2crh2092c20 3crh2093c17 4crh2094c3 5crh2096c8 6crh2149c 2013 年 6 月 當(dāng)動(dòng)車組發(fā)生恒速打閃問題以后,伴隨部分動(dòng)車失流,如果長時(shí)間不能自復(fù)位,則 列車速度將會(huì)下降,司機(jī)需

5、要重新提手柄加速并恒速。因光纖隱蔽走線,且在地面測試 光纖狀態(tài)性能均良好,故障僅在運(yùn)行期出現(xiàn),因此不能鎖定光纖精確故障位置。當(dāng)前采 取高級(jí)修時(shí)整體更換被懷疑車廂的車底光纜、連接器電鉤光纖模塊的辦法,更換過程中 需要拆除 ljb 箱、車鉤、輔助空壓機(jī)、空調(diào)等各種設(shè)備,且無法進(jìn)行責(zé)任判定。 1.21.2 項(xiàng)目來源項(xiàng)目來源 該項(xiàng)目來自網(wǎng)新智能技術(shù)有限公司的真實(shí)項(xiàng)目,該項(xiàng)目用于解決多個(gè)路局的光信號(hào) 故障問題。 1.31.3 光時(shí)域反射測距設(shè)計(jì)依據(jù)光時(shí)域反射測距設(shè)計(jì)依據(jù) 光時(shí)域反射測距通過使用瑞利散射和菲涅爾反射來表征光纖的特性。 瑞利散射是由于光信號(hào)沿著光纖產(chǎn)生無規(guī)律的散射而形成,通過測量回到光時(shí)域反

6、 射設(shè)備端口的散射光,可表明因光纖引起的衰減(損耗/距離)程度。若測試形成的軌跡 是一條向下的曲線,它說明了背向散射的功率不斷減?。ㄟ@是由于經(jīng)過一段距離的傳輸 后發(fā)射和背向散射的信號(hào)都有所損耗) 。在波長已知情況下,瑞利散射功率與信號(hào)的脈沖 寬度成比例:脈沖寬度越長,背向散射功率就越強(qiáng)。瑞利散射的功率還與發(fā)射信號(hào)的波 長有關(guān),波長較短則功率較強(qiáng)。如圖所示: 圖 1-3-1 瑞利散射 菲涅爾反射是離散的反射,它是由整條光纖中的個(gè)別點(diǎn)而引起的,這些點(diǎn)是由造成 反向系數(shù)改變的因素組成,例如玻璃與空氣的間隙。在這些點(diǎn)上,會(huì)有很強(qiáng)的背向散射 光被反射回來。光時(shí)域反射測試模塊就是利用菲涅爾反射的信息來定位

7、連接點(diǎn),光纖終 端或斷點(diǎn)。如下圖分別表示了機(jī)械熔接、法蘭盤、連接器斷開造成的菲涅爾反射: 圖 1-3-2 機(jī)械熔接(1) 、法蘭盤(2)和連接器(3)斷開造成的菲涅爾反射 1.41.4 光網(wǎng)絡(luò)實(shí)時(shí)信號(hào)監(jiān)測模塊設(shè)計(jì)目標(biāo)光網(wǎng)絡(luò)實(shí)時(shí)信號(hào)監(jiān)測模塊設(shè)計(jì)目標(biāo) 1) 性能指標(biāo) 中心波長:13l0nm20nm 事件盲區(qū):1.00m 動(dòng)態(tài)范圍:35 / 33db 衰減讀出分辨率:0.01db 群折射率設(shè)置范圍:1.40001.6000 光纖連接器:fc 單系統(tǒng)功耗: 30w 測距精度:光信號(hào)動(dòng)態(tài)監(jiān)測精度: 1.00m。 2) 系統(tǒng)功能 下位機(jī)設(shè)備實(shí)現(xiàn)光信號(hào)的獲取、解析、故障判定及故障信息上報(bào),實(shí)時(shí)監(jiān)測上位機(jī) 完

8、成波形分析、光信號(hào)統(tǒng)計(jì)信息的獲取及在線故障判定。列車實(shí)時(shí)運(yùn)行中,一旦發(fā) 現(xiàn)光信號(hào)的故障,即可實(shí)時(shí)獲取環(huán)境信息,并將故障信息傳輸給上位機(jī),由上位機(jī) 分析后通過發(fā)送器發(fā)送給地面 gsm 接收機(jī)。 故障通告內(nèi)容應(yīng)包括:光纖長度,事件故障點(diǎn)在光纖長度上所處的位置,光纖串聯(lián) 中可能的故障器件,發(fā)生故障時(shí)列車行所處的經(jīng)度和緯度及故障發(fā)生時(shí)間(需在上 位機(jī)中預(yù)植列車圖形化運(yùn)行線路) 。 所有故障信息通報(bào)信息在上位機(jī)保存。故障信息保存容量大于 1000 條,斷電后信息 不丟失。地面終端可查取保存完畢的故障信息。 第第 2 2 章章 項(xiàng)目設(shè)計(jì)項(xiàng)目設(shè)計(jì) 2.12.1 項(xiàng)目總體設(shè)計(jì)項(xiàng)目總體設(shè)計(jì) 光網(wǎng)絡(luò)實(shí)時(shí)信號(hào)監(jiān)測系

9、統(tǒng)包含 otdr 模塊、gsm 模塊、gps 模塊、下位機(jī)管理模塊、 實(shí)時(shí)監(jiān)測上位機(jī)模塊及電源模塊六大功能模塊。設(shè)計(jì)方案如下圖所示。 圖 2-1 光網(wǎng)絡(luò)實(shí)時(shí)信號(hào)監(jiān)測系統(tǒng)設(shè)計(jì)方案 其中: (1) otdr 模塊:負(fù)責(zé)定位光路故障點(diǎn),分析故障類型及故障產(chǎn)生的具體位置; (2) gsm 模塊:負(fù)責(zé)將故障信息發(fā)送至地面接收端,并傳遞地面接收端的查詢信息; (3) gps 模塊:負(fù)責(zé)故障時(shí)獲取列車運(yùn)行地理位置信息; (4) 下位機(jī)管理模塊:負(fù)責(zé)總體接受和處理來自 otdr、gps、gsm 模塊數(shù)據(jù),并保證各 模塊的協(xié)同工作,對外輸出計(jì)算統(tǒng)計(jì)結(jié)果; (5) 實(shí)時(shí)監(jiān)測上位機(jī)模塊: 完成波形分析、光信號(hào)統(tǒng)計(jì)信

10、息的獲取及在線故障判定; (6) 電源模塊:獨(dú)立供電,系統(tǒng)功耗 30w。 2.22.2 研究思路與技術(shù)路線研究思路與技術(shù)路線 本設(shè)計(jì)里,主要通過實(shí)時(shí)監(jiān)測上位機(jī)與下位機(jī)設(shè)備完成系統(tǒng)功能,其中: (1) 下位機(jī),實(shí)現(xiàn)設(shè)備光信號(hào)的獲取、解析、故障判定及故障信息上報(bào); (2) 實(shí)時(shí)監(jiān)測上位機(jī),完成波形分析、光信號(hào)量的實(shí)時(shí)獲取與在線故障判定。 通過以上設(shè)計(jì),可實(shí)現(xiàn): 在列車實(shí)時(shí)運(yùn)行中,一旦發(fā)現(xiàn)光信號(hào)的故障,即可實(shí)時(shí)獲取環(huán)境信息,并將故障信 息發(fā)送給地面 gsm 接收終端。 2.32.3 模塊選型與設(shè)計(jì)模塊選型與設(shè)計(jì) 系統(tǒng)包括 aq7275 otdr 模塊、gsm 模塊、gps 模塊、下位機(jī)管理模塊、實(shí)時(shí)

11、監(jiān)測上位 機(jī)模塊及電源模塊。總體硬件架構(gòu)如下圖所示: 圖 2-3 總體硬件架構(gòu)圖 .1 aq7275aq7275 otdrotdr 模塊介紹模塊介紹 aq7275 otdr 模塊實(shí)際包含了 otdr 接口、濾波、合波等,其功能可簡記如下: ot dr 接 口 光設(shè)備(tx) wdm 激光器 數(shù)據(jù)采集 fpga dsp 外部 電路 out 光路部分 信號(hào)發(fā)收 信號(hào)處理 協(xié)同處理 圖 2-3-1 光信號(hào)處理示例圖 模塊功能說明: 1) otdr 接口。包括激光器發(fā)射輸出與反射光輸入,測試接口與 wdm 對接。 2) 激光器控制電路。負(fù)責(zé)激光器的打開與關(guān)閉,同時(shí)可以控制激光器的工作電

12、路。 3) 數(shù)據(jù)采集電路。負(fù)責(zé)將反射回來的光信號(hào)轉(zhuǎn)換成數(shù)字電信號(hào)。 4) fpga。根據(jù) dsp 的命令控制激光器開與關(guān),同時(shí)收集數(shù)據(jù)采集電路的數(shù)字信號(hào),在 內(nèi)部進(jìn)行數(shù)據(jù)累加,并提供給 dsp。 5) dsp。根據(jù)命令控制 fpga,向 fpga 讀取數(shù)據(jù),并按 otdr 算法處理數(shù)據(jù),將處理結(jié)果 發(fā)送到外部電路。 外部接口電路。外接通信處理單元。 .2 gsmgsm 模塊設(shè)計(jì)模塊設(shè)計(jì) 工業(yè)級(jí)雙頻 gsm/gprs 模塊,工作頻段雙頻:900/1800mhz,可以低功耗實(shí)現(xiàn)語音、 sms(短信) 、數(shù)據(jù)和傳真信息的傳輸,支持基站定位功能。 項(xiàng)目特性 工作頻段egsm900mhz

13、/dcs 1800mhz 自動(dòng)搜索 2 個(gè)頻段 發(fā)射功率class4(2w)egsm 900m class1(1w)dcs 1800m gprs 連接特性 gprs mlti-slot class 10/8 gprs mobile station class b/cc gprs 數(shù)據(jù)特性下行傳輸特性:最大 85.6kbps 上行傳輸特性:最大 42.8kbps 編碼格式:cs-1、cs-2、cs-3 和 cs-4 支持通常用于 ppp 連接的 pap 協(xié)議 內(nèi)嵌 tcp/ip 協(xié)議,支持 tcp/udp 通信,支持 ftp/http 服 務(wù) 支持分組廣播控制信道(pbcch) 支持 csd(電

14、路交換)傳輸速率:2.4/4.8/9.6/11.4kbps 支持非結(jié)構(gòu)化補(bǔ)充數(shù)據(jù)業(yè)務(wù)(ussd) 音頻特性支持 half rate、full rate、enhanced full rate、adaptive mutirate 等編碼模式 支持回音消除功能 支持噪聲抑制功能 短信(sms)支持 mt/mo/cb/text 和 pdu 模式 短信存儲(chǔ)設(shè)備:sim 卡 工作溫度 -40+85c .3 gpsgps 模塊設(shè)計(jì)模塊設(shè)計(jì) gps 模塊具有 50 個(gè)通道,追蹤靈敏度高達(dá)-161dbm,測量輸出頻率最高可達(dá) 5hz。 項(xiàng)目特性 接口特性ttl,兼容 3.3v/5v 單片機(jī)系統(tǒng)

15、接收特性50 通道,gps l1(1575.42mhz) c/a 碼, sbas:waas/egnos/msas 定位精度 2.5mcep(sbas:2.0cep) 更新速率最大 5hz 捕獲時(shí)間冷啟動(dòng):27s(最快) 溫啟動(dòng):27s 熱啟動(dòng):1s 捕獲追蹤靈敏度 -161dbm 通信協(xié)議nmea(默認(rèn))/ubx binary 串口通信波特率4800、9600、38400(默認(rèn))、57600 .4 下位機(jī)管理模塊設(shè)計(jì)下位機(jī)管理模塊設(shè)計(jì) 光信號(hào)處理模塊實(shí)現(xiàn)了光信號(hào)物理層的解析,而通信與實(shí)時(shí)監(jiān)測模塊則完成光信號(hào) 量的實(shí)時(shí)獲取與故障判定。 下位機(jī)管理模塊通過與 fpga 及 dsp

16、模塊進(jìn)行通訊,采用濾波技術(shù)濾除檢測期間無用 信息,根據(jù)實(shí)際現(xiàn)場需要實(shí)時(shí)獲取各類狀態(tài)數(shù)據(jù),并給出故障判定。一旦檢測到光纖工 作異常,記錄當(dāng)前的時(shí)間和列車運(yùn)行的地點(diǎn),并且將這些信息數(shù)據(jù)傳輸給上位機(jī)。 模塊的抗傳導(dǎo)、靜電放電、浪涌抗擾度等 emc 性能均經(jīng)過專業(yè)測試,并參照鐵路交 通應(yīng)用標(biāo)準(zhǔn),可適應(yīng)與列車的特殊工況。 .5 實(shí)時(shí)監(jiān)測上位機(jī)模塊設(shè)計(jì)實(shí)時(shí)監(jiān)測上位機(jī)模塊設(shè)計(jì) 實(shí)時(shí)監(jiān)測上位機(jī)完成波形分析、光信號(hào)統(tǒng)計(jì)信息的獲取及在線故障判定。列車實(shí)時(shí) 運(yùn)行中,一旦發(fā)現(xiàn)光信號(hào)的故障,即可實(shí)時(shí)獲取環(huán)境信息,并將故障信息發(fā)送給地面 gsm 接收終端。 故障通告內(nèi)容應(yīng)包括:光纖長度,事件故障點(diǎn)在光纖長

17、度上所處的位置,光纖串聯(lián) 中可能的故障器件,發(fā)生故障時(shí)列車行所處的經(jīng)度和緯度及故障發(fā)生時(shí)間、速度(需在 上位機(jī)中預(yù)植列車圖形化運(yùn)行線路) 。 所有故障信息通報(bào)信息在上位機(jī)保存。故障信息保存容量大于 1000 條,斷電后信息 不丟失。地面終端可查取保存完畢的故障信息。 上位機(jī)通過網(wǎng)口與 otdr 設(shè)備連接,并實(shí)時(shí)傳輸數(shù)據(jù)。 .6 電源模塊設(shè)計(jì)電源模塊設(shè)計(jì) 無需車廂額外供電,通過外部自帶模塊對系統(tǒng)進(jìn)行供電。電源模塊金屬六面屏蔽封 裝,具有過流保護(hù)、短路保護(hù)、過壓保護(hù)等功能,使其安全性、穩(wěn)定性和可靠性得到充 分保障,正適用于鐵路列車的特殊工況。 .7 軟件設(shè)計(jì)軟件設(shè)計(jì)

18、 軟件設(shè)計(jì)功能架構(gòu)圖如下所示: 數(shù)據(jù)傳輸層 數(shù)據(jù)解析層 波形繪制 故障信息分析 數(shù)據(jù)分析 地理信息分析 外部調(diào)用接口 光信號(hào)統(tǒng)計(jì) 分析 軟軟件件架架構(gòu)構(gòu)設(shè)設(shè)計(jì)計(jì) 模 塊 調(diào) 度 機(jī) 制 接 口 安 全 機(jī) 制 圖 2-3-7 軟件設(shè)計(jì)功能架構(gòu)圖 第第 3 3 章章 項(xiàng)目實(shí)現(xiàn)項(xiàng)目實(shí)現(xiàn) 在此處項(xiàng)目研發(fā)過程中本人主要負(fù)責(zé)實(shí)時(shí)監(jiān)測上位機(jī)模塊的開發(fā)。因此,項(xiàng)目實(shí)現(xiàn) 主要圍繞該模塊。上位機(jī)模塊又可以劃分為兩個(gè)模塊: 1) web 模塊(包括:瀏覽器界面和服務(wù)器端) 2) java 客戶端模塊 web 瀏覽器端采用 javascript+css+ajax+jquery,使用定時(shí)向服務(wù)器端發(fā)送 ajax 請求

19、, 請求 web 服務(wù)器數(shù)據(jù),數(shù)據(jù)采用 json 格式傳輸。瀏覽器端拿到數(shù)據(jù)后,開始更新界面。 地圖使用百度地圖 api(javascript 版) ,從服務(wù)器端獲取的經(jīng)緯度信息(gps 坐標(biāo))轉(zhuǎn)成 百度地圖特有的經(jīng)緯度,并以標(biāo)注的形式顯示在地圖上(舊事件為洋紫色標(biāo)注,最新事 件為淡綠色標(biāo)注) 。 java 客戶端負(fù)責(zé)與下位機(jī)和 otdr 設(shè)備進(jìn)行通信,從下位機(jī)獲取列車經(jīng)緯度信息, 從 otdr 設(shè)備獲取列車事件點(diǎn)信息(光信號(hào)故障點(diǎn)集合) ,完成分析數(shù)據(jù)之后,發(fā)送定義 好格式的數(shù)據(jù)(以字節(jié)為單位)給下位機(jī),同時(shí)發(fā)送 http post 請求(字符串形式) 給 web 服務(wù)器。 3.13.1 數(shù)

20、據(jù)庫連接模塊數(shù)據(jù)庫連接模塊 web 服務(wù)器端數(shù)據(jù)庫采用文本文件類型的輕量級(jí)數(shù)據(jù)庫 sqlite,主要目的是:提高 軟件性能、減少時(shí)間成本和降低后期維護(hù)等。使用 sqlite 數(shù)據(jù)庫主要分三部分:1.加載 sqlitejdbc.dll 2.使用 sqlitejdbc-v037-native.jar 3.加載數(shù)據(jù)庫驅(qū)動(dòng)。 圖 3-1-1 web 端架構(gòu) 圖 3-1-2 數(shù)據(jù)庫連接 3.23.2 webweb 瀏覽器端模塊瀏覽器端模塊 圖 3-2-1 預(yù)定義列車路線:預(yù)定義列車路線: 京滬(北京-上海) 、京廣(北京-廣州) 、鄭西(鄭州-西安) 、膠濟(jì)(青島-濟(jì)南) 、 杭寧(杭州-南京) 部分關(guān)

21、鍵代碼如下:部分關(guān)鍵代碼如下: 圖 3-2-2 京滬線(封裝成數(shù)組) 圖 3-2-3 百度地圖 api 圖 3-2-4 列車事件(故障點(diǎn)集合)顯示 同一時(shí)間的故障點(diǎn)集合(事件)顯示在百度地圖的同一標(biāo)注中。 圖 3-2-5 路線定義 可自由選擇線路,默認(rèn)為顯示所有列車路線。清除事件按鈕可初始化 sqlite 數(shù)據(jù)庫 表(刪除舊事件列表,重新初始化故障點(diǎn)集合) 。 3.33.3 javajava 客戶端模塊客戶端模塊 主界面如圖 3-3 所示: 圖 3-3 程序主界面 .1 程序啟動(dòng)重連程序啟動(dòng)重連 以多線程的形式啟動(dòng)主程序,防止程序主界面出現(xiàn)卡死的現(xiàn)象。在初始化主界面時(shí), 同時(shí)啟

22、動(dòng)連接下位機(jī)(socket 通信,端口號(hào):1200 ip:下位機(jī)默認(rèn))的線程。如果發(fā) 現(xiàn)下位未啟動(dòng)則一直嘗試重連,直至連接下位機(jī)成功,開始測試按鈕才能開始點(diǎn)擊。點(diǎn) 擊開始測試按鈕后,開始定時(shí)任務(wù),周期 60s。 部分關(guān)鍵代碼:部分關(guān)鍵代碼: 圖 3-3-1 .2 保存文件保存文件 java 客戶端從 otdr 設(shè)備中獲取事件(故障點(diǎn)集合)信息,完成數(shù)據(jù)的分析后,保存 最原始的文件信息為 tmp.csv,方便 excel 打開查看。 圖 3-3-2 為 excel 打開效果: 圖 3-3-2 關(guān)鍵代碼:關(guān)鍵代碼: package .insigma.utils; import ja

23、va.io.bufferedreader; import java.io.bufferedwriter; import java.io.file; import java.io.fileinputstream; import java.io.filenotfoundexception; import java.io.fileoutputstream; import java.io.ioexception; import java.io.inputstreamreader; import java.io.outputstreamwriter; import java.util.date; imp

24、ort mons.logging.log; import mons.logging.logfactory; public class savefileutil private static final log log = logfactory.getlog(savefileutil.class); public static boolean savefile(string str,date date,double lng, double lat) string arr = null; try arr = str.split(n); catch(nullpointerexception e) l

25、og.error(otdr 設(shè)備工作不正常); return false; file file = new file(tmp.csv); if(!file.exists() try (tmp.csv 文件不存在,開始創(chuàng)建); file.createnewfile(); (tmp.csv 文件創(chuàng)建成功); catch (ioexception e) /e.printstacktrace(); log.error(創(chuàng)建文件 tmp.csv 時(shí),發(fā)生錯(cuò)誤); return false; try bufferedreader br = new bufferedreade

26、r(new inputstreamreader(new fileinputstream(file); stringbuilder sb = new stringbuilder(); string temp; while( (temp = br.readline() != null) sb.append(temp); sb.append(rn); sb.append(事件號(hào),距離(km),熔接耗損(db),回波耗損(db),累計(jì)耗損(db), db/km,事件類型,區(qū)間折射率); for(int i = 20; i 8 b1 = (byte) (n 16 b0 = (byte) (n 24 re

27、turn b; /* * byte convert int * param b * return */ public static int bytes2int(byte b) return b3 /* * float to byte * param f * return */ public static byte float2bytes(float f) int fbit = float.floattointbits(f); byte b = new byte4; for (int i = 0; i (24 - i * 8); int len = b.length; byte dest = n

28、ew bytelen; system.arraycopy(b, 0, dest, 0, len); byte temp; for (int i = 0; i len / 2; +i) temp = desti; desti = destlen - i - 1; destlen - i - 1 = temp; return dest; / 時(shí) 1 字節(jié),分 1 字節(jié),秒 1 字節(jié),年 2 字節(jié),月 1 字節(jié),日 1 字節(jié), 預(yù)留 1 字節(jié) /* * 日期轉(zhuǎn)成 8 字節(jié) byte * param date * return */ public static byte date2bytes(date

29、 date) byte b = new byte8; calendar cal = calendar.getinstance(); cal.settime(date); int year = cal.get(calendar.year); int month = cal.get(calendar.month); int day = cal.get(calendar.day_of_month); int hour = cal.get(calendar.hour_of_day); int minute = cal.get(calendar.minute); int second = cal.get

30、(calendar.second); / 按時(shí)、分、秒、年、月、日順序 b0 = int2onebyte(hour); / 1 字節(jié) b1 = int2onebyte(minute);/ 1 字節(jié) b2 = int2onebyte(second);/ 1 字節(jié) system.arraycopy(int2twobytes(year), 0, b, 3, 2);/ 年,2 字節(jié) b5 = int2onebyte(month+1);/ 1 字節(jié) b6 = int2onebyte(day);/ 1 字節(jié) /b7 保留一字節(jié) return b; public static long bytes2long

31、(byte b) long ioutcome = 0; byte bloop; for (int i = 0; i b.length; i+) bloop = bi; ioutcome += (long)(bloop return ioutcome; public static byte longtobytes(long l) byte bytearray = new byte8; for (int i=0; i= 8; return bytearray; /* * int convert 1 byte * param num * return */ public static byte in

32、t2onebyte(int num) return (byte) (num /* * int convert byte(length = 2) * param num * return */ public static byte int2twobytes(int num) byte b = new byte2; b1 = (byte) (num b0 = (byte) (num 8 return b; /* * short convert byte * param b * return */ public static short bytes2short(byte b) return (sho

33、rt)(b1 .5 從從 otdrotdr 設(shè)備采集數(shù)據(jù)設(shè)備采集數(shù)據(jù) 上位機(jī)軟件(java)使用 java 本地方法(jni)調(diào)用 dll 文件,從而驅(qū)動(dòng) otdr 設(shè) 備獲取 otdr 設(shè)備中保存的事件信息。上位機(jī)軟件負(fù)責(zé)解析事件信息(解析成 list 集合) 。 加載加載 dll 文件:文件: 關(guān)鍵代碼: 圖 3-3-5(1) dll 文件: 圖 3-3-5(2)dll 文件 解析數(shù)據(jù)成 list: public static list decodestring(string msg) /存放故障點(diǎn)的集合 list list = new arraylist(); /解析數(shù)據(jù)

34、 string arr = null; try arr = msg.split(n); catch(nullpointerexception e) log.error(otdr設(shè)備工作不正常); return list; /從第20行開始解析數(shù)據(jù) boolean flag = false; /標(biāo)志是否是最后一個(gè)故障點(diǎn) try for(int i = 20; i = 3) /故障距離(單位:米) float distance = float.parsefloat(msgcontent1)*1000; event.setdistance(formatfloat2(distance); /損耗 沒耗

35、損為0.0(單位:db) if(isnotnull(msgcontent2) float loss = float.parsefloat(msgcontent2); event.setloss(formatfloat2(loss); else event.setloss(0.0f); /默認(rèn)衰減 list.add(event); catch(exception e) /system.out.println(msg); log.error(解析事件時(shí)發(fā)生錯(cuò)誤!); /e.printstacktrace(); return list; .6 事件是否發(fā)生變化算法事件是否發(fā)生變化算法

36、 上位機(jī)軟件(java 開發(fā))從下位機(jī)獲取經(jīng)緯度,從 otdr 設(shè)備獲取事件(故障點(diǎn)集 合) 。完成事件的分析,如果事件發(fā)生變化(對比上次事件) ,則上位機(jī)軟件(java 開發(fā)) 負(fù)責(zé)向下位機(jī)發(fā)送最新事件信息;否則,不發(fā)送。下位機(jī)負(fù)責(zé)向 gsm 終端(android 客 戶端)發(fā)送短信。 關(guān)鍵代碼如下:關(guān)鍵代碼如下: package .insigma.utils; import java.util.list; import .insigma.pojo.event; /* * 對比事件點(diǎn) * author jingxuan * */ public class contrastlist /對比故障

37、列表,看故障點(diǎn)是否發(fā)生變化 public static int compareevent(list currenteventlist, list lasteventlist) int flag = 0; /0 沒發(fā)生變化 1 變化 if(lasteventlist.size() = 0 else if(currenteventlist.size() = 0 else if(currenteventlist.size() != lasteventlist.size() /故障點(diǎn)個(gè)數(shù)發(fā)生變化 flag = 1; else if(currenteventlist.size() = currentev

38、entlist.size() /故障點(diǎn)個(gè)數(shù)沒發(fā)生變化 /分析故障點(diǎn) for(int i = 0; i = 1) return 1; return 0; .7 發(fā)送發(fā)送 httphttp postpost 如果上位機(jī)軟件(java 開發(fā))檢測到事件發(fā)生變化,開始向下位機(jī)發(fā)送最新事件信息的 同時(shí)也向 web 服務(wù)器發(fā)送 http post 請求(包含最新事件信息) 。上位機(jī)軟件采用 apache 組織的開源工具 httpclient 發(fā)送 http post 請求。 關(guān)鍵代碼入圖關(guān)鍵代碼入圖 3-3-7 所示:所示: 圖 3-3-7 發(fā)送 http post 請求 第第 4 4 章

39、章 項(xiàng)目總結(jié)項(xiàng)目總結(jié) 4.14.1 項(xiàng)目技術(shù)總結(jié)項(xiàng)目技術(shù)總結(jié) .1 前臺(tái)頁面技術(shù)前臺(tái)頁面技術(shù) 前臺(tái)使用百度地圖 api(javascript 版本) 、jquery、css 等技術(shù)或工具。在 js 腳本 中使用 jquery 的 ajax 函數(shù)定時(shí)向服務(wù)器發(fā)送請求,請求事件列表,服務(wù)器接收到請求 之后,查詢 sqlite 數(shù)據(jù)庫中的 event 表(存放事件信息) 。瀏覽器和服務(wù)器的數(shù)據(jù)交互 格式為 gson,js 腳本拿到服務(wù)器返回的 gson 格式的事件信息后,開始解析數(shù)據(jù),從而 更新瀏覽器界面。 本次開發(fā)過程中,大量使用百度地圖的 api,開發(fā)項(xiàng)目之前大致了解百度地圖 a

40、pi 類 的使用。頁面布局使用 css+div,按鈕、字體和窗體樣式等也都使用了 css 技術(shù)。使用 jquery 這個(gè)開源的 js 框架,減少開發(fā)成本、提高開發(fā)效率、降低 js 代碼的復(fù)雜度和減 少 js 腳本的書寫量。ajax 技術(shù)可以動(dòng)態(tài)無刷新更新界面,提高用戶體驗(yàn),給用戶視覺 上的享受,而且還能減少服務(wù)器端壓力,降低服務(wù)器流量的浪費(fèi),從而減少開發(fā)成本。 .2 服務(wù)器和桌面客戶端技術(shù)服務(wù)器和桌面客戶端技術(shù) (1)servlet: servlet 是在服務(wù)器上運(yùn)行的小程序。這個(gè)詞是在 java applet 的環(huán)境中創(chuàng)造的, java applet 是一種當(dāng)作單獨(dú)文件跟網(wǎng)頁

41、一起發(fā)送的小程序,它通常用于在客戶端運(yùn) 行,結(jié)果得到為用戶進(jìn)行運(yùn)算或者根據(jù)用戶互作用定位圖形等服務(wù)。服務(wù)器上需要一 些程序,常常是根據(jù)用戶輸入訪問數(shù)據(jù)庫的程序。這些通常是使用 cgi(common gateway interface)應(yīng)用程序完成的。然而,在服務(wù)器上運(yùn)行 java,這種程序可使 用 java 編程語言實(shí)現(xiàn)。在通信量大的服務(wù)器上,java servlet 的優(yōu)點(diǎn)在于它們的執(zhí) 行速度更快于 cgi 程序。各個(gè)用戶請求被激活成單個(gè)程序中的一個(gè)線程,而無需創(chuàng) 建單獨(dú)的進(jìn)程,這意味著服務(wù)器端處理請求的系統(tǒng)開銷將明顯降低。 (2)jni: jni 是 java native interfa

42、ce 的縮寫,中文為 java 本地調(diào)用。從 java1.1 開始, java native interface(jni)標(biāo)準(zhǔn)成為 java 平臺(tái)的一部分,它允許 java 代碼和其 他語言寫的代碼進(jìn)行交互。jni 一開始是為了本地已編譯語言,尤其是 c 和 c+而設(shè) 計(jì)的,但是它并不妨礙你使用其他語言,只要調(diào)用約定受支持就可以了。 (3)sqlite: sqlite,是一款輕型的數(shù)據(jù)庫,是遵守 acid 的關(guān)聯(lián)式數(shù)據(jù)庫管理系統(tǒng),它的設(shè)計(jì)目 標(biāo)是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低, 在嵌入式設(shè)備中,可能只需要幾百 k 的內(nèi)存就夠了。它能夠支持 windows/

43、linux/unix 等等主流的操作系統(tǒng),同時(shí)能夠跟很多程序語言相結(jié)合,比如 tcl、c#、php、java 等,還有 odbc 接口,同樣比起 mysql、postgresql 這兩款開源 世界著名的數(shù)據(jù)庫管理系統(tǒng)來講,它的處理速度比他們都快。 (4)httpcomponents: http 協(xié)議(超文本傳輸協(xié)議)也許是當(dāng)前互聯(lián)網(wǎng)領(lǐng)域最重要的協(xié)議。web 服務(wù)(web services) 、基于網(wǎng)絡(luò)的應(yīng)用和網(wǎng)絡(luò)計(jì)算的增長對 http 協(xié)議角色的擴(kuò)展作用遠(yuǎn)勝于 用戶驅(qū)動(dòng)的 web 瀏覽器(譯者按:http 協(xié)議的最初目的可能正是為瀏覽器提供良好 的支持) ,同時(shí)不斷增長的更多應(yīng)用也需要 htt

44、p 協(xié)議的支持?;趯?http 協(xié)議良好 的支持和擴(kuò)展的設(shè)計(jì),httpcomponents 也許會(huì)被正在構(gòu)建 http 客戶端或者服務(wù)器端 應(yīng)用的人所感興趣:比如 web 瀏覽器、網(wǎng)頁蜘蛛(爬蟲) 、http 代理、web 服務(wù)庫、 或是基于調(diào)整或擴(kuò)展 http 協(xié)議的分布式通信系統(tǒng)。 (5)commons-logging: commons logging (jcl)提供的是一個(gè) java 的日志接口,同時(shí)兼顧輕量級(jí)和不依賴 于具體的日志實(shí)現(xiàn)工具。 它提供給中間件/日志工具開發(fā)者一個(gè)簡單的日志操作抽 象,允許程序開發(fā)人員使用不同的具體日志實(shí)現(xiàn)工具。用戶被假定已熟悉某種日志 實(shí)現(xiàn)工具的更高級(jí)別

45、的細(xì) 節(jié)。jcl 提供的接口,對其它一些日志工具,包括 log4j, avalon logkit, and jdk 1.4 等,進(jìn)行了簡單的包裝,此接口更接近于 log4j 和 logkit 的實(shí)現(xiàn)。 4.24.2 技術(shù)創(chuàng)新及特點(diǎn)技術(shù)創(chuàng)新及特點(diǎn) (1) jquery 極大的方便了程序員對 js 腳本的開發(fā),縮短開發(fā)時(shí)間、提高開發(fā)效率、 也提高了用戶體驗(yàn)。 (2) 使用百度地圖 api(javascript 版本) ,熟悉了百度地圖 api 的使用,在一次開 發(fā)的基礎(chǔ)上,方便開發(fā)者進(jìn)行二次開發(fā),節(jié)約開發(fā)成本,提高開發(fā)效率。 (3) ajax 使得 web 頁面可以局部刷新,大量減少數(shù)據(jù)交互產(chǎn)生的

46、流量、節(jié)約服務(wù)器 寬帶、緩解服務(wù)器壓力、界面上提高用戶體驗(yàn)。 (4) jni 的使用使得 java 可以調(diào)用 c/c+。java 在處理硬件方面,性能和效率遠(yuǎn)遠(yuǎn) 不如 c/c+,當(dāng)我們的項(xiàng)目在高層次上必須使用 java,而底層必須使用 c/c+時(shí), 我們可以采用 jni 技術(shù),使用 java 代碼調(diào)用由 c/c+生成的 dll 文件,從而可 以提高性能和效率上的硬性要求。 (5) 項(xiàng)目中使用了日志管理功能,使用日志管理方便后期維護(hù)和故障排查。 (6) 項(xiàng)目中使用了 java 桌面應(yīng)用程序直接向 web 服務(wù)器發(fā)送 http post 請求的技術(shù), 使得桌面應(yīng)用程序直接可以安全的與 web 服務(wù)

47、器交互。 (7) 項(xiàng)目中大量使用封裝和設(shè)計(jì)模式等思想,避免重復(fù)造車輪子,重用代碼,提高開 發(fā)效率,較少開發(fā)周期。 4.34.3 個(gè)人收獲與體會(huì)個(gè)人收獲與體會(huì) 不知不覺,時(shí)間如白駒過隙匆匆在指尖溜走??粗鴿M地的泛黃的落葉,不禁感嘆時(shí) 間滄桑與無奈。 在浙大網(wǎng)新實(shí)訓(xùn)的四個(gè)月中,有同學(xué)的陪伴,有老師的照顧。一路走來,也不覺得 多么累。在實(shí)訓(xùn)過程中也學(xué)到不少知識(shí),在學(xué)校的大部分都是理論性知識(shí),真正用于項(xiàng) 目實(shí)戰(zhàn)的并不多。在實(shí)訓(xùn)過程中,鞏固了理論基礎(chǔ),把從書本上學(xué)到的理論性知識(shí)用實(shí) 戰(zhàn)來鞏固、消化,從而提高理解能力和感悟力。實(shí)訓(xùn)中,老師也講授了不少的書寫代碼 的技巧,對于我們提高開發(fā)效率無疑是有很大幫助的。ide 工具的使用技巧提高我們的 開發(fā)效率,ide 的幫助

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論