版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 面向地面測試的終端顯示軟件設(shè)計(jì)與開發(fā)</p><p><b> 摘要</b></p><p> 在衛(wèi)星姿態(tài)與軌道分系統(tǒng)地面綜合測試試驗(yàn)中,終端顯示軟件是保證地面測試順利進(jìn)行的必要環(huán)節(jié)。終端顯示軟件的主要任務(wù)是通過網(wǎng)絡(luò)接收中心機(jī)系統(tǒng)傳送來的數(shù)據(jù),并將其轉(zhuǎn)化為圖像、圖形、曲線、字符等方式的信息提供給使用者。該軟件具有顯示內(nèi)容豐富,畫面數(shù)量大,具備
2、三維仿真顯示能力,并且具有實(shí)時(shí)、可靠、交互性強(qiáng)、界面友好、操作簡單等特點(diǎn)。</p><p> 論文的主要工作如下:</p><p> (1)軟件功能模塊與總體結(jié)構(gòu)的設(shè)計(jì)。研究衛(wèi)星姿軌控分系統(tǒng)地面試驗(yàn)的流程及測試需求,設(shè)計(jì)測試軟件系統(tǒng)的功能模塊與總體結(jié)構(gòu)。</p><p> (2)軟件通用性、靈活性與可擴(kuò)展性研究。將終端顯示軟件劃分為多個(gè)功能相對獨(dú)立的模塊,并分
3、析各個(gè)模塊的實(shí)際任務(wù)與擴(kuò)展性需求。</p><p> ?。?)標(biāo)準(zhǔn)數(shù)據(jù)包的接收與解碼研究。針對標(biāo)準(zhǔn)數(shù)據(jù)包格式設(shè)計(jì)其接收與解碼流程,以及解碼配置文件的具體定義。</p><p> ?。?)歷史數(shù)據(jù)回放研究。設(shè)計(jì)數(shù)據(jù)回放的控制機(jī)制以及具體的控制指令、配置文件集和數(shù)據(jù)回放流程。</p><p> ?。?)數(shù)據(jù)顯示研究。根據(jù)數(shù)據(jù)顯示的具體需求,研究不同顯示形式的具體實(shí)現(xiàn)方法
4、。</p><p> 關(guān)鍵詞:地面測試,終端顯示,數(shù)據(jù)可視化,數(shù)據(jù)回放,模塊化</p><p><b> 目錄</b></p><p><b> 第一章 緒 論</b></p><p> 1.1研究背景與課題的來源</p><p> 1.2研究意義及內(nèi)容</
5、p><p><b> 1.2.1研究意義</b></p><p><b> 1.2.2研究內(nèi)容</b></p><p> 1.3國內(nèi)外關(guān)于數(shù)據(jù)可視化的研究現(xiàn)狀</p><p> 第二章 終端顯示軟件總體設(shè)計(jì)</p><p> 2.1 終端顯示軟件需求分析</p&
6、gt;<p> 2.1.1 軟件設(shè)計(jì)需求</p><p> 2.1.2 軟件設(shè)計(jì)目標(biāo)</p><p> 2.2軟件總體設(shè)計(jì) </p><p><b> 2.2.1設(shè)計(jì)原則</b></p><p> 2.2.2軟件功能模塊劃分</p><p> 2.3涉及的關(guān)鍵技術(shù)<
7、/p><p> 第三章 關(guān)鍵技術(shù)研究</p><p> 3.1終端顯示軟件功能模塊與總體結(jié)構(gòu)的設(shè)計(jì)</p><p> 3.2配置文件集</p><p> 3.2.1.界面信息配置文件集</p><p> 3.2.2.數(shù)據(jù)處理配置文件集</p><p> 3.3標(biāo)準(zhǔn)數(shù)據(jù)包的接收與解
8、碼</p><p> 3.3.1解碼協(xié)議配置文件集</p><p> 3.3.2接收與解碼流程</p><p> 3.4歷史數(shù)據(jù)回放</p><p> 3.4.1.數(shù)據(jù)回放需求</p><p> 3.4.2.數(shù)據(jù)回放結(jié)構(gòu)與控制流程</p><p> 3.4.3.
9、控制指令設(shè)計(jì)</p><p> 3.4.4.控制指令配置文件集</p><p> 3.5數(shù)據(jù)可視化</p><p> 3.5.1數(shù)據(jù)顯示的實(shí)現(xiàn)流程</p><p> 3.5.2數(shù)據(jù)顯示類的設(shè)計(jì)</p><p> 第四章 原型軟件的開發(fā)與實(shí)現(xiàn)</p><p> 4.1
10、開發(fā)工具及開發(fā)環(huán)境</p><p> 4.2終端顯示軟件功能的實(shí)現(xiàn)</p><p> 第五章 總結(jié)與展望</p><p><b> 5.1全文總結(jié)</b></p><p><b> 5.2工作展望</b></p><p><b> 畢業(yè)設(shè)計(jì)總結(jié)與
11、致謝</b></p><p><b> 參考文獻(xiàn)</b></p><p><b> 圖表清單</b></p><p> 圖2.1 軟件模塊實(shí)現(xiàn)層次</p><p> 圖 3.1 TCP接收方式</p><p> 圖 3.2 UDP接收方式</p&g
12、t;<p> 圖 3.3數(shù)據(jù)保存界面</p><p><b> 圖 3.4變量選取</b></p><p> 圖 3.5數(shù)據(jù)的實(shí)時(shí)曲線顯示</p><p> 圖 3.6曲線顯示中的鼠標(biāo)鍵功能</p><p> 圖 3.7曲線參數(shù)設(shè)置</p><p> 圖 3.8修改曲線的
13、各種屬性</p><p> 圖 3.9載入已保存的曲線屬性配置文件</p><p> 圖 3.10保存曲線為圖片</p><p> 圖3.11數(shù)據(jù)實(shí)時(shí)數(shù)值顯示</p><p> 圖3.12選擇曲線顯示的離線數(shù)據(jù)</p><p> 圖3.13選擇數(shù)值顯示的離線數(shù)據(jù)</p><p> 圖
14、 3.14數(shù)據(jù)實(shí)時(shí)二元曲線顯示</p><p> 圖 3.15實(shí)時(shí)窗口保存</p><p> 圖 3.16載入實(shí)時(shí)窗口</p><p> 圖3.17系統(tǒng)層次劃分</p><p> 圖3.18 INI文件格式</p><p> 圖3.19 數(shù)據(jù)處理配置文件結(jié)構(gòu)</p><p> 圖3.
15、20 Excel文件集與內(nèi)存數(shù)據(jù)處理協(xié)議的對應(yīng)轉(zhuǎn)化關(guān)系</p><p> 圖3.21 標(biāo)準(zhǔn)數(shù)據(jù)包的接收與解碼流程</p><p> 圖3.22 數(shù)據(jù)回放流程</p><p> 圖3.23數(shù)據(jù)顯示實(shí)現(xiàn)流程</p><p> 圖3.24數(shù)據(jù)顯示類的繼承關(guān)系</p><p> 圖4. 1 終端顯示軟件配置信息讀取界
16、面</p><p> 圖4. 2 終端顯示軟件主界面</p><p> 圖4. 3 TCP網(wǎng)絡(luò)連接設(shè)置界面</p><p> 圖4. 4 UDP網(wǎng)絡(luò)連接設(shè)置界面</p><p> 圖4. 5 時(shí)間曲線顯示界面</p><p> 圖4. 6 曲線顯示參數(shù)設(shè)置界面</p><p> 圖4
17、. 7 列表顯示界面</p><p> 圖4. 8 數(shù)據(jù)回放控制面板界面</p><p> 表 2.1 軟件實(shí)現(xiàn)關(guān)鍵技術(shù)</p><p><b> 表3.1 數(shù)值類型</b></p><p> 表3.2 查詢指令定義</p><p> 表3.3 查詢指令類型</p><
18、;p><b> 表3.4 時(shí)間類型</b></p><p> 表3.5 操作指令定義</p><p> 表3.6 操作指令類型</p><p> 表3.7 控制指令配置文件“Command.xls”的格式定義</p><p> 表4. 1 系統(tǒng)開發(fā)環(huán)境與開發(fā)工具</p><p>&
19、lt;b> 緒論</b></p><p> 1.1 研究背景與課題來源</p><p> 自1957年10月4日,世界上第一顆人造衛(wèi)星進(jìn)入太空以來,隨著空間技術(shù)的不斷發(fā)展,航天技術(shù)已經(jīng)廣泛應(yīng)用于國民經(jīng)濟(jì)、軍事、科學(xué)研究和社會(huì)生活的眾多部門,產(chǎn)生了重大而深遠(yuǎn)的影響。截至2003年底,世界各國和組織共成功發(fā)射了5635個(gè)航天器,其中90%是各類人造衛(wèi)星,人造衛(wèi)星是人類目
20、前探索。開發(fā)和利用太空的最重要工具,研制和發(fā)射人造衛(wèi)星是世界各國航天活動(dòng)的主要內(nèi)容。 </p><p> 衛(wèi)星是由多個(gè)分系統(tǒng)組成的整體,由于對發(fā)生故障的衛(wèi)星進(jìn)行在軌修復(fù)十分困難,衛(wèi)星在太空中發(fā)生任何故障都可能造成災(zāi)難性的影響,因此為了及時(shí)發(fā)現(xiàn)并消除衛(wèi)星上存在的各種故障和隱患,在衛(wèi)星發(fā)射前通過地面測試試驗(yàn)對衛(wèi)星的各項(xiàng)性能指標(biāo)進(jìn)行檢驗(yàn)十分重要。隨著計(jì)算機(jī)和標(biāo)準(zhǔn)接口在衛(wèi)星測試中的廣泛使用,測試軟件就成
21、了測試系統(tǒng)必不可少的重要組成部分。衛(wèi)星測試通常分為單元級測試、分系統(tǒng)測試和整星測試,在實(shí)際的衛(wèi)星測試工作中往往需要根據(jù)具體不同的測試階段、測試任務(wù)和目的開發(fā)相應(yīng)的測試軟件,這樣做就會(huì)形成多種多樣的功能類似又不能通用的測試軟件,因此如能設(shè)計(jì)一種通用的或者容易擴(kuò)展的測試軟件將極大的降低開發(fā)成本,減少對測試操作人員培訓(xùn)的工作量,并且在測試工作的不同階段都能得到一致性良好的測試數(shù)據(jù)。其中由于衛(wèi)星姿態(tài)與軌道分系統(tǒng)地面綜合測試時(shí),涉及數(shù)十個(gè)單機(jī)以及
22、數(shù)百個(gè)測試信號,測試操作人員通常根據(jù)這些測試參數(shù)的試驗(yàn)數(shù)值對控制系統(tǒng)進(jìn)行實(shí)時(shí)監(jiān)控與狀態(tài)判斷,數(shù)據(jù)的采集、解析的正確與否以及數(shù)據(jù)的可視化程度的好壞都直接影響到測試人員的判斷。因此有必要開發(fā)一套數(shù)據(jù)可視化程度好,滿足需求的終端顯示軟件。</p><p> 本文將以某型號衛(wèi)星姿態(tài)與軌道控制分系統(tǒng)的地面試驗(yàn)為背景,在與某航天研究所的合作項(xiàng)目的支持下,進(jìn)行面向地面測試的終端顯示軟件設(shè)計(jì)與開發(fā)的研究工作。</p>
23、;<p> 1.2 研究意義及內(nèi)容</p><p> 1.2.1 研究意義</p><p> 本課題針對某型號衛(wèi)星姿軌控分系統(tǒng)研制過程中的實(shí)際需求,設(shè)計(jì)并實(shí)現(xiàn)一套衛(wèi)星姿軌控分系統(tǒng)地面綜合測試的軟件,并應(yīng)用于實(shí)際的衛(wèi)星研制過程中,為衛(wèi)星的實(shí)時(shí)仿真、半物理仿真以及整星試驗(yàn)提供技術(shù)支持,保障衛(wèi)星設(shè)計(jì)項(xiàng)目的順利進(jìn)行。</p><p> 因此,開展衛(wèi)星
24、姿軌控分系統(tǒng)地面終端顯示測試軟件的研究與設(shè)計(jì)對于提高衛(wèi)星測試效率,縮短研制周期,保證衛(wèi)星可靠性與使用壽命具有非常重要的意義,在衛(wèi)星的研制過程中具有重要的實(shí)用價(jià)值。終端顯示測試軟件最重要的作用就是實(shí)時(shí)監(jiān)測衛(wèi)星各系統(tǒng)運(yùn)行正確與否.</p><p> 1.2.2 研究內(nèi)容</p><p> 本文以某型號衛(wèi)星姿態(tài)與軌道分系統(tǒng)地面試驗(yàn)為背景,在調(diào)研其實(shí)際的具體試驗(yàn)需求的基礎(chǔ)上,設(shè)計(jì)終端顯示測試軟
25、件的各個(gè)功能模塊與總體結(jié)構(gòu),研究軟件系統(tǒng)實(shí)現(xiàn)需要解決的多項(xiàng)關(guān)鍵技術(shù),開發(fā)實(shí)現(xiàn)了衛(wèi)星姿態(tài)與軌道分系統(tǒng)地面試驗(yàn)測試軟件并將其應(yīng)用于具體的衛(wèi)星測試任務(wù)中。本文研究的主要內(nèi)容有:</p><p> ?。?)軟件功能模塊與總體結(jié)構(gòu)的設(shè)計(jì)。研究衛(wèi)星姿軌控分系統(tǒng)地面試驗(yàn)的流程及測試需求,設(shè)計(jì)測試軟件系統(tǒng)的功能模塊與總體結(jié)構(gòu)。</p><p> (2)軟件通用性、靈活性與可擴(kuò)展性研究。將終端顯示軟件劃分
26、為多個(gè)功能相對獨(dú)立的模塊,并分析各個(gè)模塊的實(shí)際任務(wù)與擴(kuò)展性需求,將每個(gè)模塊統(tǒng)一劃分為配置文件集和通用模塊兩個(gè)層次,分別設(shè)計(jì)各個(gè)模塊配置文件集中配置文件的格式以及對配置信息進(jìn)行存儲(chǔ)與讀取的具體方式。</p><p> (3)標(biāo)準(zhǔn)數(shù)據(jù)包的接收與解碼研究。針對標(biāo)準(zhǔn)數(shù)據(jù)包格式設(shè)計(jì)其接收與解碼流程,以及解碼配置文件的具體定義。</p><p> (4)歷史數(shù)據(jù)回放研究。設(shè)計(jì)數(shù)據(jù)回放的控制機(jī)制以及
27、具體的控制指令、配置文件集和數(shù)據(jù)回放流程。</p><p> ?。?)數(shù)據(jù)顯示研究。根據(jù)數(shù)據(jù)顯示的具體需求,研究不同顯示形式的具體實(shí)現(xiàn)方法。</p><p> 1.3 國內(nèi)外關(guān)于數(shù)據(jù)可視化的研究現(xiàn)狀</p><p> 衛(wèi)星姿態(tài)與軌道分系統(tǒng)地面試驗(yàn)時(shí),涉及數(shù)十個(gè)單機(jī)以及數(shù)百個(gè)測試信號,測試操作人員通常根據(jù)這些測試參數(shù)的試驗(yàn)數(shù)值對控制系統(tǒng)進(jìn)行實(shí)時(shí)監(jiān)控與狀態(tài)判斷,目前
28、測試數(shù)據(jù)的顯示方式主要有:</p><p><b> (1)數(shù)值數(shù)據(jù)</b></p><p> 將測試參數(shù)以列表的形式進(jìn)行表現(xiàn),直接顯示測試參數(shù)的數(shù)值,這是測試數(shù)據(jù)最簡單最直接的表現(xiàn)形式,特別適用于需要關(guān)注參數(shù)數(shù)值大小的場合,系統(tǒng)測試人員通常用參數(shù)列表對有相關(guān)性的幾個(gè)參數(shù)進(jìn)行數(shù)值對比。其缺點(diǎn)是不夠直觀,當(dāng)列表中的參數(shù)眾多時(shí)系統(tǒng)測試人員很難及時(shí)發(fā)現(xiàn)異常。</p
29、><p><b> ?。?)二進(jìn)制源碼</b></p><p> 以二進(jìn)制代碼的形式顯示數(shù)據(jù)包中的測試參數(shù),該方法通常被測試人員用于對測試中異常問題進(jìn)行進(jìn)一步的定位與詳細(xì)分析。</p><p><b> ?。?)曲線</b></p><p> 將測試參數(shù)的數(shù)值以曲線的形式進(jìn)行表現(xiàn),適合表現(xiàn)數(shù)值隨時(shí)間
30、以固定規(guī)律變化的信號參數(shù)或者具有相關(guān)性的幾個(gè)參數(shù),這種情況下測試人員能夠直觀的看到參數(shù)數(shù)值的實(shí)時(shí)波動(dòng)與基本變化趨勢。但由于曲線很難定量給出參數(shù)間的相互關(guān)系,通常將曲線作為數(shù)值數(shù)據(jù)顯示方式的有益補(bǔ)充。</p><p><b> ?。?)文字</b></p><p> 將測試參數(shù)的數(shù)值解釋為具體的文字含義,該方式更適合表現(xiàn)具有某幾個(gè)確定含義的測試參數(shù),例如數(shù)值為1時(shí)表示
31、太陽帆板展開,數(shù)值為2時(shí)表示捕獲地球,數(shù)值為3時(shí)表示異常模式等。直接顯示文字能夠讓測試操作人員快速直觀的理解測試參數(shù)目前的狀態(tài),從而減輕工作負(fù)擔(dān),提高測試效率。</p><p><b> ?。?)統(tǒng)計(jì)圖形</b></p><p> 將測試數(shù)據(jù)以柱狀圖、餅圖、散點(diǎn)圖等統(tǒng)計(jì)圖形進(jìn)行表現(xiàn),該方式適合測試操作人員對歷史測試數(shù)據(jù)進(jìn)行離線的統(tǒng)計(jì)分析。</p>&l
32、t;p> ?。?)圖像與三維動(dòng)畫模擬</p><p> 借助各種高質(zhì)量的圖像顯示和直觀、方便的可視化設(shè)計(jì)為測試人員提供更加完善、簡潔、人性化的數(shù)據(jù)表現(xiàn)形式。</p><p> 終端顯示軟件總體設(shè)計(jì)</p><p> 2.1 終端顯示軟件需求分析</p><p> 2.1.1 軟件設(shè)計(jì)需求</p><p>
33、; 在本課題的研究中,衛(wèi)星姿態(tài)與軌道分系統(tǒng)地面試驗(yàn)終端顯示軟件應(yīng)用于分系統(tǒng)研制的終端顯示,與分系統(tǒng)的研制同步進(jìn)行設(shè)計(jì)開發(fā),具有相互依賴的特性。在系統(tǒng)研制的過程中采用終端顯示測試軟件對其進(jìn)行實(shí)時(shí)監(jiān)視,直觀發(fā)現(xiàn)系統(tǒng)缺陷,然后改善系統(tǒng)設(shè)計(jì),因此終端顯示軟件必需對各種測試參數(shù)進(jìn)行實(shí)時(shí)的監(jiān)測與分析,同時(shí)可以對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行回放顯示。這就對終端顯示軟件提出了更高的新的要求。由于在對衛(wèi)星姿態(tài)與軌道分系統(tǒng)進(jìn)行測試時(shí),測試內(nèi)容較為復(fù)雜,對終端顯示軟
34、件的要求是比較高的,其特點(diǎn)為:</p><p> ?。?)被測參數(shù)多,測試速度要求高;</p><p> ?。?)要求終端顯示軟件操作簡便,操作界面和結(jié)果顯示直觀醒目;</p><p> (3)終端顯示軟件具有基于TCP/IP和UDP協(xié)議的數(shù)據(jù)通信功能;</p><p> (4)終端顯示軟件具有測試數(shù)據(jù)的查詢和解析功能</p>
35、<p> ?。?)終端顯示軟件能夠以多種方式直觀的顯示測試數(shù)據(jù);</p><p> ?。?)終端顯示軟件具有各種參數(shù)的配置功能。</p><p> ?。?)終端顯示軟件具有一定的通用性,能夠同時(shí)應(yīng)用于仿真實(shí)驗(yàn)室的測試和整星狀態(tài)下的測試。</p><p> 2.1.2 軟件設(shè)計(jì)目標(biāo)</p><p> 針對衛(wèi)星姿態(tài)與軌道分系統(tǒng)地
36、面試驗(yàn)的實(shí)際需求,本文建立分系統(tǒng)地面試驗(yàn)的終端顯示軟件,并將其應(yīng)用于實(shí)際的衛(wèi)星姿態(tài)與軌道分系統(tǒng)的地面測試試驗(yàn)中。</p><p> 該終端顯示軟件的設(shè)計(jì)思想如下:</p><p> 較高的實(shí)用性。依據(jù)衛(wèi)星姿態(tài)與軌道分系統(tǒng)地面試驗(yàn)的實(shí)際應(yīng)用需求進(jìn)行設(shè)計(jì),進(jìn)行深入詳細(xì)的需求調(diào)研,在保證功能實(shí)現(xiàn)的基礎(chǔ)上,增強(qiáng)用戶體驗(yàn),提高軟件的可用性;</p><p> 結(jié)構(gòu)的合理
37、性與通用性。針對衛(wèi)星姿態(tài)與軌道分系統(tǒng)邊研制邊測試驗(yàn)證的特點(diǎn),采用模塊化的設(shè)計(jì)思想,將終端顯示軟件劃分為多個(gè)功能相對獨(dú)立的模塊,各模塊間定義規(guī)范的接口,簡化了軟件維護(hù)難度的同時(shí)非常利于軟件的升級與功能的改變與擴(kuò)展;</p><p> 靈活適應(yīng)性與可擴(kuò)展性。采用配置文件的方式管理測試數(shù)據(jù)的解碼協(xié)議,實(shí)現(xiàn)只需要適當(dāng)?shù)男薷呐渲梦募湍苁菇K端顯示軟件適用于經(jīng)過不斷修改與完善后的系統(tǒng)測試中;</p><
38、p> 高可靠性。終端顯示軟件必能能夠在測試系統(tǒng)實(shí)時(shí)產(chǎn)生大量測試數(shù)據(jù)的情況下正常工作。</p><p> 測試數(shù)據(jù)可視化多樣性。根據(jù)不同類型數(shù)據(jù)的可視化需求,終端顯示軟件提供多種數(shù)據(jù)顯示方式,例如十進(jìn)制數(shù)值、文字描述、二進(jìn)制源碼、十六進(jìn)制源碼、時(shí)間曲線和相平面曲線等。</p><p> 為了滿足分系統(tǒng)研制與測試過程中實(shí)際需求,地面測試終端顯示軟件的設(shè)計(jì)與實(shí)現(xiàn)主要解決以下幾個(gè)具體問
39、題:</p><p> 將終端顯示軟件劃分為合理的功能模塊;</p><p> 研究測試數(shù)據(jù)包的解碼問題,以配置文件的形式對解碼協(xié)議進(jìn)行靈活的管理,使得分系統(tǒng)研制過程中在不影響終端顯示軟件的情況下能夠?qū)獯a協(xié)議進(jìn)行靈活的修改;</p><p> 研究測試過程中數(shù)據(jù)的流向以及數(shù)據(jù)的接收、解碼、存儲(chǔ)與顯示,可以實(shí)時(shí)監(jiān)測測試參數(shù),也可以從數(shù)據(jù)庫獲取歷史數(shù)據(jù)進(jìn)行回放。
40、</p><p> 2.2 軟件總體設(shè)計(jì) </p><p><b> 2.2.1設(shè)計(jì)原則</b></p><p> ?。?)模塊化設(shè)計(jì)模式</p><p> 為了提高終端顯示軟件的通用性與可擴(kuò)展性,本文將終端顯示軟件按照功能劃分為幾個(gè)模塊,各個(gè)模塊之間相互連接。當(dāng)現(xiàn)有的軟件功能不能滿足改變后的測試需求時(shí),可以開發(fā)具
41、有新功能的模塊替換原有的軟件模塊或者將新開發(fā)的模塊串接在軟件模塊中。</p><p> 2)基于配置文件的靈活性設(shè)計(jì)</p><p> 為了使終端顯示軟件具有一定的可擴(kuò)展性,本文將衛(wèi)星姿態(tài)與軌道分系統(tǒng)地面試驗(yàn)終端顯示軟件中的模塊的實(shí)現(xiàn)層次劃分為如圖2.1所示的配置文件集與通用模塊兩個(gè)層次,每個(gè)模塊中需要靈活設(shè)置的部分保存在配置文件中,專用的程序代碼采用動(dòng)態(tài)鏈接庫的形式實(shí)現(xiàn)并將其相關(guān)信息
42、存儲(chǔ)在配置文件中,其他部分用通用模塊實(shí)現(xiàn),通用模塊啟動(dòng)時(shí)讀取相關(guān)的配置信息,程序運(yùn)行時(shí)通用模塊根據(jù)讀取的配置信息動(dòng)態(tài)調(diào)用相應(yīng)的動(dòng)態(tài)鏈接庫函數(shù),當(dāng)配置信息改變時(shí)通用模塊將其保存至配置文件中。測試人員可以根據(jù)需要修改配置文件中的配置信息,從而使得測試軟件更加的靈活。</p><p> 圖2.2 軟件模塊實(shí)現(xiàn)層次</p><p> 2.2.2 軟件功能模塊劃分</p><
43、;p> 衛(wèi)星姿態(tài)與軌道分系統(tǒng)地面試驗(yàn)終端顯示軟件的主要目的是對各種測試參數(shù)進(jìn)行實(shí)時(shí)的監(jiān)測與分析,同時(shí)可以對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行回放顯示。終端顯示軟件接收數(shù)據(jù)庫服務(wù)器軟件發(fā)送的數(shù)據(jù),然后根據(jù)內(nèi)存解碼協(xié)議配置文件的內(nèi)容對數(shù)據(jù)幀中的各個(gè)物理量進(jìn)行解碼得到工程數(shù)據(jù),并將工程數(shù)據(jù)以數(shù)值列表、時(shí)間曲線和相平面曲線等不同的形式進(jìn)行顯示。終端顯示軟件還可以向數(shù)據(jù)庫管理軟件發(fā)送多種回放指令,對歷史數(shù)據(jù)的回放進(jìn)行控制。因此本文將終端顯示軟件按照實(shí)現(xiàn)功
44、能的不同劃分為九個(gè)子模塊,包括數(shù)據(jù)接收模塊、數(shù)據(jù)解碼模塊、數(shù)據(jù)儲(chǔ)存模塊、數(shù)據(jù)實(shí)時(shí)二元曲線顯示模塊、數(shù)據(jù)實(shí)時(shí)數(shù)值顯示模塊、數(shù)據(jù)離線曲線顯示模塊、數(shù)據(jù)的離線數(shù)值顯示模塊、實(shí)時(shí)窗口保存與載入模塊和數(shù)據(jù)回放控制模塊。</p><p> 這樣劃分既符合模塊化的軟件開發(fā)方法,便于編程,又有利于軟件后期的維護(hù)與功能擴(kuò)展,滿足分系統(tǒng)邊設(shè)計(jì)邊測試邊完善的特定需求。</p><p><b> 涉
45、及的關(guān)鍵技術(shù)</b></p><p> 根據(jù)2.1和2.2節(jié)中的軟件需求和功能描述,實(shí)現(xiàn)本軟件需要解決一系列的關(guān)鍵技術(shù)問題。表2.1中列出了軟件實(shí)現(xiàn)需要解決的關(guān)鍵技術(shù)。</p><p> 表 2.1 軟件實(shí)現(xiàn)關(guān)鍵技術(shù)</p><p><b> 關(guān)鍵技術(shù)研究</b></p><p> 3.1 終端顯示
46、軟件功能模塊與總體結(jié)構(gòu)的設(shè)計(jì)</p><p> 為了清楚展現(xiàn)軟件的功能,現(xiàn)詳細(xì)介紹軟件的個(gè)功能模塊。</p><p> 3.1.1 數(shù)據(jù)接收模塊</p><p> 可以分別設(shè)置以TCP或UDP的連接方式接收動(dòng)力學(xué)數(shù)據(jù)、遙測數(shù)據(jù)和采集數(shù)據(jù),各自的數(shù)據(jù)源可以單獨(dú)設(shè)置。模塊軟件界面說明如下:</p><p> 圖 3.17 TCP接收方式
47、 </p><p> 圖 3.18 UDP接收方式</p><p> 3.1.2 數(shù)據(jù)存儲(chǔ)模塊</p><p> 可以選擇將接收到的數(shù)據(jù)保存或者不保存到Access數(shù)據(jù)庫。模塊軟件界面說明如下:</p><p> 圖 3.19數(shù)據(jù)保存界面</p><p> 3.1.3 變量選取模塊</p
48、><p> 從配置文件中選擇功能號,選擇該功能號下的變量名,以不同的方式顯示。模塊軟件界面說明如下:</p><p> 圖 3.20變量選取</p><p> 3.1.4 數(shù)據(jù)的實(shí)時(shí)曲線顯示模塊</p><p> 實(shí)時(shí)接收到的數(shù)據(jù)以曲線的方式顯示,橫坐標(biāo)為一個(gè)時(shí)間,縱坐標(biāo)為一個(gè)變量值。曲線的顏色、線型、線寬、曲線圖的標(biāo)題等屬性可配置并保
49、存至配置文件。模塊軟件界面說明如下:</p><p> 圖 3.21數(shù)據(jù)的實(shí)時(shí)曲線顯示 </p><p> 圖 3.22曲線顯示中的鼠標(biāo)鍵功能</p><p> 圖 3.23曲線參數(shù)設(shè)置</p><p> 圖 3.24修改曲線的各種屬性</p><p> 圖 3.25載入已保存的曲線屬性配置文件</p
50、><p> 圖 3.26保存曲線為圖片</p><p> 3.1.5 數(shù)據(jù)的實(shí)時(shí)數(shù)值顯示模塊</p><p> 將實(shí)時(shí)接收到的數(shù)據(jù)以數(shù)值(十進(jìn)制、二進(jìn)制、十六進(jìn)制)或文字說明的形式顯示。模塊軟件界面說明如下: </p><p> 圖3.27數(shù)據(jù)實(shí)時(shí)數(shù)值顯示</p><p> 3.1.6 數(shù)據(jù)的離線曲線顯示模
51、塊</p><p> 保存在數(shù)據(jù)庫中的數(shù)據(jù)以曲線的形式進(jìn)行回放。曲線的顏色、線型、線寬、曲線圖的標(biāo)題等屬性可配置并保存至配置文件。曲線圖可以以.bmp的圖片格式保存下來。模塊軟件界面說明如下:</p><p> 圖3.28選擇曲線顯示的離線數(shù)據(jù)</p><p> 其他按鈕的功能界面同圖3.5~3.10。</p><p> 3.1.7
52、 數(shù)據(jù)的離線數(shù)值顯示模塊</p><p> 保存在數(shù)據(jù)庫中的數(shù)據(jù)以數(shù)值(十進(jìn)制、二進(jìn)制、十六進(jìn)制)或文字的形式顯示。模塊軟件界面說明如下:</p><p> 圖3.29選擇數(shù)值顯示的離線數(shù)據(jù)</p><p> 3.1.8 數(shù)據(jù)的實(shí)時(shí)二元曲線顯示模塊</p><p> 實(shí)時(shí)接收到的數(shù)據(jù)以曲線的方式顯示,橫坐標(biāo)為一個(gè)變量的值,縱坐標(biāo)為另
53、一個(gè)變量的值。曲線的顏色、線型、線寬、曲線圖的標(biāo)題等屬性可配置并保存至配置文件。模塊軟件界面說明如下:</p><p> 圖 3.30數(shù)據(jù)實(shí)時(shí)二元曲線顯示</p><p> 3.1.9 實(shí)時(shí)窗口保存與載入模塊</p><p> 將當(dāng)前軟件運(yùn)行時(shí)打開的所有實(shí)時(shí)曲線顯示窗口、實(shí)時(shí)數(shù)值顯示窗口以及實(shí)時(shí)二元曲線顯示窗口保存到配置文件,可以指定保存的路徑和名稱。通過載
54、入配置文件可以打開已保存的所有實(shí)時(shí)曲線顯示窗口、實(shí)時(shí)數(shù)值顯示窗口以及實(shí)時(shí)二元曲線顯示窗口。模塊軟件界面說明如下:</p><p> 圖 3.31實(shí)時(shí)窗口保存</p><p> 圖 3.32載入實(shí)時(shí)窗口</p><p> 3.2 配置文件集</p><p> 為了提高軟件的通用性、靈活性和快速擴(kuò)展性,同時(shí)減少測試軟件的前期開發(fā)時(shí)間與后
55、期維護(hù)的工作量。本文將衛(wèi)星姿態(tài)與軌道分系統(tǒng)地面試驗(yàn)測試軟件的實(shí)現(xiàn)層次劃分為如圖3.17所示的配置文件集與軟件通用模塊兩個(gè)層次,每個(gè)模塊中需要靈活設(shè)置的部分保存在配置文件中,專用的程序代碼采用動(dòng)態(tài)鏈接庫的形式實(shí)現(xiàn)并將其相關(guān)信息存儲(chǔ)在配置文件中,其他部分用通用模塊實(shí)現(xiàn),通用模塊啟動(dòng)時(shí)讀取相關(guān)的配置信息,程序運(yùn)行時(shí)通用模塊根據(jù)讀取的配置信息動(dòng)態(tài)調(diào)用相應(yīng)的動(dòng)態(tài)鏈接庫函數(shù),當(dāng)配置信息改變時(shí)通用模塊將其保存至配置文件中或者由系統(tǒng)測試操作人員手工修改
56、動(dòng)態(tài)鏈接庫函數(shù)。因此,當(dāng)測試任務(wù)變更或者當(dāng)測試軟件應(yīng)用于不同型號的衛(wèi)星測試任務(wù)時(shí),僅僅需要改變配置文件集中的配置信息或者提供相應(yīng)的動(dòng)態(tài)鏈接庫函數(shù),這樣就實(shí)現(xiàn)了對軟件進(jìn)行維護(hù)到對配置文件集進(jìn)行維護(hù)的轉(zhuǎn)變,使得終端顯示軟件更具有通用性和可擴(kuò)展性。</p><p> 圖3.17系統(tǒng)層次劃分</p><p> 常用的信息配置方式主要是通過將信息保存在數(shù)據(jù)庫、系統(tǒng)注冊表、INI初始化文件以及自定
57、義格式的文件等載體中來實(shí)現(xiàn)。由于系統(tǒng)注冊表涉及系統(tǒng)信息,操作函數(shù)復(fù)雜,一旦注冊表被破壞容易導(dǎo)致系統(tǒng)崩潰。數(shù)據(jù)庫適用于大量數(shù)據(jù)的存儲(chǔ)與管理,如果將配置信息存儲(chǔ)于數(shù)據(jù)庫中,必須開發(fā)相應(yīng)的數(shù)據(jù)庫管理軟件,無形中增加了開發(fā)成本。綜上所述,本文采用INI文件和自定義格式的Excel文件作為配置信息的載體構(gòu)建配置文件集并將其劃分為界面信息配置文件集、數(shù)據(jù)解析配置文件集兩個(gè)部分。</p><p> 3.2.1界面信息配置文件
58、集</p><p> 衛(wèi)星姿態(tài)與軌道分系統(tǒng)地面試驗(yàn)終端顯示軟件涉及多個(gè)人工交互的功能模塊,其中許多涉及操作界面的信息需要系統(tǒng)測試人員設(shè)定。不同的測試人員在操作相同的測試軟件模塊時(shí)會(huì)有不同的界面操作需求,而同一測試人員又具有相對固定的操作習(xí)慣和需求,因此本文將這些界面設(shè)置的信息全部保存在INI文件中供軟件的通用模塊自動(dòng)調(diào)用,大部分測試人員通常只需要設(shè)置一次界面操作信息,測試軟件會(huì)自動(dòng)保存并調(diào)用這些配置信息,這樣就
59、大大的減少了測試人員的重復(fù)操作負(fù)荷。</p><p> INI文件是Windows系統(tǒng)中以“.ini”為后綴名的信息初始化文件,是一種重要的系統(tǒng)配置文件。利用INI文件可以實(shí)現(xiàn)系統(tǒng)配置、應(yīng)用程序的參數(shù)保存與設(shè)置等多種功能,是一種常用的信息配置的實(shí)現(xiàn)方式。</p><p> INI文件是具有標(biāo)準(zhǔn)格式的文本文件,其格式如圖3.18所示,由節(jié)點(diǎn)名稱(Section)、關(guān)鍵字名稱(Key)和關(guān)
60、鍵字內(nèi)容(Value)三部分組成,每個(gè)關(guān)鍵字代表一個(gè)配置量,將具有相近功能的配置量放在同一個(gè)節(jié)點(diǎn)下。一個(gè)INI文件中可以有多個(gè)節(jié)點(diǎn)名稱,一個(gè)節(jié)點(diǎn)中也可以有多個(gè)關(guān)鍵字。INI文件由基本的ASCⅡ字符組成,可以用文本編輯器直接進(jìn)行編輯,不需要復(fù)雜的配置管理,適合保存格式簡單、數(shù)據(jù)量小的配置信息。本文中利用INI文件保存測試軟件的初始化參數(shù)、數(shù)據(jù)源參數(shù)、圖表屬性參數(shù)、操作界面設(shè)置參數(shù)等信息,并在需要時(shí)由軟件通用模塊導(dǎo)入這些配置信息,以減少用戶
61、的操作負(fù)荷。測試軟件啟動(dòng)時(shí),首先讀取INI文件中的初始化數(shù)據(jù)并對相關(guān)的模塊進(jìn)行初始化,測試軟件關(guān)閉或者當(dāng)配置信息更新時(shí),自動(dòng)將最新的配置信息寫入配置文件中。</p><p> 圖3. 18 INI文件格式</p><p> Windows系統(tǒng)提供了一系列API函數(shù)對INI文件進(jìn)行操作,同時(shí)C++Builder6.0提供了一個(gè)類TIniFile實(shí)現(xiàn)對INI文件的各項(xiàng)具體操作,該類對Win
62、dows API函數(shù)進(jìn)行了封裝,使用更加簡單方便。利用TIniFile類的構(gòu)造函數(shù)和其他對象操作函數(shù)可以將一個(gè)TIniFile對象與INI文件相關(guān)聯(lián)并進(jìn)行以下類型的操作:</p><p> 對關(guān)鍵字的操作,包括讀取關(guān)鍵字的內(nèi)容、寫關(guān)鍵字以及添加和刪除關(guān)鍵字。</p><p> 對節(jié)點(diǎn)的操作,包括讀取所有的節(jié)點(diǎn)名稱,讀取某節(jié)點(diǎn)中所有的關(guān)鍵字名稱,添加和刪除節(jié)點(diǎn)。</p>&
63、lt;p> 本文中將軟件設(shè)置參數(shù)以及用戶操作習(xí)慣等信息保存在INI文件中。為了提高測試軟件的穩(wěn)定性與可靠性,本測試軟件同時(shí)設(shè)計(jì)了TCP/IP和UDP兩種網(wǎng)絡(luò)連接方式,測試人員可以根據(jù)具體的測試要求選擇具體的連接方式。本文將連接方式以及連接參數(shù)保存在配置文件LinkType.ini、TCPIP.ini、UDP.ini三個(gè)INI配置文件中。測試軟件啟動(dòng)時(shí)將自動(dòng)讀取配置信息并根據(jù)其對測試軟件中的通訊組件進(jìn)行初始化。</p>
64、<p> LinkType.ini文件中記錄了測試軟件當(dāng)前使用的網(wǎng)絡(luò)連接方式并指明具體連接參數(shù)所在的INI配置文件,內(nèi)容格式如下:</p><p> [LinkType] </p><p> SelectedType=TCPIP //該關(guān)鍵字表示當(dāng)前使用的的網(wǎng)絡(luò)連接方式,有TCPIP和UDP兩個(gè)取值</p><
65、p> [IniFileName] </p><p> TCPIP=TCPIP.ini //該關(guān)鍵字的取值為存儲(chǔ)TCP/IP連接參數(shù)的INI配置文件名稱</p><p> UDP=UDP.ini //該關(guān)鍵字的取值為存儲(chǔ)UDP連接參數(shù)的INI配置文件名稱</p><p> 本文中采用C++
66、 Builder6.0中提供的TClientSocket組件和TNMUDP組件來分別實(shí)現(xiàn)數(shù)據(jù)接收端與發(fā)送端的TCP/IP和UDP方式的通信連接,并將其連接參數(shù)分別記錄在TCPIP.ini和UDP.ini文件中,程序啟動(dòng)時(shí)根據(jù)讀取的配置信息設(shè)置TClientSocket組件的屬性。TCPIP.ini內(nèi)容格式如下:</p><p><b> [TCP]</b></p><p
67、> IP= 192.168.0.212//數(shù)據(jù)發(fā)送端計(jì)算機(jī)的IP地址,對應(yīng)于TClientSocket組件對象的Host屬性</p><p> Port=32001//數(shù)據(jù)發(fā)送端計(jì)算機(jī)的端口號,對應(yīng)于TClientSocket組件對象的Port屬性</p><p> UDP.ini文件中的內(nèi)容格式如下:</p><p><b> [TCP
68、]</b></p><p> LocalPort =32710//數(shù)據(jù)接收端計(jì)算機(jī)的端口號,對應(yīng)于TNMUDP組件對象的Port屬性</p><p> RemoteHost =192.168.0.13//數(shù)據(jù)發(fā)送端計(jì)算機(jī)的IP地址,對應(yīng)于TNMUDP組件對象的Port屬性</p><p> RemotePort =110043//數(shù)據(jù)發(fā)
69、送端計(jì)算機(jī)的端口號,對應(yīng)于TNMUDP組件對象的Port屬性</p><p> 3.2.2 數(shù)據(jù)處理配置文件集</p><p> 數(shù)據(jù)處理是衛(wèi)星測試中的主要內(nèi)容,主要關(guān)系到數(shù)據(jù)的解碼以及數(shù)據(jù)的重新組織。衛(wèi)星測試是一項(xiàng)龐大的工程,涉及眾多的測試物理量,而且不同階段的衛(wèi)星測試有不同的測試任務(wù)和測試要求,當(dāng)具體測試過程中采用不同的測試設(shè)備和計(jì)算機(jī)時(shí),會(huì)設(shè)計(jì)有不同的數(shù)據(jù)解析協(xié)議。為了使衛(wèi)星姿態(tài)
70、與軌道分系統(tǒng)地面試驗(yàn)測試終端顯示軟件能夠盡量應(yīng)用于不同型號衛(wèi)星的測試,并能夠處理不同格式的測試數(shù)據(jù),本文將數(shù)據(jù)處理協(xié)議保存在配置文件中。僅僅需要對配置文件進(jìn)行更新與修改,而不需要對軟件代碼進(jìn)行更改與維護(hù),就可以將測試軟件應(yīng)用于不同的測試環(huán)境中時(shí)。</p><p> 如圖3.19所示,本文中數(shù)據(jù)處理配置文件集由協(xié)議定義文件和協(xié)議的實(shí)現(xiàn)文件組成。其中協(xié)議的定義存儲(chǔ)于Excel文件中,數(shù)據(jù)協(xié)議的由動(dòng)態(tài)鏈接庫(dll文
71、件)實(shí)現(xiàn),Excel文件中記錄了處理每種協(xié)議的動(dòng)態(tài)鏈接庫的文件名。</p><p> 圖3.19 數(shù)據(jù)處理配置文件結(jié)構(gòu)</p><p> 數(shù)據(jù)處理配置文件集主要是為數(shù)據(jù)解碼、數(shù)據(jù)接收等軟件子模塊提供數(shù)據(jù)處理配置信息。由于一旦完成對配置文件創(chuàng)建工作之后,很少會(huì)對其進(jìn)行修改等操作,因此本文采用Excel文件來存儲(chǔ)數(shù)據(jù)解析協(xié)議的定義信息。數(shù)據(jù)在Excel中以二維表格的形式存在,相當(dāng)于關(guān)系型數(shù)
72、據(jù)庫中的一個(gè)數(shù)據(jù)表,因此本文將關(guān)系型數(shù)據(jù)庫的相關(guān)概念引入到數(shù)據(jù)處理協(xié)議配置文件集中,規(guī)定每個(gè)Excel配置文件都只有一個(gè)數(shù)據(jù)頁(sheet),并將其看做是數(shù)據(jù)庫的一個(gè)數(shù)據(jù)表,每個(gè)Excel文件中的標(biāo)題行設(shè)計(jì)為數(shù)據(jù)表的字段,文件名作為數(shù)據(jù)表的表名。這樣所有的Excel數(shù)據(jù)處理配置文件的集合構(gòu)成了一個(gè)數(shù)據(jù)庫。</p><p> 由于在測試數(shù)據(jù)的處理過程中,數(shù)據(jù)解碼模塊和數(shù)據(jù)發(fā)送模塊需要不斷的查詢數(shù)據(jù)協(xié)議定義信息并根
73、據(jù)其對數(shù)據(jù)進(jìn)行實(shí)時(shí)的處理。而計(jì)算機(jī)對內(nèi)存數(shù)據(jù)的讀取速度要遠(yuǎn)遠(yuǎn)大于對硬盤數(shù)據(jù)的讀取速度,因此本文在軟件啟動(dòng)時(shí)將協(xié)議定義文件一次性全部讀取到內(nèi)存空間中,并將這個(gè)副本稱之為內(nèi)存數(shù)據(jù)處理協(xié)議。在軟件的運(yùn)行過程中將不會(huì)對硬盤上的Excel配置文件進(jìn)行任何的操作,所有的配置信息查詢過程都僅僅針對內(nèi)存數(shù)據(jù)處理協(xié)議。</p><p> 在內(nèi)存中,每個(gè)Excel文件用一個(gè)容器表示,容器中的每一個(gè)元素都是一個(gè)結(jié)構(gòu)體實(shí)例,Excel
74、文件中每一行的信息對應(yīng)于一個(gè)結(jié)構(gòu)體實(shí)例,結(jié)構(gòu)體的定義與Excel文件中標(biāo)題行的定義保持一致,每行信息的關(guān)鍵字段可以作為關(guān)聯(lián)型容器的關(guān)鍵字。如果有多個(gè)類型相同的Excel文件組成配置文件集,可以將存儲(chǔ)每個(gè)配置文件信息的容器作為元素,存儲(chǔ)在另一個(gè)容器中。圖3.20為Excel數(shù)據(jù)處理協(xié)議配置文件與內(nèi)存數(shù)據(jù)處理協(xié)議的對應(yīng)轉(zhuǎn)化關(guān)系。</p><p> 圖3.20 Excel文件集與內(nèi)存數(shù)據(jù)處理協(xié)議的對應(yīng)轉(zhuǎn)化關(guān)系<
75、/p><p> 利用C++ Builder 6.0提供的TADOQuery組件和TADOConnection組件可以像操作一個(gè)數(shù)據(jù)庫一樣操作Excel文件。本文就是在各個(gè)軟件啟動(dòng)時(shí)利用TADOConnection組件連接至各個(gè)Excel配置文件后利用TADOQuery組件讀取Excel文件中的所有配置信息,完成Excel數(shù)據(jù)處理協(xié)議配置文件到與內(nèi)存數(shù)據(jù)處理協(xié)議的轉(zhuǎn)化。衛(wèi)星姿態(tài)與軌道分系統(tǒng)地面試驗(yàn)終端顯示軟件中與每個(gè)
76、子模塊實(shí)現(xiàn)不同的功能,與之相對應(yīng)的Excel數(shù)據(jù)處理配置文件中的字段和結(jié)構(gòu)體定義也有所不同。</p><p> DLL是動(dòng)態(tài)鏈接庫(Dynamic Link Library) 的英文縮寫,一個(gè)DLL文件中包含一個(gè)或多個(gè)已被編譯、鏈接并與使用它們的進(jìn)程分開存儲(chǔ)的函數(shù)。利用DLL不僅可以使一個(gè)進(jìn)程調(diào)用不屬于其可執(zhí)行代碼的函數(shù),還可以實(shí)現(xiàn)資源與數(shù)據(jù)的共享,使得多個(gè)應(yīng)用程序可以同時(shí)訪問內(nèi)存中單個(gè)DLL 副本的內(nèi)容 [5
77、5]。利用動(dòng)態(tài)鏈接庫可以非常方便的在不影響該程序其他部分的情況下將更新應(yīng)用于各個(gè)模塊。</p><p> 衛(wèi)星控制系統(tǒng)的設(shè)計(jì)過程實(shí)際上也是一個(gè)邊設(shè)計(jì)邊測試邊完善的過程,因而要求終端顯示軟件具有一定的靈活性與適應(yīng)性,在測試過程中能夠針對最新的測試要求,應(yīng)用最新協(xié)議對測試數(shù)據(jù)進(jìn)行處理。若將所有的測試數(shù)據(jù)處理代碼都集中在一個(gè)可執(zhí)行文件中,顯然非常不利于軟件的維護(hù)與后期的功能擴(kuò)展,為了提高軟件的通用性與可擴(kuò)展性,本文將
78、不同協(xié)議規(guī)定的測試數(shù)據(jù)處理方法單獨(dú)編寫為一個(gè)DLL文件。軟件的通用模塊在處理測試數(shù)據(jù)時(shí)首先查詢內(nèi)存數(shù)據(jù)處理協(xié)議,內(nèi)存數(shù)據(jù)處理協(xié)議中記錄了針對各個(gè)協(xié)議處理測試數(shù)據(jù)的DLL文件,通用模塊調(diào)用相應(yīng)的DLL文件中的處理函數(shù)對測試數(shù)據(jù)進(jìn)行處理這樣對終端顯示軟件的后期的維護(hù)與擴(kuò)展轉(zhuǎn)移為對定義協(xié)議的配置文件和相應(yīng)的DLL文件的維護(hù)與擴(kuò)展。</p><p> 3.3 標(biāo)準(zhǔn)數(shù)據(jù)包的接受與解碼</p><p&
79、gt; 標(biāo)準(zhǔn)數(shù)據(jù)包的接收與解碼就是將接收到的標(biāo)準(zhǔn)格式的測量數(shù)據(jù)串分解為不同的數(shù)據(jù)幀,并對各個(gè)數(shù)據(jù)幀進(jìn)行解碼,將其包含的信息轉(zhuǎn)化為具有實(shí)際物理意義的工程數(shù)據(jù)并在局域網(wǎng)上發(fā)布,再進(jìn)一步由數(shù)據(jù)監(jiān)測模塊顯示為衛(wèi)星測試系統(tǒng)操作人員最易于理解的形式。</p><p> 3.3.1 解碼協(xié)議配置文件集</p><p> 對測量數(shù)據(jù)的解碼主要就是對數(shù)據(jù)域的解碼。根據(jù)上節(jié)中的描述,本文將每個(gè)標(biāo)準(zhǔn)數(shù)據(jù)
80、包的解碼協(xié)議存儲(chǔ)在一個(gè)Excel文件中,并將該文件稱之為解碼協(xié)議配置文件。測試人員可以根據(jù)需要隨時(shí)修改解碼協(xié)議配置文件。</p><p> 解碼協(xié)議配置文件的文件名為數(shù)據(jù)幀的幀編號。數(shù)據(jù)頁的名稱為“StdDecode.xls”,該數(shù)據(jù)頁中的標(biāo)題行包括:物理量序號、分類名、起始字節(jié),終止字節(jié),起始位、終止位、數(shù)值類型、文字解析、a、b、c、量綱和最小值與最大值。</p><p> 以下為
81、對標(biāo)題行各列的詳細(xì)說明:</p><p> 物理量序號:每一行以從小到大的順序方式0,1,2,3……。</p><p> 分類名:意義相近的物理量可以設(shè)為相同的分類名,例如將四元數(shù)q0,q1,q2,q3的分類名設(shè)置為“四元數(shù)”。</p><p> 物理量名稱:物理量的名稱。</p><p> 起始字節(jié):表示各變量在數(shù)據(jù)段中的起始字節(jié)位
82、置編號(第一個(gè)字節(jié)的位置編號為0)。</p><p> 終止字節(jié):表示各變量在數(shù)據(jù)段中的終止字節(jié)位置編號(第一個(gè)字節(jié)的位置編號為0)。</p><p> 數(shù)值類型:表示各變量的數(shù)值類型及其顯示方式,本文中將數(shù)值類型一共分為11種,如表3.所示:</p><p><b> 表3.1 數(shù)值類型</b></p><p>
83、 起始位:必填項(xiàng)。當(dāng)數(shù)值類型為bit或xbit時(shí),該項(xiàng)填變量在一個(gè)字節(jié)中的起始位的位置編號(0~7),否則填-1。</p><p> 終止位:必填項(xiàng)。當(dāng)數(shù)值類型為bit或xbitt時(shí),該項(xiàng)填變量在一個(gè)字節(jié)中的終止位的位置編號(0~7),否則填-1。</p><p> 文字解析:表示該物理量是否需要以文字說明的方式進(jìn)行顯示。當(dāng)數(shù)值類型為bit或xbit或C時(shí),需按照以下格式進(jìn)行填寫。每
84、一項(xiàng)以“|”結(jié)束,每一項(xiàng)的“=”左邊為十六進(jìn)制數(shù)或以格式為“(十六進(jìn)制小數(shù)/十六進(jìn)制大數(shù))”表示的開區(qū)間。例如“03=捕獲地球|09=帆板展開|(B7/C1)=異常模式|”表示當(dāng)該物理量的大小等于3時(shí)表示“捕獲地球”;等于9時(shí)表示“帆板展開”;大于183并且小于193時(shí)表示“異常模式”。</p><p> a、b、c三項(xiàng)為解碼系數(shù),顯示終端每次接收到的數(shù)據(jù)x將按照(x+a)*b+c的格式進(jìn)行轉(zhuǎn)換,其中a,b,c
85、為三個(gè)系數(shù),具體數(shù)值與各個(gè)物理量的處理要求有關(guān)。</p><p> 量綱:物理量的單位名稱,沒有量綱的物理量填“無”。</p><p> 最小值:該物理量在正常范圍內(nèi)所允許的最小取值,如無最小值,該項(xiàng)填“無。</p><p> 最大值:該物理量在正常范圍內(nèi)所允許的最大取值,如無最大值,該項(xiàng)填“無。</p><p> 在對遙測幀進(jìn)行解碼
86、處理的過程中,需要頻繁的訪問解碼協(xié)議配置文件。這些數(shù)據(jù)保存在硬盤上,由于解碼協(xié)議配置文件數(shù)據(jù)量大并且計(jì)算機(jī)對硬盤的訪問速度遠(yuǎn)遠(yuǎn)低于對內(nèi)存的訪問速度,因此為了提高測量數(shù)據(jù)的解碼效率,本文在測量數(shù)據(jù)的解碼模塊工作之前,將解碼協(xié)議配置文件中的信息一次性讀取到內(nèi)存中的一個(gè)以結(jié)構(gòu)體為元素的map類型的容器中,并將這個(gè)副本稱之為內(nèi)存解碼協(xié)議配置文件。該結(jié)構(gòu)體和容器的結(jié)構(gòu)定義如下:</p><p> typedefstru
87、ctM_ StdDecode</p><p> {AnsiString GroupName;//分類名</p><p> AnsiStringVariable;//物理量名稱</p><p> AnsiString MachineType;//單機(jī)類型</p><p> IntStartByte;
88、//起始字節(jié)</p><p> Int EndByte;//終止字節(jié)</p><p> IntStartBit;//起始位</p><p> Int EndBit;//終止位</p><p> AnsiString WordShow;//文字解析</p>&l
89、t;p> Double a;// 系數(shù)a</p><p> Double b;// 系數(shù)b</p><p> Double c;// 系數(shù)c</p><p> AnsiString Unit;//量綱</p><p> BoolMinValidity;
90、//是否有最小值</p><p> Double Min;//最小值</p><p> BoolMaxValidity; //是否有最大值</p><p> Double Max;//最大值</p><p> } StdDecode;</p><p> 因此本文
91、將物理量名稱作為關(guān)鍵字的值,與結(jié)構(gòu)體變量實(shí)例StdDecode組成一個(gè)鍵-值對作為一個(gè)map容器的元素,從而用一個(gè)map關(guān)聯(lián)容器實(shí)例來存儲(chǔ)一個(gè)DataPre.xls中的配置信息。該map變量實(shí)例的定義如下:</p><p> map <AnsiString, StdDecode> map_ DataPre1, map_ DataPre2, … , map_ DataPreN;</p>
92、<p> 多個(gè)map <AnsiString, StdDecode>類型變量可以作為一個(gè)map_AllStdDecode容器的元素,并且將一個(gè)幀編號和map_ DataPreN作為一個(gè)鍵值對, map_AllStdDecoded的定義如下:</p><p> map <AnsiString, map <AnsiString, StdDecode> > map_A
93、llStdDecode</p><p> 3.3.2 接收與解碼流程</p><p> 本文采用TCP/IP方式接收測量數(shù)據(jù),由于接收緩沖區(qū)中的數(shù)據(jù)不可能正好是一個(gè)遙測幀的長度,因此本文采用如下的流程接收遙測幀并對其進(jìn)行解碼:</p><p> 將解碼協(xié)議配置文件讀取到內(nèi)存空間;</p><p> 緩沖區(qū)接收到數(shù)據(jù),如果接收緩沖區(qū)中
94、的數(shù)據(jù)長度大于等于數(shù)據(jù)頭的長度,則讀取數(shù)據(jù)頭;如果小于數(shù)據(jù)頭的長度,則等待;</p><p> 讀取數(shù)據(jù)頭,對數(shù)據(jù)頭進(jìn)行解碼并且獲取數(shù)據(jù)段的長度;</p><p> 如果接收緩沖區(qū)中的數(shù)據(jù)長度大于等于數(shù)據(jù)段的長度,則讀取數(shù)據(jù)段;如果小于數(shù)據(jù)段的長度,則等待。</p><p> 根據(jù)數(shù)據(jù)頭中的遙測幀編號,在相應(yīng)的內(nèi)存解碼協(xié)議配置文件中遍歷每個(gè)遙測量;取出遙測量在
95、遙測幀中的數(shù)值類型、起始字節(jié)、終止字節(jié)、起始位、終止位等信息;將遙測變量解碼為double類型的數(shù)值;</p><p> 重復(fù)步驟2~步驟5,對下一幀數(shù)據(jù)進(jìn)行解碼。</p><p> 圖3.21為對測量數(shù)據(jù)進(jìn)行接收與解碼的流程圖。</p><p> 圖3.21 標(biāo)準(zhǔn)數(shù)據(jù)包的接收與解碼流程</p><p> 3.4 歷史數(shù)據(jù)回放<
96、;/p><p> 3.4.1. 數(shù)據(jù)回放需求</p><p> 在衛(wèi)星姿態(tài)與軌道分系統(tǒng)地面試驗(yàn)過程中,為了便于分析測試數(shù)據(jù),測試工作人員除了要實(shí)時(shí)監(jiān)測測試參數(shù)的狀態(tài)與變化情況外,往往還需要查看之前衛(wèi)星測試試驗(yàn)中產(chǎn)生的歷史數(shù)據(jù),具體要求包括:</p><p> 測試人員能夠指定需要查看的測試參數(shù);</p><p> 測試人員功能對數(shù)據(jù)回放進(jìn)
97、行開始、停止、暫停、繼續(xù)等功能的控制;</p><p> 測試人員能夠指定數(shù)據(jù)回放的速度與回放數(shù)據(jù)的頻率。</p><p> 數(shù)據(jù)回放結(jié)構(gòu)與控制流程</p><p> 根據(jù)數(shù)據(jù)回放需求,本文采用C/S網(wǎng)絡(luò)結(jié)構(gòu)實(shí)現(xiàn)數(shù)據(jù)的回放與控制功能,數(shù)據(jù)終端顯示模塊作為客戶端,不同客戶端的用戶可以根據(jù)各自的需求向服務(wù)器申請回放需要查看的歷史數(shù)據(jù)。數(shù)據(jù)回放的控制流程下圖所示。&
98、lt;/p><p> 圖3.22 數(shù)據(jù)回放流程</p><p> 數(shù)據(jù)監(jiān)測模塊首先通過日期直接查詢數(shù)據(jù)庫中的某段時(shí)間內(nèi)的試驗(yàn)記錄;數(shù)據(jù)庫把查詢結(jié)果(試驗(yàn)序號,試驗(yàn)時(shí)間等)返回?cái)?shù)據(jù)監(jiān)測模塊;</p><p> 數(shù)據(jù)監(jiān)測模塊選擇某個(gè)試驗(yàn)后,向數(shù)據(jù)庫管理模塊發(fā)送查詢指令;數(shù)據(jù)庫管理模塊返回操作指令作為應(yīng)答;</p><p> 如果查詢指令類型為
99、開始查詢,則數(shù)據(jù)庫管理模塊按照查詢指令內(nèi)容查詢數(shù)據(jù)庫,并獲得數(shù)據(jù)集;否則直接跳到步驟4。</p><p> 如果查詢指令類型為開始查詢,數(shù)據(jù)庫管理模塊利用數(shù)據(jù)發(fā)送子模塊將數(shù)據(jù)集按照查詢指令中的周期和步長發(fā)送給數(shù)據(jù)監(jiān)測模塊,否則根據(jù)查詢指令類型對正在發(fā)送的回放數(shù)據(jù)進(jìn)行暫停、繼續(xù)、停止等控制操作。</p><p> 3.4.3. 控制指令設(shè)計(jì)</p><p>
100、查詢指令共26字節(jié),指令的具體格式如下表所示。</p><p> 表3.2 查詢指令定義</p><p> 查詢指令類型為1字節(jié),查詢指令類型分為4種,即開始查詢、暫停、繼續(xù)、停止,具體數(shù)據(jù)協(xié)議下表所示。</p><p> 表3.3 查詢指令類型</p><p> 試驗(yàn)序號為8字節(jié),對應(yīng)數(shù)據(jù)庫表中的testserial字段。</
101、p><p> 時(shí)間類型為1字節(jié),指查詢提交的時(shí)間段是地面時(shí)間或星上時(shí)間,具體數(shù)據(jù)協(xié)議如下表所示。</p><p><b> 表3.4 時(shí)間類型</b></p><p> 操作指令的長度為2個(gè)字節(jié),包含了指令類型和查詢標(biāo)識兩部分內(nèi)容,具體的數(shù)據(jù)協(xié)議如下表所示。</p><p> 表3.5 操作指令定義</p>
102、;<p> 操作指令類型的數(shù)據(jù)長度為一個(gè)1個(gè)字節(jié),本文定義了10種操作指令,具體的指令類型定義如下表所示。</p><p> 表3.6 操作指令類型</p><p> 查詢標(biāo)識:1字節(jié),查詢標(biāo)識指操作指令對應(yīng)的查詢幀編號,具體數(shù)據(jù)協(xié)議與查詢指令相同。</p><p><b> 控制指令配置文件集</b></p>
103、<p> 根據(jù)前節(jié)中的描述,為了提高歷史數(shù)據(jù)回放模塊的可擴(kuò)展性,本文將控制指令保存在一個(gè)名為“Command.xls”的Excel配置文件中,系統(tǒng)測試人員或軟件開發(fā)人員可根據(jù)實(shí)際需要在配置文件中添加新的控制指令。</p><p> 查詢指令和控制指令都統(tǒng)一保存在名稱為“Cmd”的數(shù)據(jù)頁中,該數(shù)據(jù)頁中各列的標(biāo)題如下表所示。</p><p> 表3.7 控制指令配置文件“C
104、ommand.xls”的格式定義</p><p> 衛(wèi)星姿態(tài)與軌道分系統(tǒng)地面試驗(yàn)終端顯示軟件在工作時(shí),將控制指令配置文件中的配置信息讀取到內(nèi)存中的STRCmd結(jié)構(gòu)體類型的變量中。具體的結(jié)構(gòu)體定義如下:</p><p> typedefstructM_ STRCmd</p><p> {Int Num;//序號</p><
105、;p> Int CmdType;//指令類型</p><p> AnsiString CmdNum;//指令編號</p><p> AnsiString Exp;//備注</p><p> } STRCmd;</p><p> Command.xls文件中的每一行信息存儲(chǔ)在一個(gè)結(jié)構(gòu)體中,
106、所有的結(jié)構(gòu)體變量作為元素存儲(chǔ)在map類型的容器中,并且將指令編號作為元素的鍵值,該容器的定義如下:</p><p> map < AnsiString, DataPre > map_ STRCmd;</p><p><b> 數(shù)據(jù)可視化</b></p><p> 衛(wèi)星姿態(tài)與軌道分系統(tǒng)地面試驗(yàn)過程中需要實(shí)時(shí)監(jiān)視大量的測試參數(shù),根
107、據(jù)前文中的描述,不同類型的參數(shù)適用于不同的顯示方式。根據(jù)實(shí)現(xiàn)方式的不同,本文將數(shù)據(jù)顯示的方式分為列表顯示和曲線顯示兩大部分。</p><p> 列表顯示就是將接收到的測試參數(shù)的數(shù)值直接羅列在表格中予以顯示,這是衛(wèi)星測試中最重要的數(shù)據(jù)顯示方式。根據(jù)實(shí)際需求的不同,具體的數(shù)值顯示形式又分為:十進(jìn)制數(shù)值、二進(jìn)制源碼、十六進(jìn)源碼和文字描述。</p><p> 曲線顯示又分為實(shí)時(shí)二元曲線顯示和離
108、線曲線顯示兩大部分。</p><p> 實(shí)時(shí)二元曲線顯示功能將實(shí)時(shí)接收到的數(shù)據(jù)以曲線的方式顯示,橫坐標(biāo)為時(shí)間,縱坐標(biāo)為測試量的數(shù)值。曲線的顏色、線型、線寬、曲線圖的標(biāo)題以及實(shí)時(shí)顯示的周期等屬性可配置并保存至配置文件。采用離線曲線顯示時(shí),保存在數(shù)據(jù)庫中的數(shù)據(jù)會(huì)以曲線的形式進(jìn)行回放。曲線的顏色、線型、線寬、曲線圖的標(biāo)題等屬性可配置并保存至配置文件。 </p><p> 實(shí)時(shí)二元曲線
109、顯示和離線曲線顯示具有一些共同的任務(wù)需求:</p><p> 曲線圖必須具有實(shí)時(shí)放大、縮小、平移的功能;</p><p> 曲線圖能夠被存儲(chǔ)、打印;</p><p> 曲線圖的顯示功能要求能夠?qū)崿F(xiàn)暫停、繼續(xù)等功能;</p><p> 能夠設(shè)置曲線圖的參數(shù),如曲線線型、顏色、線寬、曲線圖標(biāo)簽,曲線圖的標(biāo)題以及顯示范圍等;</p&g
110、t;<p> 曲線圖的設(shè)置參數(shù)能夠被保存并調(diào)用;</p><p> 多個(gè)曲線圖能夠同時(shí)顯示、彼此相互獨(dú)立;</p><p> 同一張曲線圖中能夠顯示多條數(shù)據(jù)曲線;</p><p> 實(shí)時(shí)二元曲線顯示與離線曲線顯示又分別有一些不同的任務(wù)要求:</p><p> 實(shí)時(shí)二元曲線顯示的曲線橫坐標(biāo)為時(shí)間,縱坐標(biāo)為測試量的數(shù)值;而
111、離線曲線顯示曲線上每一個(gè)數(shù)據(jù)點(diǎn)的橫坐標(biāo)和縱坐標(biāo)都是一個(gè)測試量的數(shù)值。</p><p> 實(shí)時(shí)二元曲線顯示功能要求可以自動(dòng)顯示最新的曲線部分。</p><p> 曲線顯示功能既可以通過調(diào)用Windows API函數(shù)來實(shí)現(xiàn),也可以通過對C++Builder提供的圖形顯示控件Tchart進(jìn)行二次開發(fā)來實(shí)現(xiàn)。調(diào)用Windows API函數(shù)會(huì)增加系統(tǒng)開發(fā)的難度與復(fù)雜性,容易給系統(tǒng)帶來不穩(wěn)定性。T
112、chart是C++ Builder6.0 中提供的一個(gè)標(biāo)準(zhǔn)的圖形顯示控件,既可以靜態(tài)設(shè)計(jì),也可以動(dòng)態(tài)生成。利用Tchart可以快速繪制Line、FastLine、Pie、Point和Area等多種類型的圖形,通過調(diào)用Tchart提供的眾多的函數(shù)可以快速實(shí)現(xiàn)曲線的平移、縮放、曲線參數(shù)設(shè)置等功能。因此,本文采用TChart控件進(jìn)行曲線顯示功能的開發(fā)與實(shí)現(xiàn)。</p><p><b> 數(shù)據(jù)顯示的實(shí)現(xiàn)流程&l
113、t;/b></p><p> 類繼承和動(dòng)態(tài)綁定是面向?qū)ο缶幊讨械囊粋€(gè)重要的內(nèi)容,在C++中,用類進(jìn)行數(shù)據(jù)抽象,用類派生從一個(gè)類繼承另一個(gè)類。動(dòng)態(tài)綁定使編譯器能夠在運(yùn)行時(shí)決定是使用基類中定義的函數(shù)還是派生類中定義的函數(shù)。繼承和動(dòng)態(tài)綁定可以在兩個(gè)方面簡化程序:能夠容易的定義與其他類相似但又不同的新類,能夠更容易的編寫忽略這些相似類型之間區(qū)別的程序。面向?qū)ο缶幊膛c本文中曲線顯示的應(yīng)用需求非常匹配,本文定義一個(gè)類
114、來描述實(shí)時(shí)二元曲線顯示和離線曲線顯示的共同點(diǎn),同時(shí)通過繼承可以定義兩種不同派生類來分別描述并實(shí)現(xiàn)實(shí)時(shí)二元曲線顯示和離線曲線顯示。</p><p> 列表顯示和曲線顯示的共同點(diǎn)都是將接收到的數(shù)據(jù)以某種形式顯示出來,只是在具體的顯示及實(shí)現(xiàn)方式上有所區(qū)別,采用C++編程中類繼承和動(dòng)態(tài)綁定的技術(shù)能夠?qū)煞N顯示方式的流程統(tǒng)一起來。本文設(shè)計(jì)了一個(gè)窗體類TFormShow和一個(gè)線程類ThreadShow來實(shí)現(xiàn)數(shù)據(jù)的顯示。TF
溫馨提示
- 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. 眾賞文庫僅提供信息存儲(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 面向地面測試的終端顯示軟件設(shè)計(jì)與開發(fā)畢業(yè)設(shè)計(jì)論文
- 公交漢字顯示系統(tǒng)畢業(yè)設(shè)計(jì)論文
- led顯示器畢業(yè)設(shè)計(jì)論文
- 公交漢字顯示系統(tǒng)畢業(yè)設(shè)計(jì)論文
- 軟件工程畢業(yè)設(shè)計(jì)論文
- 軟件工程畢業(yè)設(shè)計(jì)論文
- 軟件開發(fā)畢業(yè)設(shè)計(jì)論文
- ISAR試驗(yàn)雷達(dá)終端顯示軟件.pdf
- 畢業(yè)設(shè)計(jì)開題報(bào)告--據(jù)預(yù)置和lcd顯示軟件設(shè)計(jì)
- 液晶顯示終端與單片機(jī)接口的研究畢業(yè)設(shè)計(jì)
- 數(shù)字顯示電子時(shí)鐘畢業(yè)設(shè)計(jì)論文(修訂)
- 數(shù)字顯示電子時(shí)鐘畢業(yè)設(shè)計(jì)論文(修訂)
- 軟件技術(shù)專業(yè)畢業(yè)設(shè)計(jì)論文
- 基于單片機(jī)的定時(shí)顯示設(shè)計(jì)畢業(yè)設(shè)計(jì)(論文)
- 某型地波雷達(dá)終端顯示軟件的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 畢業(yè)設(shè)計(jì)(論文)+基于gprs通信技術(shù)的終端研究
- 軟件開發(fā)畢業(yè)設(shè)計(jì)—英文論文
- 溫控畢業(yè)設(shè)計(jì)論文---智能溫度檢測與顯示系統(tǒng)的設(shè)計(jì)
- 本科畢業(yè)設(shè)計(jì)(論文)-視頻終端交互界面核心單元設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)(論文)-聲光顯示智力競賽搶答器
評論
0/150
提交評論