亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

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

        ?

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

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

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

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

        0 引言

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

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

        1 WindML簡介

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

        圖1 WindML層次結構

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

        2 WindML的配置和加載

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

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

        #define INCLUDE_WINDML

        #define INCLUDE_WINDML_PS2_POINTER

        #define INCLUDE_WINDML_PS2_KEYBOARD

        ·進入Tornado2.2->Tools->WindML…;

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

        圖3 WindWL Configuration界面

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

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

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

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

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

        (1)調用函數uglInitialize()完成初始化;

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

        (3)建立顏色索引表;

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

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

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

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

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

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

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

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

        3.3漢字的顯示

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

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

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

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

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

        (1)使用uglDriverFind()函數選擇字體驅動;

        (2)利用uglFontFindString()函數查找已經配置好的字體;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        (9)重復步驟3~8;

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

        4 結束語

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

        參考文獻:

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

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

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

        [4]皇甫禎,陳懷民,等.基于Vxworks的圖形界面開發(fā)方法[J].測控技術,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-),男,高級工程師,研究方向:雷達總體技術;朱佳麗(1986-),女,工程師,碩士,研究方向:數據處理及顯示技術;喬大雷(1980-),男,工程師,碩士,研究方向:雷達數據處理。

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

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

        文獻標志碼:A

        中圖分類號:TP31

        91精品国产91| 色www视频永久免费| 无码精品国产va在线观看| 中文字幕久久久人妻无码| 制服丝袜视频国产一区| 亚洲加勒比无码一区二区在线播放| 国产成人亚洲精品一区二区三区| 中文字日产幕码三区的做法大全| 99在线精品免费视频九九视| 国产欧美久久久另类精品| 青春草在线观看免费视频| 亚洲精品第一页在线观看| 国产色欲av一区二区三区| 精品久久亚洲中文无码| 国产成社区在线视频观看| 国语自产啪在线观看对白| 日本免费观看视频一区二区| 色诱视频在线观看| 成人网站免费大全日韩国产| 久久国产精品二区99| 性感人妻一区二区三区| 中文字幕精品一区二区三区| 国产麻传媒精品国产av| 综合色久七七综合尤物| 色综合久久五十路人妻| 免费国产线观看免费观看| 欧美激情内射喷水高潮| 久久久精品中文无码字幕| 久久精品熟女亚洲av麻豆永永| 东北少妇不戴套对白第一次| 丁香五香天堂网| 宅宅午夜无码一区二区三区| 一区二区三区精品免费| 国产极品粉嫩福利姬萌白酱 | 欧美金发尤物大战黑人| 妺妺窝人体色www聚色窝韩国| 亚洲av天堂在线免费观看| 欧美高清精品一区二区| 久久久受www免费人成| 日日摸夜夜添夜夜添一区二区 | 国产精品自产拍在线18禁|