基于Microwindows的嵌入式GUI分析及應用
在Microwindows 上的API 接口函數的基本模型都是用來初始化屏幕、鍵盤和鼠標的驅動程序,然后一直等待select () 消息循環。當事件發生時,這條信息將送到用戶程序。如果是用戶請求圖形操作,那參數將被編碼后送到適當的GdXXX 核心程序上。與原始圖形操作相對的窗口概念是被該層所控制的,也就是說該層的API 函數定義了窗口及其對應系統的概念。這樣,系統坐標就能被轉成屏幕上顯示的坐標,并且可將數據傳給GdXXX 核心程序,由它進行實際操作。該層亦定義圖形/ 顯示文件,并且會將此信息(包括裁減信息) 送到核心程序上。
Microwindows 的API 支持大多數圖形繪制、裁減、窗口工具條繪制及拖拉窗口等程序。Nano-X 最先是由Davin Bell 為minix 設計的,它被設計為C/ S 模式,一般是通過Unix Domain socket 在客戶與服務器端進行通信的,但沒有實現窗口管理,所以對窗口的處理需要使用系統提供的一個插件集,或者完全由應用程序員自已開發。另外,Nano-X 不是消息驅動的,而是基于X 協議模式。在這種模式下,驅動整個系統運行的可以說是請求與事件。
請求就是客戶端為了完成某一動作而對服務器端所發出的申請,并且為每一個請求都定義了一個標識數。每個請求的結構都是不同的,但類似如下結構:
事件是每個窗口系統必不可少的部分,它反映系統運行的狀態,一共有22 種。對于每個事件都要提供有關它的結構,但沒有必要提供22 種事件結構,有一些事件所需要的數據是一樣的,如所有鼠標的事件都使用一個事件結構表示,如下所示:
Microwindows 在仿真環境下的應用
Microwindows 最為顯著的優勢在于它可以在桌面計算機上仿真運行目標平臺的GUI 及其支撐軟件。這就意味著面向Linux 的Microwindows 應用軟件可以在桌面計算機的Linux 環境下編制和調試,而沒有必要建立跨平臺交叉編譯環境,并在目標平臺上對軟件進行編制和調試。這一點對于Embedded GUI 移植和開發而言,意義非同尋常。這完全歸功于Microwindows 的X Screen Driver ,而非Linux 的Framebuffer 。
評論