国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于VAPS 的代碼控件在機載顯控軟件的應用

2023-05-17 03:16余正風張燕平秦正運
電子技術與軟件工程 2023年5期
關鍵詞:圖符圖形符號控件

余正風 張燕平 秦正運

(中國直升機設計研究所 江西省景德鎮(zhèn)市 333000)

在如今航空技術突飛猛進的發(fā)展下,航空電子系統(tǒng)愈加復雜,綜合顯示控制系統(tǒng)的多功能顯示器作為顯示儀表的迭代品,不僅需要實時給飛行員提供導航、飛行參數和其他關鍵信息的顯示,還需要將復雜的飛行信息用規(guī)范的可視化圖表集成顯示,有助于飛行員在人機交互中快速獲取信息,從而有效的操縱整個系統(tǒng)。

VAPS 作為常用于航空飛行器顯示端輔助開發(fā)的圖形界面設計工具,通過強大的GUI 編輯器對需設計的顯示圖符進行建模作為一個個控件,形成圖符庫;然后根據具體需求配置圖符控件的屬性,添加相應的邏輯,從而組建出完整的畫面。但在使用過程中,因為對顯示要求的不斷提升,基礎圖符控件已然捉襟見肘,需要通過增加代碼控制的方式對基礎圖符進行二次開發(fā),使圖符控件的功能滿足設計的顯示需求,也使圖符庫使用起來更加高效、便捷,減少開發(fā)工作量。

1 VAPS XT介紹

VAPS XT 是由加拿大Presagis 公司研發(fā)的一款圖形界面設計工具,廣泛應用于航空、車輛儀表等高性能電子設備應用的設計開發(fā)。VAPS XT 擁有良好的圖形用戶界面,用戶可以利用工具提供的控件以及設定行為來快速設計儀器儀表圖形,且提供了自定義控件的能力,具有便捷、靈活、可視化等優(yōu)點;并且VAPS XT 支持UDP、TCP、共享內存等數據通道機制與外界進行數據交互。在設計結束后,可通過代碼生成器將設計的圖形轉換成C++代碼,無需改動即可以應用到不同平臺上去。VAPS 已經在F-22、NH90 等機型以及國內多型號直升機的座艙顯示設備中應用。

2 代碼控件在機載顯控軟件的應用

2.1 架構設計與系統(tǒng)實現(xiàn)

如圖1 所示,機載顯控軟件分為用戶系統(tǒng)(User Application, UA)和座艙顯示系統(tǒng)(Cockpit Display System,CDS),UA 作為控制端,用于控制畫面顯示,接收CDS 反饋的人機交互指令,CDS 作為顯示終端,接收來自UA 包括畫面ID、圖符驅動數據等信息,二者通過總線或共享內存的方式進行交互。其中CDS 分為數據通訊和畫面顯示兩部分,數據通訊負責數據收發(fā)和處理,VAPS 主要用于畫面顯示部分的開發(fā),并且采用nCOM 交互數據,在使用時通過構建數據描述文件(Data Description File, DD)將接收的通訊數據按照VAPS 規(guī)定的使用格式進行處理,從而在VAPS 工程中關聯(lián)畫面數據來驅動畫面的動態(tài)顯示。

圖1: 機載顯控軟件架構

VAPS 進行畫面開發(fā)分為3 個步驟。

2.1.1 構建圖形符號形成圖形符號庫

使用VAPS 中包含的圖形、字符、儀表、數據和計算控件進行HMI 的圖形化開發(fā),將這些基本圖元部件按需求組合,通過建立圖形符號對象的輸入輸出,關聯(lián)內部控制邏輯,形成更復雜的圖形符號;設計好的圖形符號保存在圖形符號庫內,為畫面顯示的開發(fā)實現(xiàn)提供支持,使構成的整個畫面更加規(guī)范。

2.1.2 實現(xiàn)畫面布局和內部邏輯

在VAPS XT 中新建一個Format 對象,根據設計需求,從圖形符號庫選取合適的圖形符號,合理對圖形符號分配位置和配置屬性,完成整個畫面布局,通過數據流(Data Flow)中使用數值比較、邏輯判斷等VAPS 提供的語句,對各個圖符的輸入輸出數據進行處理,實現(xiàn)畫面中圖符的狀態(tài)控制。

2.1.3 通信數據的I/O 處理

由于UA 端和CDS 端的硬件或者軟件配置的不同(例如系統(tǒng)大小端序不同、結構體對齊方式不同等),nCom 提供DD 文件作為數據接口,通過構建Data Sender/Receiver 對象,實現(xiàn)應用間的通訊。CDS 端接收通訊數據并解析處理,解析后的數據以DD 的格式通過nCom 傳遞給構成畫面的每個圖符模型的參數,驅動畫面中每個圖符的顯示。

2.2 代碼控件實現(xiàn)和應用

2.2.1 代碼控件實現(xiàn)

如表1 所示,在VAPS XT 中依次點擊“File”、“NEW...”出 現(xiàn) 彈 窗,點 擊 第 三 欄“Advanced Objects”,選擇“Class”,設置名稱“Name”和路徑“Location”,點擊“確定”,從而創(chuàng)建類,此時出現(xiàn)類定義窗口,根據要實現(xiàn)的需求選擇基類,然后保存。

表1: 基類列表

在“Project View”中找到此工程,右鍵選擇生成代碼,生成框架代碼,根據建立Class 工程時選擇的路徑,找到其make 文件下的sln 文件,使用Visual Studio 2010 開發(fā)工具打開。在目錄中會生成三種分別以vxtCls*Plugin,vxtBaseCls*,vxtCls*命名的3 個類的文件,vxtCls*Plugin 為VAPS 圖形設計界面上使用,在初始化、構建VAPS 屬性設置欄等功能上需要調用其他2種類,vxtBaseCls*和vxtCls*類是設計界面和最終執(zhí)行文件中需要的,其中vxtBaseCls*為vxtCls*的基類,主要進行獲取屬性信息、創(chuàng)建對象等一些操作。

我們需要在派生類vxtCls*中的各個函數中按需求編寫相應功能,從而實現(xiàn)代碼控件。如Calculator 類只需要在派生類vxtCls*中的函數s_vCalculate 中添加我們實現(xiàn)功能的代碼,并在vUpdate 函數進行調用此函數即可;GrObject 類則需要在vDraw、pGetSelectObjet、vCalculateExtent 等函數中添加代碼。

由于VAPS 沒提供文本控件的相關的設計界面,如果設計文本類的代碼控件,需要我們手動添加相關的類,因此創(chuàng)建GrObject 類,刪除工程文件中生成的vxtBaseCls*和vxtCls*類文件,手動添加sqx*類和vxtCls*Plugin 類文件。如圖2 所示。

圖2: 文本控件工程目錄

在實現(xiàn)文本控件的功能時,VAPS 底層開放了部分源碼,并提供了文本編輯類sqxTextCommon 可以進行使用,它可編輯繪圖的基本屬性,如顏色、大小、對齊方式等等,我們可以通過從此類派生出子類,在子類中實現(xiàn)我們想要的功能,以供vxtCls*Plugin 類使用。下面以Calculator 類的文本控件“WideTextOut 控件”為例,實現(xiàn)一個計算輸入字符串數據長度的功能,在vCalculateExtent 中加入計算文本的寬度和高度的代碼,然后在vUpdateTextExtent 中調用vCalculateExtent,實現(xiàn)代碼如下所示:

編寫完文件后保存。我們需要分別編譯StaticOGL、release 兩個配置。StaticOGL 會編譯出.lib文件,給window 下的工程文件鏈接使用;release 會編譯出.dll 文件,供VAPS 設計界面使用,給開發(fā)人員在設計時提供預覽功能。編譯需要新建bat 文件并運行,bat 文件內容如下所示:

編譯生成的控件“WideTextOut”相比VAPS 自帶的基礎控件“WideText”,復用其全部屬性并多生成兩個Float 類型的輸出屬性,分別為文本寬度(TextWidth)和文本高度(TextHeight),在使用VAPS 繪制特定場景下不定長的顯示文本時,便可應用該代碼控件,實現(xiàn)對文本長度和寬度的控制,達到預期的顯示效果。如表2 所示。

表2: WideTextOut 控件屬性列表

2.2.2 代碼控件應用

基于代碼控件的實現(xiàn),我們可以在開發(fā)過程中實現(xiàn)更多的功能。在這里以一個示例進行闡述:需要在畫面中設計一個滾動標語進行循環(huán)滾動顯示UA 端發(fā)送的提示信息。在VAPS 的基礎控件不具備獲取傳入變長字符串長度的情況下,無法控制滾動標語的勻速運行,從而影響觀感,因此需要運用前面描述的文本控件,將UA端傳輸至CDS 端的字符串數據的長度獲取,作為一個輸出值供設計滾動標語的控件使用。

在VAPS XT 中依次點擊“File”、“NEW...”,選擇第一欄“Objects”中的“Graphical Object”,生成一個未添加任何屬性的“滾動標語控件(Rolltitles 控件)”,在“Properties”界面根據設計需求添加屬性如表3 所示。

表3: Rolltitles 控件屬性列表

設置好屬性后,在“Implementation View”窗口依次拖入VAPS 工具自帶的對象“RectWidthHeight”、“StencilGroup”、“SignalGenerator”、“sliderHoriz”以及剛剛生成的控件“WideTextOut”。了解它們的作用:“RectWidthHeight”設置文本顯示的窗口大小并提供給“StencilGroup”,“StencilGroup”將超出窗口大小的顯示內容剪切掉,“sliderHoriz”控制整個文本在設置的窗口內進行滾動,“SignalGenerator”用于計算和控制每次文本滾動的運動頻率,“WideTextOut”負責給“SignalGenerator”輸入文本長寬。如圖3 所示。

圖3: 模型視圖

設置數據流(Data Flow)關聯(lián)以上各個對象,然后“Rolltitles 控件”將設置的字符大小屬性和UA 端發(fā)送的字符串傳入WideTextOut 控件,WideTextOut 控件通過代碼實現(xiàn)字符串長度的獲取,結合字符大小計算出整個標語的長度,再作為TextHeight 屬性通過數據流(Data Flow)關聯(lián)給Rolltitles 控件,如此便可以將其用于SignalGenerator 的value 值計算,控制滾動的速率保持穩(wěn)定。如圖4 所示。

圖4: 數據流控制

完成全部數據流(Data Flow)的設置,Rolltitles 控件至此就完成了設計,可以拖動到畫面需要顯示的位置,通過關聯(lián)外部DD 數據或者直接輸入字符串進行使用,點擊“play”能夠預覽運行效果。如圖5 所示。

圖5: Rolltitles 控件的使用

3 結束語

代碼控件在機載顯控軟件開發(fā)的應用,已得到充分的驗證,其“基于模型”和“基于代碼”的組合使用,使得生成的代碼控件較之基礎控件可以更全能的應用于圖符圖表設計,降低了開發(fā)難度和維護成本,提升了功能實現(xiàn)的便捷性,同時也給自定義圖符圖表控件增加了擴展性,可以用更直觀更全面的方式呈現(xiàn)畫面,進而提高飛行員的工作效率和飛行安全性。

猜你喜歡
圖符圖形符號控件
GB/T《流體傳動系統(tǒng)及元件 圖形符號和回路圖 第1部分:圖形符號》征求意見
川鄂鹽道白菜柱頭圖形符號意義分析
中國傳統(tǒng)圖形符號與現(xiàn)代標志設計的融合
手機界面中圖形符號的發(fā)展趨向
論“坡芽歌書”符號形象的審美意蘊
ASP.NET服務器端驗證控件的使用
計算機輔助飛機制造協(xié)調路線圖設計研究
壓力容器法蘭的參數化繪制方法
電子圖板的圖庫技術在化工設備設計中的應用
Spreadsheet控件在Delphi數據庫系統(tǒng)中的編程與應用
泉州市| 平泉县| 宣恩县| 增城市| 贵溪市| 彩票| 偃师市| 台东县| 红原县| 调兵山市| 织金县| 乌兰察布市| 温泉县| 张家川| 浮梁县| 平江县| 彭山县| 石门县| 南部县| 陆河县| 尉氏县| 法库县| 晋城| 秦安县| 南郑县| 和静县| 淳化县| 彭泽县| 临西县| 清丰县| 灵台县| 宜春市| 曲水县| 东阳市| 华坪县| 珲春市| 龙川县| 巴中市| 福泉市| 丹寨县| 射洪县|