999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于COM技術的虛擬儀表ActiveX控件開發*

2013-09-12 01:50:08郭淑霞
微處理機 2013年6期
關鍵詞:按鈕界面用戶

高 穎,葛 飛,劉 寧,郭淑霞

(1.西北工業大學航海學院,西安 710072;2.西北工業大學無人機特種技術國防重點實驗室,西安 710065)

1 引言

隨著科學技術的迅猛發展,越來越多的高技術武器裝備被應用到部隊中。目前在工控系統、科學研究及軍事仿真等領域,隨著信息量不斷擴大,各種操作面板愈來愈龐大,增大了制造成本與維護難度。運用虛擬現實技術對武器裝備進行仿真,是彌補部隊操作和維修訓練的有效途徑[1]。通過計算機仿真技術實現虛擬仿真界面能夠大大降低研發和制造成本,使系統易于更改和維護,且能給人以逼真的視覺感受。

從某發動機測試系統虛擬儀表控件的實際應用的角度,提出了儀表建模和仿真實體控制的具體方法,并以此理論開發基于COM技術的虛擬儀表ActiveX控件,旨在從應用角度提供一種設備訓練仿真建模和實施手段,以用于軍事仿真、計算機輔助訓練等領域。

2 COM技術

組件對象模型(Component Object Model,COM)是一種以組件為發布單元的對象模型,這種模型使各軟件組件可以用一種統一的方式進行交互。COM提供了組件之間進行交互的規范,也提供了實現交互的環境[2]。這種交互使得一種語言編寫的程序能調用另一種語言編寫的軟件組件,實現了與編程語言無關的軟件重用。調用端被稱為客戶,被調用端是組件對象,兩者的相互作用建立在簡單客戶/服務器模型機制基礎之上。組件對象以動態鏈接的可執行軟件單位作為載體,接口提供了客戶與組件之間進行通信的協議或規范。

COM組件具有如下特點和功能:

(1)語言無關性和易學易用性。因為COM規范的定義不依賴于語言,所以組件對象所使用的語言與客戶程序所使用的語言可以不同,只要它們都能夠生成符合COM規范的可執行代碼即可。COM對象不同于一般的面向對象語言(如C++語言)中的對象概念,它是建立在二進制可執行代碼、而不是源代碼基礎上的,因而COM對象與語言無關。COM的語言無關性為跨語言合作開發提供了一致的標準。

(2)接口與實現分離。COM對象接口與實現分離的特性使得COM組件非常容易完成替換。當虛擬儀表類型需要改變時,只要改變組件、重建組件并發布新組件即可。由于更新是局部的,程序中出錯的機會也就僅限于這個局部。開發COM組件時,通常是先開發組件接口,保證一切能順利配合,然后再實現接口的要求。而且只要接口設計完成,就可以將其分布到幾個程序中,組件功能的實現可以并行進行,從而實現并行開發。

(3)重用性極強??芍赜眯允侨魏螌ο竽P偷膶崿F目標。COM客戶程序可通過接口使用對象所提供的服務,而并不需要知道對象內部的實現過程。它使復雜的系統簡化為一些簡單的對象模塊,高度體現了面向對象的思想。組件其實就是一個軟件塊,用于完成特定工作,任何程序都可以使用組件。由于組件是自給自足的,可以很容易地進行替換,并且可以一次編寫,到處使用。以后只更新或替換這個組件就可以糾正或改進該組件的功能。

(4)可跨進程、跨平臺移植并實現分布式應用。采用COM組件完全可以實現二進制可執行代碼級基礎上的跨進程、跨操作系統移植。

3 儀表控件開發方法

3.1 VC+OpenGL底層開發法

利用VC+OpenGL從底層進行開發,優點是能夠實現用戶的個性化需求,滿足計算機通訊的實時性,適用于對實時性有嚴格要求的工控軟件系統。缺點是要求用戶掌握較深的編程知識,系統開發周期長,代碼重用性低,仿真界面的真實感一般。

3.2 LabView虛擬儀器軟件

利用以美國國家儀器公司(NI)的LabView為代表的虛擬儀器軟件進行開發,其優點是用戶經簡單培訓可快速掌握其交互式的編程設計環境,軟件自身具有大量虛擬儀器面板設計用的開關、按鈕、旋鈕、表頭等面板組件,還具有數據采集、儀器通信等用途,用戶可自定義仿真系統,滿足不同需求。缺點是成本較高,開放性較差,不適用于真實性要求較高的場合。

3.3 GL Studio和VAPS專業虛擬仿真軟件

利用以GL Studio和VAPS為代表的專業級虛擬仿真軟件,用戶可通過熟悉的繪圖習慣編制虛擬仿真應用程序,其優點是開發周期短,仿真界面的真實感較強,生成的C(C++)代碼可移植性高,并借助VC++等編譯環境實現了計算機實時性的通訊需求,應用前景廣闊。

4 利用GL Studio的ActiveX組件方式開發實例

由于VC++等開發環境提供的控件(如按鈕等)過于Windows風格化,導致所開發的界面千篇一律,雖然可利用許多二次開發的“皮膚”為程序“換膚”,但不能解決根本性問題。以MSVC 6.0的按鈕控件為例,采用位圖按鈕雖能解決按鈕的美觀問題,但編程時需要對按鈕的樣式重新進行繪制,且不能給形狀不規則的按鈕配置不規則的位圖,故無法滿足需求。

而GL Studio自身支持含通道信息的PNG格式,利用Photo-Shop等圖像編輯軟件,可按需要繪制任意形狀的按鈕,賦予在GL Studio環境中生成的部件后,即可生成美觀的自定義按鈕[3]。除了上述按鈕控件外,如果用戶想要制作高級控件,例如飛行仿真中的表盤等,利用GL Studio便更能體現出優勢。

在為“發動機測試系統”設計軟件系統時,由于軟件界面層次及邏輯性復雜,采集并顯示的運行狀態參數較多,操作員對界面真實感及軟件的人機交互友好程度要求較高,所以采用了GL Studio作為開發工具,結合已有的VC++開發儀表技術,不但滿足了實時性和交互性要求,還增強了軟件構成的靈活性。其設計流程如圖1所示。設計中啟動這個對象時,圖形表面的指針必須移除。抽取指針四周的區域,并復制到指針的位置之上。

圖1 儀表設計框架圖

(5)一旦圖像處理好了,將其保存到圖層中。這樣從最初的面板中移除的任何物體都位于它們各自的圖層中。圖層文件以*.png形式使用保留透明區保存。如果使用PhotoShop的*.psd文件,則可以直接利用*.psd文件而不必轉換成*.png文件。

由此框圖設計的三維儀表控件,打破了傳統儀器由廠家定義,用戶無法根據自己的要求而改變其相應功能的工作模式,使得用戶可以根據自己的需求輕易地改變ActiveX控件提供的接口參數,設計自己的儀表系統,在虛擬測試系統和儀表設計中盡量用軟件代替硬件,充分利用計算機技術來實現和擴展傳統測試系統和儀表的功能。下面以軟件中的一種虛擬儀表控件為例,介紹具體的開發流程。

4.1 安裝 GL Studio

將GL Studio安裝完畢,即在MSVC 6.0新建菜單中出現三個新項目,其中第一項為主要介紹基于COM技術的ActiveX控件項目開發。在選擇該項后,按常用的VC生成項目的方法完成初始化設置,進入編程狀態,并生成GL Studio開發文件。

4.2 形成用戶定制組件

4.2.1 處理紋理文件

先采用Photoshop對儀表圖像素材進行處理,并根據分部抽象實例化技術將面板中能動的部件單獨處理,生成紋理文件,如指針、按鍵、旋鈕等。以圖2所示的圓形指針儀表為例,紋理制作包含以下幾個重要步驟:

(1)首先創建圖形的像素定為360×370。重新定位畫布上焦點的圖象,以便于為指針騰出顯示表面板以外的空間。值得注意的是,在不阻擋圖像其他部分的前提下,應盡可能多地利用畫的固定部分。

(2)為圖像建立一個新的不可見圖層,同時切掉背景區域。

(3)復制指針并粘貼到一個單獨圖層。旋轉圖層以使得靠近背景面板的指針在結構中水平放置。

(4)如果已經完成好指針,則可以選擇整理儀表的外觀。實際上儀表外觀是比較臟亂的??梢赃x擇保持原樣讓儀表看起來更真實些。另一種做法是采用圖解的畫法,先做出外觀的一塊干凈地方并把它復制到臟亂的區域。不管怎樣,一旦在GL Studio

圖2 儀表紋理制作效果圖

(6)針對虛擬儀表仿真類型多、參數變化大的特點,有時需要對紋理文件進行再加工處理以滿足用戶對量程、字體、顏色、起始角度等要求,比如摳出刻度及量程標識數字,提供儀表控件更豐富的接口內容。

4.2.2 設計組件

雙擊自動生成的GL Studio開發文件,進入GL Studio編輯環境。利用直線、曲線、矩形等圖形工具可直接設計仿真界面相關部件的線條形狀,而后將相關部件進行類似于CAD中的組合等操作,并賦予材質和紋理,形成用戶自己定制的組件,如圖3所示。

圖3 儀表制作效果圖

4.2.3 加入控制算法

本例中儀表的刻度范圍在圓周方向上均勻分布,并且刻度范圍可以由用戶通過接口改變,在計算好指針的每一等份所對應的角度之后,利用GL Studio強大的 API函數庫[4],以表體的圓周中心為中心,構造旋轉所需的算法如下:

為了實現按鈕開關控制參數圖片的實時更新,在相應位置添加回調函數,形成外部控制所用的接口函數,代碼如下:

4.2.4 生成控件源代碼

通過GL Studio中主面板Generation選項,選擇Component,利用代碼生成器自動編譯生成ActiveX控件所需的代碼,返回至MSVC 6.0編譯環境,在控件代碼中擴展屬性和方法所需的代碼,然后編譯生成GL Studio所形成的ActiveX控件[5]。

4.2.5 形成ActiveX控件

(1)根據“發動機測試系統”虛擬儀表仿真界面的設計要求,需要提供一系列關于儀表控件可調的接口。在此結合VC++底層開發畫出刻度標識及刻度線,以便添加控件量程、背景色、前景色、字體等屬性,如圖4所示。

圖4 儀表刻度效果圖

(2)通過引用GL Studio生成的控件內部所提供的“m_glsComponent”指針變量在程序中添加用戶自定義控制各虛擬仿真部件的方法,預留控件與用戶程序間的接口。當主程序調用GL Studio生成的控件時,由于其接口函數是預先定義的,所以即使在調用時控件方法在代碼上表現為不透明,但這里仍可在主程序中調用,方便實現了外部對內部的驅動。以下代碼實現表盤外觀風格的變化:

最終實現的控件接口屬性如圖5所示。

圖5 儀表屬性圖

4.3 與仿真主程序有機結合

采用GL Studio開發出獨立運行程序或者開發出與VC++結合的Windows框架程序均能實現上述要求,但界面整體靈活性受到很大限制。而采用GL Studio所支持的COM組件技術后,由ActiveX組件構成界面,靈活性高,可擴展性強。

5 結 束 語

利用GL Studio所開發的程序框架豐富,在采用COM開發技術后,其擴展性和可移植性得到了極大提升,并在軍事仿真等方面都有著廣闊的應用前景。所述的仿真程序經測試,系統穩定,界面友好,真實感強,為儀表測試系統提供了強有力的技術支持和保障。

[1]劉穎,朱元昌,張天輝,等.虛擬測量工具的構造與實現[J].系統仿真學報,2005,17(7):1779 -1781.

[2]朱東方,蘇群星,劉鵬遠,佟德飛.虛擬儀表響應模塊行為實現[J].信息技術,2011(1):65-69.

[3]樊世友,邸彥強,朱元昌.GL Studio軟件在視景仿真建模中的應用[J].計算機工程,2002(3):260-261.

[4]許穎慧,楊峰.GL Studio在儀表仿真開發中的關鍵技術研究[J].儀器儀表與檢測技術,2008(10):76-78.

[5]高穎,邵亞楠,鄭濤,黃建國.GL Studio在飛行座艙模擬器中的仿真研究[J].彈箭與制導學報,2008,28(1):257-260.

猜你喜歡
按鈕界面用戶
這些按鈕能隨便按嗎?
當你面前有個按鈕
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
人機交互界面發展趨勢研究
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
手機界面中圖形符號的發展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
內心不能碰的按鈕
商業評論(2014年9期)2015-02-28 04:32:41
主站蜘蛛池模板: 红杏AV在线无码| 国产一区二区三区精品久久呦| 欧美日韩在线观看一区二区三区| AV网站中文| 青青草国产免费国产| JIZZ亚洲国产| 国产欧美专区在线观看| 亚洲看片网| 18禁影院亚洲专区| 青草视频久久| 亚洲无码日韩一区| 国产男女免费视频| 啊嗯不日本网站| 97影院午夜在线观看视频| 亚洲床戏一区| 福利视频99| 极品av一区二区| 亚洲性影院| 国内精品视频区在线2021| 久久久黄色片| 97成人在线观看| 中文字幕亚洲精品2页| 色网站在线视频| 五月婷婷丁香综合| 国产精品三区四区| 538精品在线观看| 免费一级无码在线网站| 亚洲乱码视频| 亚洲一区二区三区香蕉| 红杏AV在线无码| 思思热精品在线8| 制服丝袜一区| 免费亚洲成人| 久久不卡国产精品无码| 久久精品欧美一区二区| 精品久久久无码专区中文字幕| 蜜芽国产尤物av尤物在线看| 日韩AV手机在线观看蜜芽| 亚洲男女在线| 青青草91视频| 中国一级特黄视频| 国产成+人+综合+亚洲欧美| a级高清毛片| 国产成人精品视频一区视频二区| 女人18毛片久久| 国产主播在线观看| 国产精品女熟高潮视频| 无码专区在线观看| a天堂视频| 亚洲第一区欧美国产综合 | 日韩欧美国产综合| 久久99精品久久久久久不卡| 天堂网亚洲系列亚洲系列| 国产手机在线小视频免费观看| 中文字幕亚洲无线码一区女同| 色色中文字幕| 国产亚洲一区二区三区在线| 成年女人a毛片免费视频| 国产成人亚洲综合A∨在线播放| a级免费视频| 在线观看国产精美视频| 综合天天色| 亚洲中文精品人人永久免费| 国产视频a| 亚洲国产成人久久精品软件| 在线日韩日本国产亚洲| 露脸一二三区国语对白| 精品久久久久久成人AV| 日韩av无码精品专区| 亚洲欧美日韩中文字幕一区二区三区| 国产在线拍偷自揄观看视频网站| 亚洲精品国产综合99久久夜夜嗨| 欧美日韩午夜| 色吊丝av中文字幕| 九九热视频在线免费观看| 四虎影视库国产精品一区| 欧美色伊人| 久草视频福利在线观看 | 亚洲人成日本在线观看| 国产99在线| 国产免费精彩视频| 亚洲欧美成人在线视频|