版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 南 京 理 工 大 學(xué)</p><p> 畢業(yè)設(shè)計(jì)說明書(論文)</p><p> 指導(dǎo)者: </p><p> (姓 名) (專業(yè)技術(shù)職務(wù))</p><p> 評(píng)閱者:
2、</p><p> (姓 名) (專業(yè)技術(shù)職務(wù))</p><p> 2011 年 5 月</p><p> 畢業(yè)設(shè)計(jì)說明書(論文)中文摘要</p><p> 畢業(yè)設(shè)計(jì)說明書(論文)外文摘要</p><p><b> 目 次</b></p><
3、;p><b> 1 緒論1</b></p><p> 1.1 背景介紹1</p><p> 1.2 該課題研究的目的及意義1</p><p> 1.3 誤差分析的發(fā)展歷史及現(xiàn)狀1</p><p> 1.4 論文結(jié)構(gòu)2</p><p> 2 相關(guān)技術(shù)與平臺(tái)介紹
4、3</p><p> 2.1 Socket編程3</p><p> 2.2 VC平臺(tái)介紹6</p><p> 3 系統(tǒng)分析與軟件設(shè)計(jì)8</p><p> 3.1 需求介紹8</p><p> 3.2 模塊功能劃分8</p><p> 3.3 本章小結(jié)9<
5、;/p><p> 4 系統(tǒng)的實(shí)現(xiàn)10</p><p> 4.1 網(wǎng)絡(luò)模塊的實(shí)現(xiàn)10</p><p> 4.2 顯示分析模塊的實(shí)現(xiàn)10</p><p> 4.3 本章小結(jié)19</p><p><b> 結(jié) 論20</b></p><p><b&
6、gt; 致 謝21</b></p><p> 參 考 文 獻(xiàn)22</p><p><b> 1 緒論</b></p><p><b> 1.1 背景介紹</b></p><p> 近年來,隨著現(xiàn)代軍事科學(xué)技術(shù)的發(fā)展,軍隊(duì)信息化水平的提高,對(duì)各種武器系統(tǒng)的射擊精度有了更
7、高的要求, 通過完善控制系統(tǒng),使用包括多通道自導(dǎo)裝置在內(nèi)的先進(jìn)自導(dǎo)裝置,武器與載具、外部各種平臺(tái)的偵察系統(tǒng)及指揮所的網(wǎng)絡(luò)相互協(xié)同,大幅度提高射擊精度(圓概率誤差不超過1-3米)?;鹋谧鳛殛戃姷闹匾淦?,在信息化戰(zhàn)爭(zhēng)的要求下,實(shí)現(xiàn)精確打擊應(yīng)是我軍所追求的目標(biāo)之一。這就帶來了如何提高火炮武器系統(tǒng)射擊精度的課題,傳統(tǒng)的人工計(jì)算分析誤差的方式早已被時(shí)代拋棄了。如今,代替人工計(jì)算分析誤差的是計(jì)算機(jī)計(jì)算分析誤差。因其具有強(qiáng)大的計(jì)算能力,受到了越來越
8、多的關(guān)注。</p><p> 1.2 該課題研究的目的及意義</p><p> 伴隨著誤差分析精度越來越高的要求,各種誤差分析軟件應(yīng)運(yùn)而生,它能很好的利用計(jì)算機(jī)強(qiáng)大的計(jì)算能力,結(jié)合各種圖形、曲線等直觀手段分析誤差。誤差分析軟件實(shí)現(xiàn)了動(dòng)態(tài)顯示誤差,精確的計(jì)算各種誤差參數(shù)等功能,提供了高效率的計(jì)算和更方便、更直觀的顯示。近年來,我軍不斷推進(jìn)信息化建設(shè),武器系統(tǒng)不斷更新?lián)Q代,隨之而來的是射
9、擊精度的不斷提高,這當(dāng)然離不開誤差分析,所以誤差分析軟件有著自己獨(dú)特的貢獻(xiàn)。</p><p> 1.3 誤差分析的發(fā)展歷史及現(xiàn)狀</p><p> 誤差分析作為數(shù)據(jù)處理的重要手段,在不斷進(jìn)行著發(fā)展。在1809年高斯對(duì)最小二乘估計(jì)進(jìn)行的誤差分析中發(fā)現(xiàn),在線性模型的所有無偏估計(jì)類中,最小二乘估計(jì)是唯一的方差最小的無偏估計(jì);進(jìn)入20世紀(jì)后,哥色特、費(fèi)歇爾等人還發(fā)現(xiàn),在正態(tài)誤差的假定下,最小
10、二乘估計(jì)有較完善的小樣本理論,使基于它的統(tǒng)計(jì)推斷易于操作且有關(guān)的概率計(jì)算不難進(jìn)行。與此同時(shí),對(duì)最小二乘法誤差分析的研究也促進(jìn)了線性模型理論的發(fā)展。頻譜分析信號(hào)校正誤差的概述算法是庫利一圖基1965年在《計(jì)算數(shù)學(xué)》雜志上首先提出的。從此以后,它作為頻譜分析的基礎(chǔ)得到廣泛應(yīng)用。隨著計(jì)算機(jī)的普及和推廣,運(yùn)算速度的提高,以軟件為基礎(chǔ)的頻譜分析正在得到越來越廣泛的應(yīng)用(快速傅里葉變換)和譜分析運(yùn)算速度迅速發(fā)展,在不到5年時(shí)間里速度提高了30倍以上
11、。1966年時(shí)域有限差分法(FDTD method)提出。1966年提出的FDTD法是最受關(guān)注、發(fā)展最為迅速和應(yīng)用范圍最廣的一種典型全波分析時(shí)域方法。經(jīng)典的FDTD法的迭代公式是在包括時(shí)間在內(nèi)的四維空間變量中,對(duì)Maxwell旋度方程對(duì)應(yīng)的微分方程進(jìn)行二階中心差分近似所得到的。該方法的基本支撐技術(shù)包括數(shù)值穩(wěn)定性條件(即空</p><p><b> 1.4 論文結(jié)構(gòu)</b></p&g
12、t;<p> 本文的主要內(nèi)容是航路測(cè)試誤差分析軟件的開發(fā)。</p><p><b> 本文的內(nèi)容安排:</b></p><p> 第一章介紹了火炮武器隨動(dòng)系統(tǒng)誤差分析的發(fā)展背景,課題的研究目的和意義,誤差分析的發(fā)展歷程和本論文的設(shè)計(jì)任務(wù)及文章結(jié)構(gòu)。</p><p> 第二章介紹了相關(guān)技術(shù)以及開發(fā)工具。</p>
13、<p> 第三章介紹了對(duì)本軟件的分析和開發(fā),包括需求介紹、各功能模塊的劃分及數(shù)據(jù)的處理。</p><p> 第四章介紹了根據(jù)設(shè)計(jì)結(jié)果,利用VC++6.0對(duì)系統(tǒng)進(jìn)行具體應(yīng)用程序的設(shè)計(jì)。并對(duì)設(shè)計(jì)過程給予相應(yīng)的解釋說明</p><p> 2 相關(guān)技術(shù)與平臺(tái)介紹</p><p> 2.1 Socket編程</p><p>
14、所謂Socket通常也稱作"套接字",應(yīng)用程序通常通過"套接字"向網(wǎng)絡(luò)發(fā)出請(qǐng)求或者應(yīng)答網(wǎng)絡(luò)請(qǐng)求。Socket是建立網(wǎng)絡(luò)連接時(shí)使用的。在連接成功時(shí),應(yīng)用程序兩端都會(huì)產(chǎn)生一個(gè)Socket實(shí)例,操作這個(gè)實(shí)例,完成所需的會(huì)話。對(duì)于一個(gè)網(wǎng)絡(luò)連接來說,套接字是平等的,并沒有差別,不因?yàn)樵诜?wù)器端或在客戶端而產(chǎn)生不同級(jí)別。Socket接口是TCP/IP網(wǎng)絡(luò)的API,Socket接口定義了許多函數(shù)或例程,程序員可
15、以用它們來開發(fā)TCP/IP網(wǎng)絡(luò)上的應(yīng)用程序。</p><p> Socket接口設(shè)計(jì)最先是將接口放在Unix操作系統(tǒng)里面的。網(wǎng)絡(luò)的Socket數(shù)據(jù)傳輸是一種特殊的I/O,Socket也是一種文件描述符。Socket也具有一個(gè)類似于打開文件的函數(shù)調(diào)用Socket(),該函數(shù)返回一個(gè)整型的Socket描述符,隨后的連接建立、數(shù)據(jù)傳輸?shù)炔僮鞫际峭ㄟ^該Socket實(shí)現(xiàn)的。</p><p> W
16、indows Sockets實(shí)現(xiàn)一般由兩部分組成:開發(fā)組件和運(yùn)行組件。開發(fā)組件是提供給程序員開發(fā)Windows Sockets應(yīng)用程序使用的,它包括了介紹Windows Sockets實(shí)現(xiàn)的文檔、Windows Sockets應(yīng)用程序接口庫函數(shù)和一些頭文件,其中WINSOCK.H是最重要的頭文件。運(yùn)行組件是Windows Sockets運(yùn)用程序接口的動(dòng)態(tài)鏈接庫,文件名為WINSOCK.DLL,應(yīng)用程序在執(zhí)行時(shí)通過裝入它以實(shí)現(xiàn)網(wǎng)絡(luò)通信功能
17、。</p><p> 常用的Socket類型有兩種:流式Socket(SOCK_STREAM)和數(shù)據(jù)報(bào)式Socket(SOCK_DGRAM)。流式是一種面向連接的Socket,針對(duì)于面向連接的TCP服務(wù)應(yīng)用;數(shù)據(jù)報(bào)式Socket是一種無連接的Socket,對(duì)應(yīng)于無連接的UDP服務(wù)應(yīng)用。</p><p> socket調(diào)用庫函數(shù)主要有:</p><p><b
18、> 創(chuàng)建套接字:</b></p><p> Socket(af,type,protocol)</p><p> 建立地址和套接字的聯(lián)系:</p><p> bind(sockid, local addr, addrlen)</p><p> 服務(wù)器端偵聽客戶端的請(qǐng)求:</p><p> l
19、isten( Sockid ,quenlen)</p><p> 建立服務(wù)器/客戶端的連接 (面向連接TCP):</p><p> 客戶端請(qǐng)求連接: </p><p> Connect(sockid, destaddr, addrlen)</p><
20、;p> 服務(wù)器端等待從編號(hào)為Sockid的Socket上接收客戶連接請(qǐng)求:</p><p> newsockid=accept(Sockid,Clientaddr, paddrlen)</p><p> 發(fā)送/接收數(shù)據(jù): </p><p> 面向連接:send
21、(sockid, buff, bufflen)</p><p><b> recv( )</b></p><p> 面向無連接:sendto(sockid,buff,…,addrlen)</p><p> recvfrom( )</p><p> 釋放套接字:close(sockid)</p>&l
22、t;p> 2.1.1 基于Socket的TCP編程</p><p> TCP:Transmission Control Protocol的簡(jiǎn)稱,傳輸控制協(xié)議TCP是一種面向連接(連接導(dǎo)向)的、可靠的、基于字節(jié)流的運(yùn)輸層(Transport layer)通信協(xié)議。面向連接是指一次正常的TCP傳輸需要通過在TCP客戶端和TCP服務(wù)端建立特定的虛電路連接來完成,該過程通常被稱為“三次握手”。可靠性可以通過很
23、多種方法來提供保證,在這里我們關(guān)心的是數(shù)據(jù)序列和確認(rèn)。TCP通過數(shù)據(jù)分段(Segment)中的序列號(hào)保證所有傳輸?shù)臄?shù)據(jù)可以在遠(yuǎn)端按照正常的次序進(jìn)行重組,而且通過確認(rèn)保證數(shù)據(jù)傳輸?shù)耐暾浴Rㄟ^TCP傳輸數(shù)據(jù),必須在兩端主機(jī)之間建立連接。TCP套接口是字節(jié)流套接口(stream socket)的一種。</p><p> 2.1.2 基于Socket的UDP編程</p><p> UDP
24、:User Datagram Protocol的簡(jiǎn)稱,用戶數(shù)據(jù)包協(xié)議UDP,是 OSI 參考模型中一種無連接的傳輸層協(xié)議,提供面向事務(wù)的簡(jiǎn)單不可靠信息傳送服務(wù)。UDP 協(xié)議基本上是 IP 協(xié)議與上層協(xié)議的接口。UDP 協(xié)議適用端口分別運(yùn)行在同一臺(tái)設(shè)備上的多個(gè)應(yīng)用程序。它是面向非連接的協(xié)議,它不與對(duì)方建立連接,而是直接就把數(shù)據(jù)包發(fā)送過去。</p><p> UDP適用于一次只傳送少量數(shù)據(jù)、對(duì)可靠性要求不高的應(yīng)用環(huán)
25、境。UDP套接口是數(shù)據(jù)報(bào)套接口(datagram socket)的一種。</p><p> 基于UDP客戶-服務(wù)器程序設(shè)計(jì)基本框架如圖2.1所示</p><p> 圖2.1 基本UDP客戶—服務(wù)器程序設(shè)計(jì)基本框架流程圖</p><p> 服務(wù)器的工作流程:首先調(diào)用socket函數(shù)創(chuàng)建一個(gè)Socket,然后調(diào)用bind函數(shù)將其與本機(jī)地址以及一個(gè)本地端口號(hào)綁定,
26、接收到一個(gè)客戶端時(shí),服務(wù)器顯示該客戶端的IP地址,并將字串返回給客戶端。</p><p> 客戶端的工作流程:首先調(diào)用socket函數(shù)創(chuàng)建一個(gè)Socket,填寫服務(wù)器地址及端口號(hào),從標(biāo)準(zhǔn)輸入設(shè)備中取得字符串,將字符串傳送給服務(wù)器端,并接收服務(wù)器端返回的字符串。最后關(guān)閉該socket。</p><p> 通過對(duì)上面兩種協(xié)議的比較,可以很明顯的看出UDP沒有三次握手過程。簡(jiǎn)單點(diǎn)說,UDP處
27、理的細(xì)節(jié)比TCP少。UDP不能保證消息被傳送到(它也報(bào)告消息沒有傳送到)目的地。UDP也不保證數(shù)據(jù)包的傳送順序。UDP把數(shù)據(jù)發(fā)出去后只能希望它能夠抵達(dá)目的地。下面我們具體比較兩種模式的優(yōu)缺點(diǎn)。</p><p><b> TCP優(yōu)缺點(diǎn):</b></p><p> 優(yōu)點(diǎn):a) TCP提供以認(rèn)可的方式顯式地創(chuàng)建和終止連接;</p><p>
28、b) TCP保證可靠的、順序的(數(shù)據(jù)包以發(fā)送的順序接收)以及不會(huì)重復(fù)的數(shù)據(jù)傳輸;</p><p> c) TCP處理流控制;</p><p> d) 允許數(shù)據(jù)優(yōu)先;</p><p> e) 如果數(shù)據(jù)沒有傳送到,則TCP套接口返回一個(gè)出錯(cuò)狀態(tài)條件;</p><p> f) TCP通過保持連續(xù)并將數(shù)據(jù)塊分成更小的分片來處理大數(shù)據(jù)
29、塊。一般無需程序員知道。</p><p> 缺點(diǎn): TCP在轉(zhuǎn)移數(shù)據(jù)時(shí)必須創(chuàng)建(并保持)一個(gè)連接。這個(gè)連接給通信進(jìn)程增加了開銷,讓它比UDP速度要慢。</p><p><b> UDP優(yōu)缺點(diǎn):</b></p><p> 優(yōu)點(diǎn):a) UDP不要求保持一個(gè)連接;</p><p> b) UDP沒有因接收方認(rèn)可收到
30、數(shù)據(jù)包(或者當(dāng)數(shù)據(jù)包沒有正確抵達(dá)而自動(dòng)重傳)而帶來的開銷;</p><p> c) 設(shè)計(jì)UDP的目的是用于短的應(yīng)用和控制消息;</p><p> d) 在一個(gè)數(shù)據(jù)包連接一個(gè)數(shù)據(jù)包的基礎(chǔ)上,UDP要求的網(wǎng)絡(luò)帶寬比TDP更小。</p><p> 缺點(diǎn):UDP在轉(zhuǎn)移數(shù)據(jù)是不需要連接的,可靠性方面就比如上TCP。</p><p> 而本論
31、文設(shè)計(jì)的航路測(cè)試誤差分析軟件所要求的是實(shí)時(shí)的通過網(wǎng)絡(luò)來接收數(shù)據(jù)和更新數(shù)據(jù),對(duì)實(shí)時(shí)性的要求更高一些。對(duì)于誤差分析軟件,本身我們分析的就是誤差數(shù)據(jù),如果在傳輸?shù)倪^程中丟失一個(gè)兩個(gè)數(shù)據(jù)也不會(huì)對(duì)我們的結(jié)果造成影響,所以在對(duì)可靠性的要求上相對(duì)來的低一些。UDP在實(shí)時(shí)性上要優(yōu)于TCP,在帶寬的開銷方面也要比TCP小,故而我們選擇基于Socket的UDP編程來實(shí)現(xiàn)我們的設(shè)計(jì)。通過我們的測(cè)試,基于Socket的UDP編程實(shí)現(xiàn)的航路測(cè)試誤差分析軟件在可靠
32、性上也完全能滿足我們的設(shè)計(jì)要求。</p><p> 2.2 VC平臺(tái)介紹</p><p> 2.2.1 VC++ 6.0</p><p> C++語言是在C語言的基礎(chǔ)上逐步發(fā)展和完善起來的一種高級(jí)編程語言,具有簡(jiǎn)潔,靈活, 運(yùn)算符豐富,程序結(jié)構(gòu)性好,目標(biāo)程序質(zhì)量高,執(zhí)行效率高等特點(diǎn)。</p><p> VC++6.0是Micros
33、oft公司推出的一個(gè)基于Windows系統(tǒng)平臺(tái)、可視化的集成開發(fā)環(huán)境,它的源程序按C++語言的要求編寫,并加入了微軟提供的功能強(qiáng)大的MFC(Microsoft Foundation Class)類庫。因此,使用VC++提供的高度可視化的應(yīng)用程序開發(fā)工具和MFC類庫,可使應(yīng)用程序開發(fā)變得簡(jiǎn)單。</p><p> 2.2.2 MFC簡(jiǎn)介</p><p> MFC,微軟基礎(chǔ)類(Micros
34、oft Foundation Classes),一種Application Framework,隨微軟Visual C++開發(fā)工具發(fā)布。目前最新版本為10.0(截止2011年3月),并且發(fā)布了中文版。該類庫提供一組通用的可重用的類庫以供開發(fā)人員使用。大部分類均從CObject直接或間接派生,只有少部分類例外。MFC應(yīng)用程序的總體結(jié)構(gòu)通常由開發(fā)人員從MFC類派生的幾個(gè)類和一個(gè)CWinApp類對(duì)象(應(yīng)用程序?qū)ο螅┙M成。MFC 提供了MFC
35、AppWizard 自動(dòng)生成框架。</p><p> 此外MFC的部分類為MFC/ATL 通用,可以在Win32 應(yīng)用程序中單獨(dú)包含并使用這些類。MFC中封裝了大部分Windows API函數(shù)和Windows控件,它包含的功能涉及到整個(gè)Windows操作系統(tǒng)。MFC不僅給用戶提供了Windows圖形環(huán)境下應(yīng)用程序的框架,而且還提供了創(chuàng)建應(yīng)用程序的組件,這樣,開發(fā)人員不必從頭設(shè)計(jì)創(chuàng)建和管理一個(gè)標(biāo)準(zhǔn)Windows應(yīng)
36、用程序所需的程序,而是從一個(gè)比較高的起點(diǎn)編程,故節(jié)省了大量的時(shí)間。另外,它提供了大量的代碼,指導(dǎo)用戶編程時(shí)實(shí)現(xiàn)某些技術(shù)和功能。</p><p><b> 2.3 本章小結(jié)</b></p><p> 本章概要地介紹了相關(guān)技術(shù)以及系統(tǒng)的開發(fā)工具。對(duì)于網(wǎng)絡(luò)編程,首先要了解其采用的相應(yīng)編程技術(shù),本文采用的是Socket套接字技術(shù),本章介紹了基于Socket的TCP編程的
37、基本框架和基于Socket的UDP編程的基本框架。本系統(tǒng)采用C++語言進(jìn)行編程,以VC++6.0為平臺(tái),基于MFC對(duì)話框來設(shè)計(jì)程序,簡(jiǎn)化了編程難度,縮短了編程時(shí)間,提高了編程效率。</p><p> 3 系統(tǒng)分析與軟件設(shè)計(jì)</p><p><b> 3.1 需求介紹</b></p><p> 隨著計(jì)算機(jī)的發(fā)展和網(wǎng)絡(luò)技術(shù)的應(yīng)用,在廣泛的
38、科學(xué)研究領(lǐng)域和實(shí)際應(yīng)用中,常常需要對(duì)通過統(tǒng)計(jì)或?qū)嶒?yàn)獲得的大量數(shù)據(jù)進(jìn)行分析 ,以便研究相關(guān)量之間相互作用的方向、 程度,以及用來進(jìn)行趨勢(shì)預(yù)測(cè),函數(shù)值計(jì)算等。各種各樣的計(jì)算機(jī)應(yīng)用軟件已經(jīng)在人們的生活中起著越來越重要的作用。這其中當(dāng)然也包括各種各樣的誤差分析軟件。如今的各種誤差分析方式已漸漸告別了靠人工計(jì)算分析的模式,取而代之是電腦計(jì)算機(jī)軟件分析誤差的方法,大大減輕了誤差分析工作的計(jì)算壓力,提高了效率和準(zhǔn)確性。本文開發(fā)的航路測(cè)試誤差分析軟件需
39、要具有以下特點(diǎn):</p><p> a) 可以通過網(wǎng)絡(luò)實(shí)時(shí)的更新誤差數(shù)據(jù),顯示誤差數(shù)據(jù)曲線;</p><p> b) 可以計(jì)算全部數(shù)據(jù)的均方差,局部數(shù)據(jù)的均方差,并能尋找出最大誤差和最小誤差;</p><p> c) 可以放大,拖動(dòng)誤差曲線;</p><p> d) 可以保存接收到的數(shù)據(jù);</p><p&g
40、t; e) 可以用圖片的形式保存誤差曲線。</p><p> 3.2 模塊功能劃分</p><p> 3.2.1 總體功能劃分</p><p> 根據(jù)需求分析結(jié)果,航路測(cè)試誤差分析軟件主要分為以下2個(gè)模塊:網(wǎng)絡(luò)模塊、顯示分析模塊。各模塊之間關(guān)系如圖3.1所示</p><p> 圖3.1 系統(tǒng)各模塊關(guān)系圖</p>
41、<p> 下面根據(jù)模塊的劃分,具體介紹各模塊的功能。</p><p> 3.2.2 網(wǎng)絡(luò)模塊</p><p> 網(wǎng)絡(luò)模塊,顧名思義就是要求系統(tǒng)能通過網(wǎng)絡(luò)接收數(shù)據(jù),以及進(jìn)行數(shù)據(jù)的動(dòng)態(tài)更新。網(wǎng)絡(luò)傳輸采用C/S模式,分為發(fā)送方和接收方。接收方實(shí)時(shí)接收數(shù)據(jù),并將數(shù)據(jù)傳遞給顯示分析模塊,以便動(dòng)態(tài)顯示誤差曲線。接收數(shù)據(jù)采用阻塞式,即如果接收不到數(shù)據(jù),接收端就會(huì)不停地等待接收,直到接
42、收到數(shù)據(jù),進(jìn)入下一個(gè)接收過程。這樣便可以防止出現(xiàn)已經(jīng)傳輸?shù)浇邮斩说臄?shù)據(jù)未被正確接收的情況。航路測(cè)試誤差分析軟件數(shù)據(jù)傳輸方式采用自發(fā)自收的形式。即在一臺(tái)電腦上運(yùn)行,故采用回送地址127.0.0.1。如果其他應(yīng)用場(chǎng)合需要在兩臺(tái)電腦上運(yùn)行,一臺(tái)作為發(fā)送端,一臺(tái)作為接收端,只需要把回送地址改為接收端的IP地址即可。</p><p> 3.2.3 顯示分析模塊</p><p> 航路測(cè)試中的誤
43、差分析需要進(jìn)行大量的數(shù)據(jù)處理和可視化顯示,以便工作人員觀測(cè),及時(shí)發(fā)現(xiàn)問題和解決問題。顯示模塊能夠讓我們直觀的以曲線的方式獲得方向,高低和誤差等方面的信息,并能對(duì)誤差數(shù)據(jù)進(jìn)行簡(jiǎn)單的分析,例如計(jì)算誤差數(shù)據(jù)的均方差,尋找誤差數(shù)據(jù)中的最大值等。</p><p><b> 3.3 本章小結(jié)</b></p><p> 本章介紹了航路測(cè)試誤差分析軟件的需求介紹、模塊設(shè)計(jì)。系統(tǒng)
44、可以分為顯示分析模塊和網(wǎng)絡(luò)模塊,顯示分析模塊完成誤差數(shù)據(jù)的可視化顯示和誤差數(shù)據(jù)的分析。網(wǎng)絡(luò)模塊完成通過網(wǎng)絡(luò)接收和更新數(shù)據(jù)的任務(wù)。本論文在設(shè)計(jì)上滿足功能要求。</p><p><b> 4 系統(tǒng)的實(shí)現(xiàn)</b></p><p> 4.1 網(wǎng)絡(luò)模塊的實(shí)現(xiàn)</p><p> 本文采用的是基于Socket的UDP編程實(shí)現(xiàn)網(wǎng)絡(luò)通信,即采用數(shù)據(jù)報(bào)套
45、接口。下面是我們建立網(wǎng)絡(luò)通信的具體過程。</p><p> 4.1.1 發(fā)送方實(shí)現(xiàn)</p><p> a) 建立發(fā)送和接收所需的Socket對(duì)象,傳入要使用的本地地址和端口;</p><p> b) 創(chuàng)建字符數(shù)組,儲(chǔ)存要發(fā)送的數(shù)據(jù)內(nèi)容;</p><p> c) 創(chuàng)建數(shù)據(jù)包對(duì)象,內(nèi)部為:接收方地址+發(fā)送數(shù)據(jù)的字符數(shù)組byte[]
46、;</p><p> d) 調(diào)用Socket對(duì)象的發(fā)送數(shù)據(jù)包的方法,發(fā)送創(chuàng)建的數(shù)據(jù)包。</p><p> 發(fā)送方的程序流程圖如圖4.1所示</p><p> 圖4.1 發(fā)送方的程序流程圖</p><p> 4.1.2 接收方實(shí)現(xiàn)</p><p> a) 建立發(fā)送和接收所需的Socket對(duì)象,傳入要使用
47、的本地地址和端口;</p><p> b) 創(chuàng)建緩沖字符數(shù)組,儲(chǔ)存讀到的數(shù)據(jù)包中的字符數(shù)據(jù);</p><p> c) 創(chuàng)建數(shù)據(jù)包對(duì)象,內(nèi)部為:緩沖字符數(shù)組byte[];</p><p> d) 調(diào)用Socket對(duì)象的接收數(shù)據(jù)包的方法,接收的包放在新建的數(shù)據(jù)包對(duì)象里;</p><p> e) 獲得收到的數(shù)據(jù)包里的數(shù)據(jù)。</
48、p><p> 接收方的程序流程圖如圖4.2所示</p><p> 圖4.2 接收方的程序流程圖</p><p> 4.2 顯示分析模塊的實(shí)現(xiàn)</p><p> 4.2.1 主窗口的設(shè)計(jì)</p><p> 界面建立基于對(duì)話框的MFC應(yīng)用程序,按圖4.3搭建好界面,并設(shè)置好各個(gè)控件的ID及按鈕的響應(yīng)函數(shù)。<
49、;/p><p> 圖4.3 程序主界面</p><p> 為了更好的觀察誤差曲線的局部信息,我們?cè)O(shè)計(jì)了一個(gè)誤差曲線放大后的界面。如圖4.4所示</p><p> 圖4.4 誤差曲線放大界面</p><p> 4.2.2 背景圖實(shí)現(xiàn)</p><p> 建立一個(gè)畫圖類CHistogramCtrl,專門用于處理畫
50、圖操作。本文要實(shí)現(xiàn)大量數(shù)據(jù)的實(shí)時(shí)繪圖,避免畫圖時(shí)屏幕閃爍,我們采用了雙緩沖技術(shù)繪圖。雙緩沖即在內(nèi)存中創(chuàng)建一個(gè)與屏幕繪圖區(qū)域一致的對(duì)象,先將圖形繪制到內(nèi)存中的這個(gè)對(duì)象上,再一次性將這個(gè)對(duì)象上的圖形拷貝到屏幕上,這樣能大大加快繪圖的速度。雙緩沖技術(shù)繪圖實(shí)現(xiàn)過程如下:</p><p> a) 在內(nèi)存中創(chuàng)建與畫布一致的緩沖區(qū);</p><p> b) 在緩沖區(qū)畫圖;</p>
51、<p> c) 將緩沖區(qū)位圖拷貝到當(dāng)前畫布上;</p><p> d) 釋放內(nèi)存緩存區(qū)。</p><p> 用創(chuàng)建一個(gè)畫圖類對(duì)象的初始化條件。</p><p> BOOL CHistogramCtrl::Create(DWORD dwStyle, const RECT &rect, CWnd *pParentWnd, UINT uID)
52、。</p><p> 下面開始闡述具體的畫圖過程:</p><p> 調(diào)用具體的畫圖函數(shù)BOOL CHistogramCtrl::InvalidateCtrl(),畫4個(gè)小矩形里面的背景,效果圖如圖4.5所示</p><p> 圖4.5 背景效果圖</p><p> 要實(shí)現(xiàn)將實(shí)時(shí)顯示的誤差曲線進(jìn)行放大,因此我們必須也畫一個(gè)誤差曲線放
53、大后的背景界面調(diào)用函數(shù)BOOL CHistogramCtrl::DrawBackground()畫放大后的背景。畫完放大后的背景圖如圖4.6所示</p><p> 圖4.6 放大后的背景效果圖</p><p> 4.2.3 具體參數(shù)設(shè)置</p><p> a) 設(shè)置背景的縱坐標(biāo)范圍</p><p> 本文設(shè)計(jì)的航路測(cè)試誤差分析軟
54、件的誤差數(shù)據(jù)是有一定范圍的,我們可以在函數(shù)void CHistogramCtrl::SetRange(UINT uLower, UINT uUpper)中設(shè)置背景的縱坐標(biāo)范圍,如(1, 100)等,具體視情況而定。</p><p> b) 設(shè)置網(wǎng)絡(luò)數(shù)據(jù)的接受</p><p> 設(shè)置接收方式為非阻塞模式,避免程序止住死鎖:</p><p> int iMode
55、 = 1;//1:非阻塞方式;0:阻塞方式。</p><p> ioctlsocket(sockSrv,FIONBIO,(u_long FAR*) &iMode);</p><p> 超時(shí)1ms則自動(dòng)放棄,并偵聽數(shù)據(jù)是否到達(dá):</p><p> int timeout = 1; // 1 ms </p><p> set
56、sockopt(sockSrv,SOL_SOCKET,SO_RCVTIMEO,(char*)&timeout, sizeof(timeout))。 </p><p> c) 初始化時(shí)設(shè)置的參數(shù)</p><p> 畫好背景后將各個(gè)滾動(dòng)條放到最右邊,在數(shù)據(jù)未收到的情況下則不能點(diǎn)擊放大按鈕;設(shè)置好各個(gè)顯示框的縱坐標(biāo)范圍;初始化socket各個(gè)參數(shù)、setimer定時(shí)收數(shù)據(jù),采用
57、10ms間隔偵聽。因?yàn)椴捎玫恼`差數(shù)據(jù)是以12ms收發(fā)的,采用10ms間隔偵聽,滿足其要求。</p><p> 4.2.4 誤差曲線分析功能</p><p> a) 顯示誤差曲線功能</p><p> 為了將收到的數(shù)據(jù)寫入文件,先定義好4個(gè)數(shù)據(jù)所在文件的路徑:</p><p> ofstream fout1("./data
58、/data/方位角測(cè)量誤差(毫弧度).txt", ios::app);</p><p> ofstream fout2("./data/data/高低角測(cè)量誤差(毫弧度).txt", ios::app);</p><p> ofstream fout3("./data/data/方位角測(cè)量值(度).txt", ios::app);<
59、;/p><p> ofstream fout4("./data/data/高低角測(cè)量值(度).txt", ios::app);</p><p> 在定義好保存數(shù)據(jù)所在文件的路徑后,調(diào)用函數(shù)</p><p> void CHistogramDlg::OnTimer(UINT nIDEvent) ,以10ms間隔地收數(shù)據(jù),收到則保存到文件,并顯示到
60、界面上。</p><p> 數(shù)據(jù)以時(shí)間戳的形式保存在記事本中,如圖4.7所示</p><p> 圖4.7 保存在記事本中的數(shù)據(jù)圖</p><p> 顯示的誤差數(shù)據(jù)曲線如圖4.8所示</p><p> 圖4.8 誤差數(shù)據(jù)曲線圖</p><p><b> b) 滾動(dòng)條功能</b><
61、;/p><p> 首先需要判斷用戶是在拖動(dòng)第幾個(gè)滾動(dòng)條,并且進(jìn)行相應(yīng)的操作。當(dāng)確認(rèn)在拖動(dòng)滾動(dòng)條之后,判斷滾動(dòng)條的位置在整個(gè)滾動(dòng)條中的百分比,然后在收到的數(shù)據(jù)中找對(duì)應(yīng)的數(shù)據(jù)(百分比對(duì)應(yīng)處)顯示到相應(yīng)界面上。</p><p><b> 調(diào)用的函數(shù):</b></p><p> void CHistogramDlg::OnHScroll(UINT n
62、SBCode, UINT nPos, CScrollBar* pScrollBar)。</p><p> 拖動(dòng)滾動(dòng)條的效果圖如圖4.9所示 </p><p> 圖4.9 滾動(dòng)條拖動(dòng)圖</p><p><b> c) 放大功能</b></p><p> 當(dāng)判斷滾動(dòng)條的位置在整個(gè)滾動(dòng)條中的百分比,然后在收到的數(shù)據(jù)
63、中找對(duì)應(yīng)的數(shù)據(jù)(百分比對(duì)應(yīng)處)顯示到相應(yīng)界面上,同時(shí)將橫坐標(biāo)和縱坐標(biāo)拉伸即可實(shí)現(xiàn)放大的功能。放大效果如圖4.10和4.11所示</p><p> 圖4.10 放大前的圖</p><p> 圖4.11 放大后的圖</p><p> 放大后,本設(shè)計(jì)要求計(jì)算放大的數(shù)據(jù)有均方值和最值。因此我們重新設(shè)置縱坐標(biāo)來畫圖,使得圖看起來占的百分比與小圖相同,并畫兩條豎線(一
64、紅一藍(lán)),設(shè)置這兩條可以拖動(dòng),拖動(dòng)的過程中,計(jì)算兩線所在處的數(shù)據(jù)值、兩線之間的最大最小值、平均值、均方差,以及將保存起來的文件中的數(shù)據(jù)讀取進(jìn)內(nèi)存,計(jì)算所有數(shù)據(jù)中的最大最小值、平均值、均方差。</p><p><b> 均方差公式:</b></p><p><b> (4.1)</b></p><p> 其中a代表誤差
65、的均方差,代表各個(gè)誤差數(shù)據(jù),代表誤差數(shù)據(jù)的平均值。</p><p> d) 保存圖片功能</p><p> 保存圖片的按鈕設(shè)置如圖4.12所示</p><p> 圖4.12 保存圖片按鈕設(shè)置圖</p><p><b> 調(diào)用函數(shù):</b></p><p> BOOL zoom1::S
66、aveBitmapToFile(CBitmap *bitmap,LPSTR lpFileName)</p><p> 將內(nèi)存中的位圖直接保存到文件即可。圖片以bmp的格式保存,如圖4.13所示</p><p> 圖4.13 保存的圖片</p><p><b> e) 退出功能</b></p><p>
67、 調(diào)用函數(shù)void CHistogramDlg::OnOK() 其所要完成的操作有</p><p><b> 關(guān)閉文件對(duì)象按鈕</b></p><p> fout1.close();</p><p> fout2.close();</p><p> fout3.close();</p><p&
68、gt; fout4.close();</p><p><b> 關(guān)閉套接字</b></p><p> closesocket(sockSrv);</p><p> WSACleanup();</p><p><b> 4.3 本章小結(jié)</b></p><p>
69、本章按照各個(gè)功能模塊的順序,結(jié)合實(shí)現(xiàn)代碼與運(yùn)行結(jié)果介紹了所完成的系統(tǒng)。從實(shí)現(xiàn)的功能看,已達(dá)到了命題以及設(shè)計(jì)要求。本系統(tǒng)作為簡(jiǎn)單的航路測(cè)試誤差分析軟件,很多誤差分析功能還需根據(jù)實(shí)際情況加以修正和完善。</p><p><b> 結(jié) 論</b></p><p> 航路測(cè)試誤差分析軟件是運(yùn)用網(wǎng)絡(luò)編程技術(shù)、基于MFC編程環(huán)境所開發(fā)的軟件。本軟件可以通過網(wǎng)絡(luò)實(shí)時(shí)更新誤差數(shù)
70、據(jù),并將數(shù)據(jù)實(shí)時(shí)的以曲線的形式顯示出來。</p><p> 本課題從設(shè)計(jì)原理、設(shè)計(jì)方案、編程實(shí)現(xiàn)等方面介紹了所設(shè)計(jì)的航路測(cè)試誤差分析軟件。本系統(tǒng)的主要功能特點(diǎn)如下:</p><p> a) 可以通過網(wǎng)絡(luò)實(shí)時(shí)的更新誤差數(shù)據(jù),顯示誤差數(shù)據(jù)曲線;</p><p> b) 可以計(jì)算全部數(shù)據(jù)的均方值,局部數(shù)據(jù)的均方值,并能尋找出最大誤差和最小誤差;</p>
71、;<p> c) 可以放大,拖動(dòng)誤差曲線;</p><p> d) 可以保存接收到的數(shù)據(jù);</p><p> e) 可以用圖片的形式保存誤差曲線。</p><p> 本課題在實(shí)現(xiàn)航路測(cè)試誤差分析軟件中用MFC可視化編程完成。軟件采用了MFC中的繪圖技術(shù),考慮到重繪的點(diǎn)數(shù)較多,為了避免閃爍,采用了雙緩沖技術(shù)。在考慮到實(shí)時(shí)性的要求下,航程測(cè)試
72、誤差分析軟件在傳輸誤差數(shù)據(jù)時(shí)采用基于UDP的網(wǎng)絡(luò)傳輸方法,以提高傳輸?shù)膶?shí)時(shí)性,盡可能的降低延時(shí)。編程語言方面選擇了C++語言,C++語言展現(xiàn)了它簡(jiǎn)潔、高效、快速的優(yōu)勢(shì)。</p><p> 本課題中設(shè)計(jì)的軟件也存在一些值得改進(jìn)和修正的地方。本課題所設(shè)計(jì)的航路測(cè)試誤差分析軟件在誤差數(shù)據(jù)分析方面的功能還不夠完善,軟件的界面也沒有優(yōu)化。網(wǎng)絡(luò)傳輸功能也需要進(jìn)一步完善,更好的滿足實(shí)時(shí)性的要求。不管從技術(shù)性還是專業(yè)性角度看,
73、本課題完成的工作只是初步設(shè)計(jì)和實(shí)現(xiàn)了航路測(cè)試誤差分析軟件的開發(fā),今后還有大量的工作需要進(jìn)一步地完善。</p><p><b> 致 謝</b></p><p> 本科畢業(yè)設(shè)計(jì),一路走來,項(xiàng)文波老師給了我莫大的幫助,在此,我衷心的感謝他。在畢業(yè)設(shè)計(jì)的過程中,項(xiàng)老師還給我提供了不少修改方案和意見,幫我解決了許多問題,比如如何完善軟件的功能等等。項(xiàng)老師為人風(fēng)趣幽默但對(duì)
74、待學(xué)術(shù)一絲不茍,不管于己還是于人要求都很高,來不得半點(diǎn)僥幸和虛假,所以在本科畢業(yè)設(shè)計(jì)時(shí),鍛煉了我的獨(dú)立思考的能力,這必將是我人生中的一份寶貴的財(cái)富。</p><p> 知識(shí)的積累不是一蹴而就的,能獨(dú)自完成畢業(yè)設(shè)計(jì)也是靠這四年知識(shí)累積的結(jié)果,所以我還要感謝在南理工求學(xué)四年期間所有的任課老師對(duì)我的幫助和指導(dǎo),老師們的教誨使我受益匪淺。</p><p> 當(dāng)我思路陷入困境時(shí),感謝高禮強(qiáng)、華靈
75、佳同學(xué)的寶貴建議與幫助,讓我的設(shè)計(jì)得以繼續(xù)與完善。</p><p> 謹(jǐn)此,向曾經(jīng)幫助過我的領(lǐng)導(dǎo)、老師和同學(xué)表示衷心的感謝和崇高的敬意。</p><p><b> 參 考 文 獻(xiàn)</b></p><p> [1] 翟世磊,李明波,李福,劉東.實(shí)時(shí)曲線的繪制方法探索[J].科技信息,2009年第36期.</p><p&g
76、t; [2] 朱玲,武玉強(qiáng),張啟宇.TeeChart實(shí)現(xiàn)工控領(lǐng)域的實(shí)時(shí)曲線和歷史曲線的方法[J].工業(yè)控制計(jì)算機(jī),2005年18卷第8期.</p><p> [3] 田鑫,張方.基于OpenGL的三維圖形應(yīng)用程序中的一種空間曲線繪制方法[J].微型電腦應(yīng)用,2009年第25卷第9期.</p><p> [4] 王福杰,潘宏俠.基于VB的二維實(shí)時(shí)曲線顯示設(shè)計(jì)[J].電腦開發(fā)與應(yīng)用,20
77、05年第11期.</p><p> [5]王玉菡.Visual C++編程實(shí)現(xiàn)動(dòng)態(tài)曲線的4種方法[J].重慶工學(xué)院學(xué)報(bào),2008年6月第22卷第6期.</p><p> [6]朱玲,高琴,武玉強(qiáng).帶背景圖動(dòng)態(tài)數(shù)據(jù)曲線的研究與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2007年第23卷9-1期.</p><p> [7] 高宏亮,王淑娟,翟國富,陳功軍.采用Visual C++
78、實(shí)現(xiàn)的函數(shù)波形顯示控件[J].電測(cè)與儀表,2006年第12期.</p><p> [8] 寇光杰,武玉強(qiáng).基于VC++線程的動(dòng)態(tài)數(shù)據(jù)曲線的繪制方法[J].計(jì)算機(jī)應(yīng)用研究,2004年第5期.</p><p> [9] 張衛(wèi)鋼,陳文斌.利用VC++實(shí)現(xiàn)接受數(shù)據(jù)到曲線的轉(zhuǎn)換及其動(dòng)態(tài)顯示[J].工業(yè)控制計(jì)算機(jī),2003年第10期.</p><p> [10] 董國亮.
79、用VC實(shí)現(xiàn)的實(shí)時(shí)曲線類的改進(jìn)[J].電腦編程技巧與維護(hù),2001年第4期.</p><p> [11] 毋小省.VC++下監(jiān)控系統(tǒng)實(shí)時(shí)曲線的描繪[J].焦作大學(xué)學(xué)報(bào),2003年4月第2期.</p><p> [12] 姚曄,胡益雄.用VC++實(shí)現(xiàn)帶背景圖的實(shí)時(shí)動(dòng)態(tài)曲線[J].電腦編程技巧與維護(hù),2001年第9期.</p><p> [13] 謝希仁.計(jì)算機(jī)網(wǎng)絡(luò)
80、(第三版)[M].大連:大連理工大學(xué)出版社,2006.</p><p> [14] 侯俊杰.深入淺出MFC[M].武漢:華中科技大學(xué)出版社,2001.</p><p> [15] 劉丹.Socket網(wǎng)絡(luò)編程及其實(shí)現(xiàn)[J].科技信息,2010,(12).</p><p> [16] 鄒月,陳建兵.Socket的網(wǎng)絡(luò)編程研究與實(shí)現(xiàn)[J].電腦編程技巧與維護(hù),200
81、9年第8期.</p><p> [17] 李紅.基于C/S模式的SOCKET網(wǎng)絡(luò)編程分析[J].現(xiàn)代商貿(mào)工業(yè),2009年第9期.</p><p> [18] 任泰明.TCP/IP協(xié)議與網(wǎng)絡(luò)編程[M].第1版.西安:西安電子科技大學(xué)出版社.2004.</p><p> [19] 鄒月,陳建兵.Socket的網(wǎng)絡(luò)編程研究與實(shí)現(xiàn)[J].電腦編程技巧與維護(hù),2008-
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 軟件開發(fā)畢業(yè)論文-畢業(yè)論文
- 軟件開發(fā)類畢業(yè)論文
- 汽車銷售軟件開發(fā)【畢業(yè)論文】
- 畢業(yè)論文---qtp測(cè)試工具在軟件開發(fā)中的應(yīng)用
- 畢業(yè)論文-3d游戲軟件開發(fā)的在線測(cè)試
- 攝影課程cai軟件開發(fā)畢業(yè)論文
- 基于android平臺(tái)的天氣軟件開發(fā)畢業(yè)論文
- 基于android平臺(tái)的天氣軟件開發(fā)畢業(yè)論文
- 基于jsp軟件開發(fā)會(huì)員管理系統(tǒng)畢業(yè)論文
- 軟件開發(fā)畢業(yè)設(shè)計(jì)論文
- 畢業(yè)論文-論述軟件開發(fā)生命周期與測(cè)試生命周期
- 畢業(yè)論文-開題報(bào)告-文獻(xiàn)綜述汽車銷售軟件開發(fā)
- 畢業(yè)論文淺談需求分析在軟件開發(fā)中的重要性
- 畢業(yè)論文--淺談需求分析在軟件開發(fā)中的重要性
- 軟件測(cè)試畢業(yè)論文
- 畢業(yè)論文論述軟件開發(fā)生命周期與測(cè)試生命周期
- 軟件測(cè)試畢業(yè)論文
- 軟件測(cè)試畢業(yè)論文
- 軟件測(cè)試畢業(yè)論文
- 企業(yè)在線事務(wù)處理(oltp)軟件開發(fā)-畢業(yè)論文
評(píng)論
0/150
提交評(píng)論