基于Microwindows的嵌入式GUI分析及應(yīng)用
在Microwindows 上的API 接口函數(shù)的基本模型都是用來(lái)初始化屏幕、鍵盤(pán)和鼠標(biāo)的驅(qū)動(dòng)程序,然后一直等待select () 消息循環(huán)。當(dāng)事件發(fā)生時(shí),這條信息將送到用戶程序。如果是用戶請(qǐng)求圖形操作,那參數(shù)將被編碼后送到適當(dāng)?shù)腉dXXX 核心程序上。與原始圖形操作相對(duì)的窗口概念是被該層所控制的,也就是說(shuō)該層的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 模式,一般是通過(guò)Unix Domain socket 在客戶與服務(wù)器端進(jìn)行通信的,但沒(méi)有實(shí)現(xiàn)窗口管理,所以對(duì)窗口的處理需要使用系統(tǒng)提供的一個(gè)插件集,或者完全由應(yīng)用程序員自已開(kāi)發(fā)。另外,Nano-X 不是消息驅(qū)動(dòng)的,而是基于X 協(xié)議模式。在這種模式下,驅(qū)動(dòng)整個(gè)系統(tǒng)運(yùn)行的可以說(shuō)是請(qǐng)求與事件。
請(qǐng)求就是客戶端為了完成某一動(dòng)作而對(duì)服務(wù)器端所發(fā)出的申請(qǐng),并且為每一個(gè)請(qǐng)求都定義了一個(gè)標(biāo)識(shí)數(shù)。每個(gè)請(qǐng)求的結(jié)構(gòu)都是不同的,但類似如下結(jié)構(gòu):
事件是每個(gè)窗口系統(tǒng)必不可少的部分,它反映系統(tǒng)運(yùn)行的狀態(tài),一共有22 種。對(duì)于每個(gè)事件都要提供有關(guān)它的結(jié)構(gòu),但沒(méi)有必要提供22 種事件結(jié)構(gòu),有一些事件所需要的數(shù)據(jù)是一樣的,如所有鼠標(biāo)的事件都使用一個(gè)事件結(jié)構(gòu)表示,如下所示:
Microwindows 在仿真環(huán)境下的應(yīng)用
Microwindows 最為顯著的優(yōu)勢(shì)在于它可以在桌面計(jì)算機(jī)上仿真運(yùn)行目標(biāo)平臺(tái)的GUI 及其支撐軟件。這就意味著面向Linux 的Microwindows 應(yīng)用軟件可以在桌面計(jì)算機(jī)的Linux 環(huán)境下編制和調(diào)試,而沒(méi)有必要建立跨平臺(tái)交叉編譯環(huán)境,并在目標(biāo)平臺(tái)上對(duì)軟件進(jìn)行編制和調(diào)試。這一點(diǎn)對(duì)于Embedded GUI 移植和開(kāi)發(fā)而言,意義非同尋常。這完全歸功于Microwindows 的X Screen Driver ,而非Linux 的Framebuffer 。
評(píng)論