• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于WindML的圖形開發(fā)與應(yīng)用

      2016-01-23 18:54:27練學輝朱佳麗喬大雷海軍駐南京地區(qū)雷達系統(tǒng)軍事代表室南京0003中國船舶重工集團公司第七二四研究所南京53
      雷達與對抗 2015年1期

      練學輝,朱佳麗,喬大雷(.海軍駐南京地區(qū)雷達系統(tǒng)軍事代表室,南京0003; .中國船舶重工集團公司第七二四研究所,南京53)

      ?

      基于WindML的圖形開發(fā)與應(yīng)用

      練學輝1,朱佳麗2,喬大雷2
      (1.海軍駐南京地區(qū)雷達系統(tǒng)軍事代表室,南京210003; 2.中國船舶重工集團公司第七二四研究所,南京211153)

      摘要:以電子地圖顯示軟件開發(fā)為背景,研究了Vxworks下使用WindML3.0進行嵌入式圖形開發(fā)的全過程,包括WindML的配置和加載、WindML下圖形開發(fā)的總體框架等,并實現(xiàn)了WindML下圖形窗口的創(chuàng)建、顯示、刷新,漢字的顯示,并利用雙緩沖技術(shù)解決電子地圖刷新時的屏幕閃爍問題。

      關(guān)鍵詞:WindML圖形開發(fā); WindML配置和加載;窗口顯示;雙緩沖;漢字顯示

      0 引言

      Vxworks實時操作系統(tǒng)具有高實時性、高可靠性等特點,被廣泛應(yīng)用于工業(yè)控制、國防軍事等領(lǐng)域。Vxworks6.0以下版本采用的是Tornado開發(fā)工具,而Vxworks6.0以上版本集成的是Workbench開發(fā)工具。Vxworks能夠支持大多數(shù)常用的工作平臺和目標處理器,除基本的功能和開發(fā)工具外,它還具有多媒體應(yīng)用開發(fā)組件WindML。WindML組件為嵌入式系統(tǒng)提供了基于常用設(shè)備的圖形、視頻以及音頻技術(shù)。Tornado 和Workbench開發(fā)工具均支持WindML組件,且Workbench支持更高的WindML版本。

      本文總結(jié)了基于WindML3.0的圖形開發(fā)過程,包括WindML的配置、加載及遇到的問題與解決方法,同時描述了基于WindML實現(xiàn)電子地圖的任意縮放、平滑漫游以及名稱標繪等功能的內(nèi)容,主要介紹基于WindML的繪圖窗口的創(chuàng)建、顯示、刷新,雙緩沖技術(shù)在電子地圖顯示軟件中的具體應(yīng)用以及漢字顯示的實現(xiàn)。

      1 WindML簡介

      WindML多媒體庫是Tornado的可選組件之一,具有一整套Vxworks操作系統(tǒng)下的基本圖形功能,為開發(fā)者提供了一個層次清晰、結(jié)構(gòu)合理的圖形開發(fā)框架。WindML主要包括軟件開發(fā)包(SDK)和設(shè)備驅(qū)動程序開發(fā)包(DDK)這兩個組件。WindML的層次結(jié)構(gòu)如圖1所示。

      圖1 WindML層次結(jié)構(gòu)

      SDK層定義了應(yīng)用程序與底層硬件驅(qū)動程序之間的接口,使得WindML開發(fā)者可以獨立于底層硬件來完成應(yīng)用程序的開發(fā)。SDK層提供的接口主要包括圖形設(shè)備資源的初始化以及銷毀程序、多媒體應(yīng)用程序接口、事件服務(wù)、內(nèi)存管理、設(shè)備管理等。DDK是SDK與硬件之間的中間層。在利用WindML實現(xiàn)圖形相關(guān)功能時,圖形繪制工作由應(yīng)用程序調(diào)用SDK層的API函數(shù)來完成,而API函數(shù)則通過調(diào)用特定圖形設(shè)備的DDK層驅(qū)動程序完成對圖形設(shè)備的實際訪問。

      2 WindML的配置和加載

      WindML是以源碼形式釋放的組件,在WindML完成安裝后需要對WindML進行設(shè)置并對其進行編譯生成相應(yīng)的庫文件。WindML的設(shè)置包括處理器類型的選擇、圖形設(shè)備的選擇、鍵盤設(shè)備的字體選擇、是否支持雙緩沖等選項。WindML的設(shè)置可以使用Tornado圖形化配置或命令行方式來實現(xiàn)。在完成WindML設(shè)置后,需要對WindML配置文件進行編譯,在進行編譯前需要先進行clean操作,否則編譯會出現(xiàn)問題。在Tornado中使用圖形工具進行WindML(V3.0)設(shè)置的具體過程如下:

      ·打開…configpcPentiumconfig.h文件,添加如下代碼:

      #define INCLUDE_WINDML

      #define INCLUDE_WINDML_PS2_POINTER

      #define INCLUDE_WINDML_PS2_KEYBOARD

      ·進入Tornado2.2->Tools->W(wǎng)indML…;

      ·進入WindML Build(圖2)界面;

      圖2 WindML Build界面

      ·選擇Configure(圖3a),進入WindML Configuration,選擇PENTIUM/gnu;

      ·點擊Devices(圖3(b)),選擇VESA BIOS/Generic Monitor/16-RGB565/1024 * 768/60/No Pointer/PC-AT Type/No Audio;

      ·點擊Advanced(圖3(c)),選擇JPEG/Double Buffer;

      ·點擊Bitmap Fonts(圖3(d)),選擇Include Unicode Support/All Font;

      ·選擇File->Save;

      ·進入WindML Build,選擇所保存配置,點擊Build進行編譯。

      為了支持中文漢字的顯示,圖3 d)中需添加自己開發(fā)的中文字庫。在完成WindML庫文件的設(shè)置和編譯后,WindML相關(guān)組件在Vxworks工程的組件管理窗口中由不存在或不可選狀態(tài)變?yōu)榭蛇x狀態(tài),在組件管理窗口中添加相應(yīng)的WindML組件完成開發(fā)環(huán)境的配置。對于簡易圖形界面的開發(fā),只要將2D graphics和complete 2D library添加進Vxworks即可。WindML支持雙緩沖技術(shù)[1]。開發(fā)過程中若需使用該技術(shù),除了在WindML配置文件中添加雙緩沖相關(guān)內(nèi)容,還需修改sysLib.c文件以實現(xiàn)BSP對雙緩沖的支持。修改完成后,保存并重新編譯BSP。

      圖3 WindWL Configuration界面

      3 WindML在電子地圖開發(fā)中的應(yīng)用

      Vxworks圖形開發(fā)[3-5]提供的功能相對簡單。與Windows具有豐富直觀的圖形化開發(fā)控件相比,WindML僅提供了點、線、矩形、橢圓等簡單圖形的繪制功能,因此很多圖形相關(guān)的顯示功能只能通過函數(shù)集來實現(xiàn)。同時,Vxworks沒有提供漢字顯示解決方案[2],不支持漢字顯示,需要自己設(shè)計并實現(xiàn)。

      繪制電子地圖時要先創(chuàng)建顯示區(qū)域。由于WindML沒有窗口類資源及相關(guān)控件,只能通過函數(shù)集來實現(xiàn)窗口的創(chuàng)建、顯示及刷新。在電子地圖漫游過程中,在使用圖形繪制函數(shù)進行電子地圖動態(tài)刷新時,大量數(shù)據(jù)的高頻刷新會引起屏幕的嚴重閃爍,通過使用雙緩沖技術(shù)在后臺緩沖區(qū)完成電子地圖的繪制后再將其顯示在前臺,可以有效解決屏幕閃爍現(xiàn)象。

      3.1 WindML圖形開發(fā)流程

      在利用WindML進行圖形開發(fā)的過程中,遵循規(guī)范的開發(fā)流程可以有效提高編程效率,減少編程錯誤。具體的流程如下:

      (1)調(diào)用函數(shù)uglInitialize()完成初始化;

      (2)通過uglDriverFind()獲取設(shè)備的驅(qū)動信息,包括顯示器、字體等;

      (3)建立顏色索引表;

      (4)通過uglGcCreate()創(chuàng)建圖形上下文;(5)在指定的圖形上下文中進行繪圖操作;(6)完成所有資源的釋放并退出。

      3.2窗口的創(chuàng)建與顯示

      使用WindML的函數(shù)進行電子地圖繪制時,先通過winCreate函數(shù)進行窗口的創(chuàng)建,winAttach進行窗口的綁定,再用winDrawStart函數(shù)進行窗口鎖定,然后設(shè)置區(qū)域繪制所需的線寬、前景色、背景色、區(qū)域的大小等參數(shù),通過uglRectangle等繪圖函數(shù)實現(xiàn)在窗口指定區(qū)域內(nèi)繪制所需圖形,繪制完成后通過winDrawEnd函數(shù)進行窗口的解鎖。

      在創(chuàng)建多個窗口時,由于WindML組件沒有提供窗口互鎖功能,組件中的窗口可以重疊、嵌套等操作,如果需要屏幕上每次只顯示一個窗口,可以通過定義全局變量tWin來實現(xiàn)窗口互鎖。具體做法如下:

      (1)定義全局變量tWin,初始化tWin的值為0,并假定tWin不為0時窗口顯示相關(guān)的事件得不到響應(yīng),tWin為0時響應(yīng)指定的窗口顯示事件;

      (2)為每個窗口創(chuàng)建一個任務(wù),該任務(wù)的調(diào)用函數(shù)包括窗口的初始化、顯示、事件處理以及關(guān)閉;

      (3)每次處理窗口顯示相關(guān)的事件時,先判斷tWin是否為0,如果tWin為0則調(diào)用taskSpawn顯示相應(yīng)的窗口,同時令tWin等于taskSpawn的返回值,只要窗口顯示調(diào)用成功,則tWin就不會等于0,此時其他的窗口顯示相關(guān)事件就得不到響應(yīng),這樣就相當于實現(xiàn)了窗口互鎖;

      (4)當前窗口關(guān)閉后,tWin值被置為0,此時就相當于解除了窗口互鎖。

      3.3漢字的顯示

      WindML不支持漢字顯示,當直接在WindML下對電子地圖中的中文地名進行標繪時,會顯示亂碼??紤]到WindML對雙字節(jié)編碼的支持,通過自己開發(fā)點陣字庫,實現(xiàn)對漢字的點陣存儲、點陣獲取、點陣顯示的全過程,并利用WindML的雙字節(jié)顯示函數(shù)實現(xiàn)漢字顯示。點陣字庫添加的具體步驟如下:

      (1)開發(fā)自己的點陣字庫并給字庫定義一個文件名,將做好的字庫文件以”.c”為后綴;

      (2)放在WindML的字體引擎WINDBASE/target/src/ugl/fonts/bmf目錄下;

      (3)打開WindML配置菜單,在Bitmap Fonts頁面下添加字庫文件,保存并編譯配置文件以完成漢字字庫的添加。

      在完成漢字字庫的添加工作后,就可以在程序中運用WindML自帶的接口函數(shù)進行漢字的顯示。具體過程如下:

      (1)使用uglDriverFind()函數(shù)選擇字體驅(qū)動;

      (2)利用uglFontFindString()函數(shù)查找已經(jīng)配置好的字體;

      (3)利用uglCreateFont()創(chuàng)建字體;

      (4)使用uglFontSet()函數(shù)來設(shè)置字體;

      (5)調(diào)用uglTextDrawW()來進行漢字的顯示。

      在使用WindML的接口函數(shù)進行漢字顯示時,漢字的顏色、大小均可改變。開發(fā)不同的點陣字庫,通過字庫文件中的width和height參數(shù)設(shè)定點陣字體的大小,保存字庫文件,通過UglFontFindString函數(shù)中的familyName和pixelSize來查找合適的字體,將查詢結(jié)果存儲于UGL_FONT_DEF結(jié)構(gòu)體中,然后通過ugl-CreateFont函數(shù)創(chuàng)建指定大小和類型的字體。使用ug-lTextDrawW進行漢字顯示時,在建立顏色索引表之后,通過uglBackgroundColorSet和uglForegroundColor-Set函數(shù)即可設(shè)置漢字的顯示顏色。

      3.4雙緩沖技術(shù)的實現(xiàn)

      開發(fā)電子地圖顯示軟件時,地圖需隨參考物位置變化實時更新,刷新時需要先擦除畫面然后再進行繪制。調(diào)用API函數(shù)進行電子地圖刷新時,需要重新計算并繪制地圖上的大量信息。若采用邊計算邊繪制的方式,不可避免地會出現(xiàn)屏幕閃爍現(xiàn)象,而使用雙緩沖技術(shù)可以很好地解決這一問題。雙緩沖是指在內(nèi)存中創(chuàng)建一塊與屏幕繪圖區(qū)域一致的存儲區(qū)域,作為緩沖屏幕。在圖形繪制的過程中,先將圖形對象繪制在存儲區(qū)域,繪制完成后再一次性將緩沖屏幕中的數(shù)據(jù)復(fù)制到可見視頻緩沖區(qū)中。

      WindML雙緩沖技術(shù)主要由函數(shù)uglPageDrawSet 和uglPageVisibleSet實現(xiàn)。電子地圖實時刷新時,調(diào)用函數(shù)uglPageDrawSet指定待繪制的緩沖區(qū)(頁面),繪制完成后通過調(diào)用函數(shù)uglPageVisibleSet將后臺緩沖區(qū)的畫面拷貝到前臺進行顯示,實現(xiàn)電子地圖的刷新。在使用雙緩沖技術(shù)進行圖形刷新的過程中,操作頁面的坐標偏移不能小于等于0,否則會出現(xiàn)致命錯誤并導(dǎo)致Vxworks系統(tǒng)重啟。WindML下雙緩沖技術(shù)的具體實現(xiàn)步驟如下:

      (1)判斷是否支持雙緩沖;

      (2)創(chuàng)建雙緩沖頁: page[0]= UGL_PAGE_ZERO_ID page[1]= uglPageCreate(devId);

      (3)通過uglPageDrawSet(devId,page[1])函數(shù)設(shè)置活動繪圖緩沖頁;

      (4)根據(jù)當前數(shù)據(jù)繪制圖形;

      (5)通過uglPageVisibleSet(devId,page[1])函數(shù)顯示繪制好的圖形;

      (6)通過uglPageDrawSet(devId,page[0])函數(shù)設(shè)置活動繪圖緩沖頁;

      (7)根據(jù)當前數(shù)據(jù)重繪圖形;

      (8)通過uglPageVisibleSet(devId,page[0])函數(shù)顯示繪制好的圖形;

      (9)重復(fù)步驟3~8;

      (10)通過uglPageDestroy(devId,page[1])函數(shù)釋放緩沖區(qū)域。

      4 結(jié)束語

      本文總結(jié)了基于WindML的嵌入式圖形開發(fā)過程,上述技術(shù)已被應(yīng)用于電子地圖開發(fā)過程中,實現(xiàn)了電子地圖的顯示和刷新,并獲得了較好的顯示效果。

      參考文獻:

      [1]陳君,唐秀明.Vxworks下圖形用戶界面開發(fā)中雙緩沖技術(shù)應(yīng)用[J].微計算機信息,2006(22).

      [2]劉亞麗,顏麗娟.一種基于Vxworks的漢字輸入法實現(xiàn)[J].電子科技,2012(2).

      [3]蔡華,卞新高,史中權(quán),等.基于Vxworks的WindML圖形界面開發(fā)方法[J].工業(yè)控制計算機,2005(18).

      [4]皇甫禎,陳懷民,等.基于Vxworks的圖形界面開發(fā)方法[J].測控技術(shù),2008(27).

      [5]袁淵,增文火.基于嵌入式操作系統(tǒng)Vxworks的圖形界面開發(fā)[J].華東船舶工業(yè)學院學報,2003(17).

      Graphic development and application based on WindML

      LIAN Xue-hui1,ZHU Jia-li2,QIAO Da-lei2
      (1.Military Representatives Office of Radar System of the PLA Navy in Nanjing,Nanjing 210003; 2.No.724 Research Institute of CSIC,Nanjing 211153)

      Abstract:The embedded graphic development is studied through the WindML3.0 at the Vxworks on the background of the e-chart,including the WindML configuration and loading as well as the overall framework of the graphic development.The creation of the graphic windows,display,refresh,and Chinese character display based on the WindML are realized.Besides,the problem that the screen flashes when the e-chart is refreshed is resolved through the double buffering technology.

      Keywords:WindML graphic development; WindML configuration and loading; window display; double buffering; Chinese character display

      作者簡介:練學輝(1965-),男,高級工程師,研究方向:雷達總體技術(shù);朱佳麗(1986-),女,工程師,碩士,研究方向:數(shù)據(jù)處理及顯示技術(shù);喬大雷(1980-),男,工程師,碩士,研究方向:雷達數(shù)據(jù)處理。

      收稿日期:2014-12-20;修回日期:2015-01-11

      文章編號:1009-0401(2015)01-0065-04

      文獻標志碼:A

      中圖分類號:TP31

      永川市| 襄汾县| 嵊泗县| 耿马| 南丰县| 高清| 呼图壁县| 长海县| 曲周县| 噶尔县| 桂阳县| 利辛县| 府谷县| 东安县| 乡宁县| 南澳县| 瑞安市| 乌兰察布市| 舞阳县| 工布江达县| 伊通| 乌鲁木齐市| 甘洛县| 阿拉尔市| 海阳市| 武威市| 南康市| 宝山区| 广州市| 白沙| 建昌县| 赫章县| 萍乡市| 泰兴市| 德钦县| 读书| 白沙| 东宁县| 美姑县| 牙克石市| 长白|