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

在WindML下漢字、圖形界面及圖片顯示的開發研究

2014-08-01 14:56:29胥小武余立建劉洪雨
鐵路計算機應用 2014年8期
關鍵詞:引擎

胥小武, 余立建, 劉洪雨

(西南交通大學 信息科學與技術學院, 成都 610031)

在WindML下漢字、圖形界面及圖片顯示的開發研究

胥小武, 余立建, 劉洪雨

(西南交通大學 信息科學與技術學院, 成都 610031)

本文介紹WindML的結構,重點敘述在開發文字圖形前字庫的原理、結構和配置、顯示圖片文件前的準備工作及WindML設置編譯的重要注意事項,最后用具體的項目開發成果,展示了在VxWorks下用WindML開發的文字、圖形、圖片文件的顯示。

VxWorks;WindML;文字;圖形;圖片文件

VxWorks實時操作系統由400多個相對獨立的、短小精煉的目標模塊組成,用戶可根據需要選擇適當的模塊來裁剪和配置系統,這就有效保證了系統的安全性和可靠性[1]。VxWorks包含了BSP,Wind內核,I/O系統,文件系統,網絡系統,圖形系統等[2]。

WindML是VxWorks下的一部分,它支持多媒體程序運行于嵌入式操作系統,主要用于提供基本的圖形、視頻和聲頻技術應用開發。WindML API提供了一個統一的圖形硬件接口及處理輸入/輸出設備事件的能力。

WindML包括兩個組件:(1)SDK。它提供了圖形資源的初始化和清理例程,多媒體API包括了2D圖形化界面、區域管理、窗口、顏色管理、視頻音頻、JPEG支持、事件服務、內存管理、擴展API和設備管理;(2)DDK。它提供了一個完整的常見硬件配置,參考驅動程序例程和API文檔可以快速建立起新的驅動程序[3]。 WindML的層次結構如圖1所示。?

圖1 WindML層次結構圖

1 WindML漢字庫和WindML的配置

在WindML第一次使用之前要配置、編譯WindML。VxWorks中的板級支持包BSP (board support package)是介于底層硬件和上層軟件之間的底層軟件開發包,它主要用來屏蔽底層硬件,進行硬件系統的初始化并調用外設的驅動程序接口管理系統外設。當用戶開發目標板的BSP時,可以從所提供的BSP中選一個接近的來修改。根據基本的硬件信息來修改相應的BSP文件中的組成文件包括makefile,config.h,romInit. s,sysLn97xEnd.c等文件[4~5]。例如修改config. h 中定義的一些參數,使編譯出來的系統引導程序bootrom 和VxWorks 的映像符合要求,修改sysLn97xEnd.c 文件,以使系統的網絡功能正常運行。

修改完成后,開始編譯用戶定義的BSP,打開Tornado選擇build boot room,確保select a BSP的選項是自己命名的BSP名字,select an image to build->bootrom->select a tool->gnu。

當配置好后點擊OK進行編譯,成功后自定義的BSP就可以用了。

1.1 漢字字庫設置

WindML根據ISO8859-1標準為8位字符表示和UNICODE標準的16位字符表示提供了位圖字體集,WindML本身不支持中文顯示,想要實現中文顯示,要利用WindML中對雙字節編碼的支持實現漢字的點陣存儲、點陣獲取、點陣顯示的全過程[6~7]。一般從網上下載的字庫或用軟件轉換過來的字庫需要把相應的字庫C文件修改,否則放到ugl/fonts/bmf文件夾中后,配置WindML中的bitmap font項無法識別,也就是整個excluded和include都沒有字體庫,修改內容如圖2所示。

圖2 修改C文件內容

下載或轉換過來的字庫C文件沒有“/* Yahei12.c - Yahei_12 font for BMF font driver */”,WindML無法識別。在標準的編譯器里,不管是C還是 C++語言,“/* Yahei12.c - Yahei_12 font for BMF font driver */”都是被編譯器忽略掉的,但是在這里不能忽略掉,Yahei_12就是代表字庫中有Yahei 12中文字庫。改好這一點,WindML可以識別加進去的字庫,但是在編譯WindML時還會出現錯誤。要想解決問題,必須確保在所編譯的字體文件中有如下所示的文字,其具體的含義如下:

{

{24,24}, /*表示點陣大小 */

{UGL_FONT_BOLD_OFF,

UGL_FONT_BOLD_OFF},

UGL_FONT_UPRIGHT, /*表示斜體*/

UGL_FONT_PROPORTIONAL, /*表示行間距屬性*/

UGL_FONT_ISO_8859_1, /*表示字符集*/

"Yahei 12x12 Dot", /*表示字體名稱*/

"Yahei" /*表示字體系列名稱*/

}, /*點陣名稱等點陣屬性表 */

0, /*表示行間距*/

24, /*最大上偏移位置*/

0, /*最大下偏移位置*/

24, /*最大寬度*/

pageArray /*字形頁*/

}; /*點陣描述解構*/

上面所述就是點陣的基本結構,通過uglFont FindString(fontDrvId,”familyName=Yahei;pixelSiz e=16”,&systemFontDef)能找到自定義的字庫文件。

字體C文件的最后"Yahei 12x12 Dot"、"Yahei",一定要改為自定義文件名和相應的點陣,不然編譯WindML時會出現錯誤。

1.2 WindML的配置及編譯

WindML具體的配置如下:Tornado環境下打開Tools→WindML…,在WindML configuration選擇編譯的文件名,點擊configure進入WindML Configuration,在build選項中選擇處理器類型、工具等信息;在graphics driver中選擇開發板的圖形驅動,在display中選擇顯示器的型號,在圖形設置graphics setting配置顯示屏大小,刷新的頻率;在advanced選項中,如果需求圖片、視頻,可以選擇JPEG和double buffer 。新增漢字庫中的漢字編碼是雙字節,在編譯WindML時要把bitmap fonts 中的include Unicode support選上。

完成配置后點擊build開始編譯WindML,在此之前最好clean一次。

2 WindML漢字、圖形和JPEG圖片文件的顯示

2.1 漢字、圖形的顯示

在顯示漢字之前,必須初始化字體驅動和字體引擎,字體驅動在2D字體的API層和字體引擎之間提供接口,同時為圖形驅動程序和字體引擎扮演者服務的角色,其結構如圖3所示。

圖3 字體驅動與字體引擎

2D字體API:應用程序可以使用API來顯示文字,而不用考慮字體引擎本身的能力。這些API服務于WindML中所有的字體引擎。

字體驅動:字體驅動在2D字體API和字體引擎專有的API之間提供了一個抽象層。字體驅動也是顯示驅動以及字體引擎之間的接口。有了字體驅動層,應用程序就可以通過使用相同的2D字體API來訪問不同的字體引擎。

字體引擎:通過使用字體驅動的服務提供并顯示文字。

開發應用程序時,用uglInitialize()函數初始化字體引擎和字體驅動,用uglDeinitialize()銷毀字體引擎和字體驅動。用下面的函數找到設備標識符,輸入服務標識符,字體驅動標識符,具體的代碼如下:

if(uglInitialize() == UGL_STATUS_ERROR) {return

; } /*初始化字體引擎和字體驅動*/

pRegistryData=uglRegistryFind(UGL_DISPLAY_TY

PE, 0, 0, 0); /*在注冊表中找到相應的設

備號*/

deviceID = (UGL_DEVICE_ID)pRegistryData->id;

/*找到設備ID號*/

pRegistryData=uglRegistryFind(UGL_INPUT_SERV

ICE_TYPE, 0, 0, 0);

inputServiceId=(UGL_INPUT_SERVICE_ID)pRegis

tryData->id; /*找到輸入服務ID號*/

pRegistryData=uglRegistryFind(UGL_FONT_ENGI

NE_TYPE, 0, 0, 0);

fontDrvId=(UGL_FONT_DRIVER_ID)pRegistryDat a->id; /*找到字體驅動ID號*/

接下來,用函數uglCreateGc()來創建圖形上下文:

gc = uglGcCreate(deviceID); /*創建上下文*/

textOrigin = UGL_FONT_TEXT_UPPER_LEFT;

/*是文字的顯示從左上開始*/

uglFontDriverInfo(fontDrvId,

UGL_FONT_TEXT_ORIGIN, &textOrigin);

/*是文字的顯示從左上開始*/

uglFontFindString(fontDrvId, "familyName=Yahei;

pixelSize=24", &fontDef)

textFont = uglFontCreate(fontDrvId, &fontDef);

/*初始化自定義的文字字體大小樣式*/

uglColorAlloc (deviceID, &bgColor, UGL_NULL,

&textBgColor, 1); /*設置屏幕背景顏色*/

uglColorAlloc(deviceID, &foreColor, UGL_NULL,

&textForeColor, 1); /*設置屏幕前景顏色*/

uglForegroundColorSet(gc, textForeColor);

/*設置文字背景顏色

uglBackgroundColorSet(gc, textBgColor);

/*設置文字背景顏色*/

uglFontSet(gc, textFont);

/*設置字體的顏色和字體的背景顏色。*/

通過上面的步驟就可以調用uglTextDraw()函數顯示出單字節字符,調用uglTextDrawW()函數顯示出雙字節字符,uglRectangle(), uglEllipse()函數分別是畫矩形、圓圈和橢圓形狀,其具體的實例如圖4所示。

圖4 漢字圖形的顯示界面

2.2 JPEG圖片的顯示

WindML中2D位圖管理的API允許創建或者渲染單色、彩色、透明位圖到顯示器上。

VxWorks是一個實時操作系統,有硬盤等設備,要將JPEG圖片顯示在顯示屏上則需要把JPEG文件上傳到VxWorks的硬盤里,假設VxWorks的盤符為ata0a,利用ftp工具把JPEG文件上傳到VxWorks硬盤里。首先進入到VxWorks的virtual console控制臺界面中,輸入cd “/ata0a”,進入VxWorks硬盤,用ls命令查看硬盤里的文件,如果要將圖片文件放入一個新的文件夾就用命令mkdir image創建一個存放圖片的文件夾,創建后再次用ls命令查看是否已經成功的操作。打開ftp文件傳輸軟件把JPEG文件上傳到VxWorks硬盤中。

前期準備工作后,進行軟件代碼的編寫。WindML 2D設備和驅動的擴展機制為處理圖片數據奠定了基礎,使得WindML支持處理JPEG圖片。首先用函數uglJpegInit()初始化JPEG的擴展功能,驗證JPEG擴展功能為特別的圖形設備而安裝,初始化后uglJpegInit()函數會返回UGL_JPEG_ID,此ID號為以后的JPEG例程調用作為一個參數值而返回。

WindML定義了一種方便的點陣圖稱作DDB(設備有關位圖),如果要顯示的JPEG圖片較大,則花費在處理圖片的時間越長,因此要權衡圖片大小和處理時間。

顯示圖片除了需要初始化字體庫和設備標識符外還需要調用uglJpegInit()函數初始化JPEG庫和JPEG的擴展功能,這樣才能讓JPEG圖片顯示在界面上,初始化完成后會返回一個ID號,接著要設置JPEG引擎,具體的代碼如下:

jpegId = uglJpegInit(devId, &jpegVersion);

uglJpegModeSet(jpegId, &jpegMode);

把要顯示的JPEG圖片文件的內容讀到文件指針里,調用uglJpegToDDBFromFile()函數解壓縮后寫入到位圖中,然后調用uglBitmapBlt()函數把UGL_BITMAP_ID傳輸到UGL_DDB_ID中,并以UGL_GC_ID開始繪制圖片,以下是代碼:

uglJpegToDDBFromFile (jpegId, fp, &jpeg-DdbId, UGL_NULL, 0, 0);

uglBitmapSizeGet(jpegDdbId, &jpegWidth, &jpegHeight);

uglBitmapBlt(gc, jpegDdbId, 0, 0, jpegWidth -1, jpegHeight - 1, UGL_DEFAULT_ID, 0, 0);

本實例是利用WindML支持2D位圖的功能顯示出JPEG圖片,程序寫好后進行編譯,將其下載到目標板上,運行后在終端顯示如圖5所示。

圖5 JEPG圖片顯示結果

3 結束語

本文介紹了在WindML下開發字體、圖形及圖片文件的顯示,程序開發后能夠運行在具體的項目板上,同時對開發中可能出現的問題和解決方案做了詳細的步驟說明,應用于實際的開發項目中取得了良好的效果。

[1] 周啟平,張 楊,吳 瓊.VxWorks開發指南和Tornado實用手冊[M].北京:中國電力出版社,2004.

[2] 孫鳳麗,王 瑞,楊桂枝,等.實時嵌入式操作系統VxWorks結構分析和剪裁[J].軟件產業與工程,2013(1):33-36.

[3] 楊 蔚.基于VxWorks 的數據采集與重演軟件的圖形界面的設計與實現[J].宇航計測技術,2012,32(3):69-74.

[4] 王 洋.VxWorks嵌入式實時操作系統設備驅動與BSP開發設計[M].北京:北京航空航天大學出版社,2012.

[5] 王彥剛,呂遵明,萬留進.VxWorks系統的BSP設計與實現[J].計算機系統應用,2011,20(12):91-94.

[6] 劉亞麗,顏麗娟.一種基于VxWorks 的漢字輸入法實現[J].電子科技,2012,25(2):97-99.

[7] 韓改寧.嵌入式系統VxWorks下漢字輸入法的研究與實現[J].咸陽師范學院學報,2012,27(4):44 - 46.

責任編輯 陳 蓉

Chinese character, graphics interface and photo display under WindML

XU Xiaowu, YU Lijian, LIU Hongyu
( School of Information Science and Technology , Southwest Jiaotong University, Chengdu 610031, China)

VxWorks; WindML; text; graphics; image fi le

: This paper introduced the structure of WindML, focused on the development, described the principle of preceding text graphics character, structure and con fi guration, the preparatory work before displaying the picture fi le and the important note of WindML setting compile. With the development of speci fi c projects, the paper demonstrated the text, graphics, images, fi les, which were developed by WindML under VxWorks.

2014-03-04

胥小武,在讀碩士研究生;余立建,教授。

U29∶TP39

A

1005-8451(2014)08-0049-04

猜你喜歡
引擎
以學促干 挺膺擔當 激活砥礪前行的紅色引擎
江陰市“三個創新”打造危化品安全監管新引擎
新海珠,新引擎,新活力!
消費繼續發揮經濟增長第一引擎作用
消費導刊(2018年8期)2018-05-25 13:19:23
三生 三大引擎齊發力
藍谷: “涉藍”新引擎
商周刊(2017年22期)2017-11-09 05:08:31
休閑垂釣 傳統漁業新引擎
中國水產(2017年2期)2017-02-25 07:56:29
信息化,“盛京”加速的新引擎
中國衛生(2015年4期)2015-11-08 11:16:18
無形的引擎
河南電力(2015年5期)2015-06-08 06:01:46
基于Cocos2d引擎的PuzzleGame開發
主站蜘蛛池模板: 夜夜操国产| 亚洲码一区二区三区| 国产Av无码精品色午夜| 在线观看免费国产| 日本一区高清| 热99精品视频| 青青草欧美| 国产视频一二三区| 亚欧成人无码AV在线播放| 91九色最新地址| 国产永久免费视频m3u8| 亚洲日本中文字幕乱码中文| 亚洲国产成人麻豆精品| 亚洲自偷自拍另类小说| 日本欧美精品| 国产玖玖视频| 午夜一区二区三区| 色老二精品视频在线观看| 国产AV无码专区亚洲A∨毛片| 成年av福利永久免费观看| 日本三级精品| 久久永久精品免费视频| 亚洲精品国偷自产在线91正片| AV片亚洲国产男人的天堂| 尤物精品国产福利网站| 国产毛片不卡| 五月天综合婷婷| 99在线免费播放| 免费99精品国产自在现线| 久久精品人人做人人综合试看| 国产99视频免费精品是看6| 中日韩欧亚无码视频| 澳门av无码| 久爱午夜精品免费视频| 国产不卡国语在线| 日韩精品一区二区三区视频免费看| 四虎永久免费在线| 亚洲全网成人资源在线观看| 亚洲一区国色天香| 日本在线国产| 她的性爱视频| 亚洲区视频在线观看| a天堂视频在线| 亚洲无码91视频| 国产v精品成人免费视频71pao| 国产乱人伦AV在线A| 麻豆a级片| 天天综合亚洲| 噜噜噜久久| 国产无人区一区二区三区| 欧美国产日韩另类| 在线观看国产精品第一区免费| 四虎成人免费毛片| 亚洲无码久久久久| 中文字幕 日韩 欧美| 亚洲最猛黑人xxxx黑人猛交 | 无码人中文字幕| 日韩无码视频播放| 91毛片网| 亚洲免费福利视频| 凹凸国产分类在线观看| www.youjizz.com久久| 国产成人一二三| 亚洲人成亚洲精品| 日韩少妇激情一区二区| 亚洲精品欧美日本中文字幕| 久草网视频在线| 大乳丰满人妻中文字幕日本| 国产又色又刺激高潮免费看| 美女内射视频WWW网站午夜| 日本91视频| 国产麻豆精品久久一二三| 91啪在线| 国产综合精品日本亚洲777| 在线观看免费黄色网址| 波多野吉衣一区二区三区av| 中文字幕资源站| 自拍亚洲欧美精品| 午夜免费小视频| 中字无码精油按摩中出视频| 日韩欧美国产另类| 999国内精品久久免费视频|