<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于Microwindows的嵌入式GUI設(shè)計(jì)

          基于Microwindows的嵌入式GUI設(shè)計(jì)

          作者: 時(shí)間:2011-01-24 來源:網(wǎng)絡(luò) 收藏

          microwindows 的api

            microwindows 采用分層體系結(jié)構(gòu)設(shè)計(jì),提供了豐富的api 支持,支持win32/ wince gdi 和nano-x兩種api 集。

          microwindows 體系結(jié)構(gòu)

            microwindows 的體系結(jié)構(gòu)由下至上,分別為具體硬件、驅(qū)動(dòng)層、圖形引擎層和api 層,如圖1 所示。用戶可以根據(jù)具體應(yīng)用需求對(duì)不同層的代碼進(jìn)行修改或重寫。

            (1) 設(shè)備驅(qū)動(dòng)程序。

            鍵盤驅(qū)動(dòng)程序主要有兩個(gè),分別是kbd _ tty. c 和kbd _ bios. c 。前者主要用于linux 和el ks 系統(tǒng),而后者主要用于msdos 實(shí)模式。

            鼠標(biāo)驅(qū)動(dòng)程序主要有三個(gè):mou_gpm. c ,用于linux 的一個(gè)gpm 驅(qū)動(dòng); mou _ ser. c ,用于linux 和el ks 系統(tǒng);mou_gpm. c ,主要用于msdos 系統(tǒng)。

            屏幕驅(qū)動(dòng)程序有面向16 位el ks、msdos 實(shí)模式的v ga 驅(qū)動(dòng)( scr_bios. c、vgaplan4. c、memp14. c 、scr_here. c)和面向linux 的framebuffer ( scr_fb. c、fb. c 等) 兩種。這部分驅(qū)動(dòng)程序最復(fù)雜,在設(shè)計(jì)時(shí)可以參考scr_fb. c 來設(shè)計(jì)自己的屏幕驅(qū)動(dòng)程序。

            (2) 設(shè)備獨(dú)立的圖形引擎。

            microwindows 的圖形引擎是設(shè)備獨(dú)立的。引擎的每一例程都接受screendevice 結(jié)構(gòu)的指針( psd) 來作為第一個(gè)參數(shù)。psd 說明了底層的顯示細(xì)節(jié),如屏幕大小的x 、y 值,屏幕顏色ncolors ,以及諸如打開、關(guān)閉、畫線等函數(shù)指針。


          microwindows 的api

            microwindows 提供兩個(gè)應(yīng)用程序接口:一是win32 接口,這種api 不是很成熟;二是nano-x ,這種api 比較好,結(jié)構(gòu)上清晰,功能上也完全。

            在microwindows 上的api 接口函數(shù)的基本模型都是用來初始化屏幕、鍵盤和鼠標(biāo)的驅(qū)動(dòng)程序,然后一直等待select () 消息循環(huán)。當(dāng)事件發(fā)生時(shí),這條信息將送到用戶程序。如果是用戶請求圖形操作,那參數(shù)將被編碼后送到適當(dāng)?shù)膅dxxx 核心程序上。與原始圖形操作相對(duì)的窗口概念是被該層所控制的,也就是說該層的api 函數(shù)定義了窗口及其對(duì)應(yīng)系統(tǒng)的概念。這樣,系統(tǒng)坐標(biāo)就能被轉(zhuǎn)成屏幕上顯示的坐標(biāo),并且可將數(shù)據(jù)傳給gdxxx 核心程序,由它進(jìn)行實(shí)際操作。該層亦定義圖形/ 顯示文件,并且會(huì)將此信息(包括裁減信息) 送到核心程序上。

            microwindows 的api 支持大多數(shù)圖形繪制、裁減、窗口工具條繪制及拖拉窗口等程序。nano-x 最先是由davin bell 為minix 設(shè)計(jì)的,它被設(shè)計(jì)為c/ s 模式,一般是通過unix domain socket 在客戶與服務(wù)器端進(jìn)行通信的,但沒有實(shí)現(xiàn)窗口管理,所以對(duì)窗口的處理需要使用系統(tǒng)提供的一個(gè)插件集,或者完全由應(yīng)用程序員自已開發(fā)。另外,nano-x 不是消息驅(qū)動(dòng)的,而是基于x 協(xié)議模式。在這種模式下,驅(qū)動(dòng)整個(gè)系統(tǒng)運(yùn)行的可以說是請求與事件。

            請求就是客戶端為了完成某一動(dòng)作而對(duì)服務(wù)器端所發(fā)出的申請,并且為每一個(gè)請求都定義了一個(gè)標(biāo)識(shí)數(shù)。每個(gè)請求的結(jié)構(gòu)都是不同的,但類似如下結(jié)構(gòu):

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 下一頁

          關(guān)鍵詞: 嵌入式

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();