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

雙緩沖技術在船舶監控圖形界面開發中的應用

2019-01-07 08:01:38張麗蕓陳玉沖
關鍵詞:界面

李 寬, 張麗蕓, 陳玉沖

(1. 上海船舶運輸科學研究所 艦船自動化系統事業部, 上海 200135;2. 渤海造船廠集團設計院, 遼寧 葫蘆島 125004)

0 引 言

隨著航海事業的不斷發展,機艙監控系統在提高船舶的自動化水平、保證船舶安全航行等方面起著越來越重要的作用。隨著機艙自動化程度的不斷提高,實時嵌入式操作系統VxWorks在現代機艙監控系統中的應用越來越廣泛。機艙監控系統是由多種監控設備組合而成的復雜的人機系統,需機電人員對大量信息進行快速處理,因此對人機交互界面的要求較高。機艙監控系統需對機艙設備的參數、運行狀態和故障報警等信息進行顯示和操作,其圖形界面在滿足傳統圖形用戶界面方案要求的同時,還應具有很高的實時性和可擴展性。美國 WRS 公司開發的媒體庫(Wind Media Library,WindML)滿足這些要求,且具有占用內存少、可移植性強和高性能等特點。

1 開發工具及圖形顯示原理

1.1 VxWorks系統和WindML開發工具

VxWorks 是由美國風河公司開發的具有微內核、高可靠性、高實時性和可裁減等特點的嵌入式實時操作系統。VxWorks 提供有圖形開發組件WindML,在VxWorks一般的界面開發應用中,可使用WindML進行圖形界面設計。WindML可為運行在嵌入式系統上的多媒體應用程序提供支持,能用來開發可定制的標準化設備驅動程序的框架。

WindML包含軟件開發工具包(SDK)和驅動開發工具包(DDK)2個組件,其中:SDK用來實現應用程序的開發;DDK用來實現驅動程序的開發。WindML能滿足嵌入式計算機的所有圖形要求,保證開發人員在VxWorks實時操作系統上建造功能齊全、豐富多彩、可嵌入式的圖形界面。[1]

1.2 圖形顯示原理

圖形顯示由底層圖片、文字、數字和符號等共同組成,原理見圖1。

圖1 圖形顯示原理

WindML本身不支持漢字顯示,可通過調用點陣字庫等方法來解決該問題。在中文環境下,輸入的是漢字的內碼,若要顯示漢字,需進行點陣尋址,找到該漢字內碼的字模信息在漢字庫中的位置,取出該字模信息進行點陣顯示。

WindML的圖形界面基于像素,用顏色匹配表說明位圖中的顏色。首先在顏色匹配表上設置一種顏色的紅、綠、藍亮度值,然后用位圖陣列中的每個像素值索引值代表該點在顏色匹配表中的顏色。

在顯示圖形之前,須先調用WindML的API函數uglInitialize()進行初始化,并產生一個圖形環境。在WindML中,一般會在使用一組畫圖函數之前用uglBatchStart()通過互斥信號量鎖定圖形上下文、圖形設備和緩沖,以防止多線程之間產生資源沖突。在畫圖操作完成之后,只有用 uglBatchEnd()釋放被鎖定的資源,其他畫圖函數才可使用。[2]

2 圖形開發中遇到的問題

在船舶監控系統中,由于需實時采集、顯示機艙各設備的狀態和報警信息等,每次采集到數據和各界面互相切換時都要實時刷新畫面,而刷新時會出現畫面閃爍和劇烈抖動等現象。

畫面閃爍的根本原因是相鄰兩幀圖像之間存在巨大的差異。當需顯示新的圖形或使原來顯示的圖形發生變化時,需刷新背景,用背景顏色的畫刷將背景重新刷一遍,原圖形將被覆蓋,此時畫上新圖形即可完成圖形的刷新顯示或動態顯示。但是,由于背景顏色(一般是白色)與圖形顏色之間存在反差,在不斷地重復刷新、顯示的過程中會產生閃爍。閃爍本質上就是反差,反差越大,閃爍越厲害。因此,當窗口由于切換界面或數據更新需重繪時,首先清除顯示區背景色,然后才調用OnPaint函數進行重繪。背景色與繪圖內容的反差經常很大,導致背景色與顯示圖形在短時間內反復切換,造成顯示窗口出現閃爍現象。

針對刷新時畫面經常出現閃爍、抖動現象的問題,初期處理方式是以位圖背景的形式將圖形界面中的固定信息保存起來,調用uglDefault—BitmapSet()來實現,在該背景上動態刷新變化的測點信息、報警等。在該方式下刷新畫面時數據量會減少,畫面的閃爍現象有所改善,但因采集到的監測數據、設備的運行狀態等是實時變化的[3],且圖形緩沖顯示方式不變,小頻率或少量的數據刷新依然會引起畫面閃爍、抖動現象。

3 雙緩沖技術及其實現

傳統的繪圖方式是采用單緩沖技術,而要解決圖形界面開發過程中刷新圖像時遇到的閃爍、抖動問題,需依靠雙緩存方式下的雙緩沖圖形刷新技術來實現。

在系統中,所有設備都有一個被稱為設備描述表的內存緩沖區與其對應。傳統的繪圖方式(單緩沖)是將圖形繪制在唯一的內存緩沖區中,由圖形設備接口自動將內存緩沖區中的圖像復制到顯存中顯示。雙緩沖圖形刷新技術在內存中有2片緩存區,分別為前端緩沖區和預先使用函數uglPageDrawSet( )手動建立的與前端緩沖區兼容的后端緩沖區。在繪圖過程中,首先將下一幀要顯示的圖像繪制到后端緩沖區,然后將后端緩沖區中的圖像復制到前端緩沖區,最后由圖形設備接口自動將前端緩沖區中待顯示的圖像復制到顯存中,完成圖形顯示。

單緩沖技術和雙緩沖技術基本原理見圖2。

a) 單緩沖技術b) 雙緩沖技術

圖2單緩沖技術和雙緩沖技術基本原理

在圖形界面開發過程中,在同一圖形界面背景下,背景圖、標題欄、單位和量程等圖像內容不變,需不斷進行更新的只有實時監測的數據。結合前述雙緩沖技術,可首先將固定不變的內容在不可見的后臺屏幕上分層繪制,然后將其他各層的內容透明粘貼到背景層的相應位置上,最后再將其復制到屏幕顯示區域進行顯示。由于固定不變的圖層無需重復繪制,因此可加快界面刷新速度。

3.1 WindML雙緩沖驅動程序配置

1) 使用pentiumM 系列主板搭建硬件環境,并準備好VxWorks5.5.1 + WindML3.0 的軟件調試環境;

2) 新建一個 bootable 類型的 VxWorks 工程;

3) 將 gmch.o 庫文件添加到創建的工程路徑下;

4) 將 windML_INTEL_GMCH_DB.cfg 文件放置在C:Tornado221host esourcewindMLconfigdatabase 路徑下(本文假設VxWorks 開發環境安裝在 C:Tornado221 路徑下);

5) 將 gmchcfg.h 文件放置在C:Tornado221 argethugldrivergraphicsintel 路徑下(本文假設. VxWorks 開發環境安裝在 C:Tornado221 路徑下);

6) 對 WindML3.0 進行配置(見圖3)。

圖3 WindML3.0配置界面

圖4 雙緩沖流程圖

3.2 雙緩沖技術實現方法

在具體實現中,首先創建前后雙緩沖頁, 調用uglPageDrawSet ( )函數設置活動的雙緩沖頁,使監測數據、設備狀態和報警等過程在Off_Screen(后臺)實現。在繪制當前數據信息時,調用函數uglPageDrawSet( )另外指定繪制下一圖形操作的頁面(緩沖)。在繪制完成之后,通過 uglPagevisableSet( )將后臺的圖像拷貝到前臺,實現雙緩沖圖形的界面切換。雙緩沖流程圖見圖4。

部分實現代碼如下:

dispPage[0] = UGL_PAGE_ZERO_ID;

dispPage[1] = uglPageCreate(devId);//創建雙緩沖頁

uglPageDrawSet(devId, dispPage[1]);//設置活動頁

sprintf(pageName, "%s%d%s","/ata0a/rPage",fileNumber,".jpg");

uglJpegToDDBFromFile (jpegId, pageFile, &jpegDdbPageId, UGL_NULL, 0, 0);

uglBitmapSizeGet(jpegDdbPageId, &jpegWidth1, &jpegHeight1);//圖片加載

uglTextDraw(gc, dispAna[i].xPoint, dispAna[i].yPoint, -1, LDMDispAna[i]);//字符顯示

uglTextDrawW(gc, dispAna[i].xPoint, dispAna[i].yPoint, dispAna[i].dispLen, (UGL_WCHAR *)dispAna[i].dispName[dispAna[i].value] );//漢字顯示

uglBitmapBlt(gc, jpegDdbPageId, 0, 0, jpegWidth1 - 1, jpegHeight1 - 1, UGL_DEFAULT_ID, 0, 0);//位圖繪制

if(pageIndex == 1)

{

uglPageVisibleSet(devId, dispPage[1]);

uglPageDrawSet(devId, dispPage[0]);

pageIndex = 0;

}

else

{

uglPageVisibleSet(devId, dispPage[0]);

uglPageDrawSet(devId, dispPage[1]);

pageIndex = 1;

}//雙緩沖界面切換

3.3 效果

由于采用雙緩沖技術時需在內存中新建一個臨時緩存區,因此新建一個臨時位圖對象作為畫布并綁定臨時緩存區。繪圖在該緩存區中進行,當所有圖形繪制完成之后,將臨時緩存區中的位圖對象貼到顯示緩存區中,由于內存中的圖形與屏幕顯示的圖形差別很小,可消除刷新屏幕時出現的閃爍、抖動現象。

顯示單元監控界面效果見圖5。

圖5 顯示單元監控界面效果

4 結 語

隨著監控系統技術的不斷發展,對監控系統實用性、可靠性和安全性的要求會越來越高,惡劣環境下的機艙圖形界面開發技術將是今后一段時期的發展重點。本文對VxWorks圖形顯示原理、閃屏分析、雙緩沖技術及具體應用進行介紹,VxWorks提供的多媒體組件WindML雙緩沖技術已成功應用于實際工程開發中,取得了良好的效果。

猜你喜歡
界面
聲波在海底界面反射系數仿真計算分析
微重力下兩相控溫型儲液器內氣液界面仿真分析
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
西門子Easy Screen對倒棱機床界面二次開發
空間界面
金秋(2017年4期)2017-06-07 08:22:16
鐵電隧道結界面效應與界面調控
電子顯微打開材料界面世界之門
人機交互界面發展趨勢研究
手機界面中圖形符號的發展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
主站蜘蛛池模板: 国产一区二区人大臿蕉香蕉| 看你懂的巨臀中文字幕一区二区 | 亚洲一欧洲中文字幕在线| 日本黄色不卡视频| 91区国产福利在线观看午夜| 亚洲欧美自拍中文| 国内99精品激情视频精品| 国产视频一区二区在线观看| 国产综合精品日本亚洲777| 国产成人免费| 欧美日韩中文国产| 国产精品亚洲αv天堂无码| 91黄视频在线观看| 激情综合婷婷丁香五月尤物 | 亚洲综合第一区| 欧美成人一级| 成人福利免费在线观看| 日韩一区二区在线电影| 又爽又大又黄a级毛片在线视频| 亚洲中文字幕国产av| 国产91在线|日本| 日韩区欧美区| 萌白酱国产一区二区| 国产成年女人特黄特色大片免费| 欧美精品v| 成人在线不卡| 久久这里只有精品2| 国产精品尤物铁牛tv| 岛国精品一区免费视频在线观看 | 亚洲av中文无码乱人伦在线r| 精品无码日韩国产不卡av | 免费毛片在线| 欧美日韩成人| 天堂va亚洲va欧美va国产| 中文字幕亚洲乱码熟女1区2区| 国产成人综合亚洲欧美在| 日韩高清无码免费| 国产乱人伦精品一区二区| 国产麻豆aⅴ精品无码| 91久久偷偷做嫩草影院| 亚洲欧美另类中文字幕| 四虎国产精品永久一区| 伊人成人在线视频| 亚洲av片在线免费观看| 国产精品手机视频一区二区| 国产精品入口麻豆| 精品小视频在线观看| 亚洲a免费| 国产91色在线| 久久免费精品琪琪| 亚洲欧洲AV一区二区三区| 91丝袜在线观看| 91久久国产热精品免费| 欧美曰批视频免费播放免费| 91福利免费视频| 精品少妇人妻一区二区| 91精品网站| 国产午夜不卡| 国产丝袜精品| 国产一区二区三区视频| 露脸一二三区国语对白| 啦啦啦网站在线观看a毛片| 四虎永久免费地址| 色婷婷亚洲综合五月| 99免费视频观看| 四虎成人免费毛片| 亚洲无码久久久久| 好吊色妇女免费视频免费| 成人免费一级片| 亚洲有无码中文网| 国产成年女人特黄特色毛片免 | 欧美日韩亚洲国产| 国产成人亚洲无码淙合青草| 免费一级成人毛片| 国产成人综合日韩精品无码首页| 亚亚洲乱码一二三四区| 激情在线网| 亚洲综合色吧| 青青极品在线| 国产成人亚洲日韩欧美电影| 美女啪啪无遮挡| 大学生久久香蕉国产线观看|