<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設計應用 > 實(shí)現針對觸摸屏的輸入引擎移植解析方案

實(shí)現針對觸摸屏的輸入引擎移植解析方案

作者: 時(shí)間:2012-05-16 來(lái)源:網(wǎng)絡(luò ) 收藏

3.嵌入式GUI研究

3.1基于嵌入式Linux的GUI系統底層基礎

一個(gè)能夠兼容多硬件平臺的嵌入式GUI系統,應至少抽象出兩類(lèi)設備:基于圖形顯示設備(如VGA卡)的圖形抽象層 GAL(Graphic Abstract Layer)和基于設備(如鍵盤(pán),等)的抽象層 IAL(Input Abstract Layer)[3]。抽象層的概念類(lèi)似Linux內核虛擬文件系統的概念,它定義了一組不依賴(lài)于任何特殊硬件的抽象接口,所有頂層的圖形操作和處理都建立在抽象接口上,而用于該抽象接口的底層代碼稱(chēng)為“圖形”或“輸入”,類(lèi)似操作系統中的驅動(dòng)程序,這實(shí)際是一種面向對象的程序結構。利用該抽象接口,嵌入式GUI可以非常方便的到其他POSIX系統上,只需要根據抽象層接口新的即可。

3.2嵌入式GUI基本性能需求

嵌入式GUI應在基于操作系統的基礎上,為用戶(hù)提供豐富的圖形編程接口,使其能夠方便快速的編制界面友好的應用程序。

GUI模塊的性能指標為單位時(shí)間實(shí)例化個(gè)數,如下所列:

基本圖形繪制速度,即點(diǎn)、線(xiàn)、框、塊、圓、弧、橢圓等圖形單元繪制速度。在顯示設備可見(jiàn)范圍內任意位置產(chǎn)生隨機大小的基本圖形。量化指標為單位時(shí)間內繪制的個(gè)數,并以較長(cháng)測試時(shí)間中取得的單位時(shí)間平均值為準。

窗口創(chuàng )建速度。在顯示設備可見(jiàn)范圍內任意位置創(chuàng )建隨機大小的窗口。量化指標為單位時(shí)間內成功創(chuàng )建及繪制完畢的窗口個(gè)數,并以較長(cháng)測試時(shí)間中取單位時(shí)間平均值為準。

控件創(chuàng )建速度。在顯示設備可見(jiàn)范圍內任意位置創(chuàng )建隨機大小、包含隨機內容的窗口。量化指標為單位時(shí)間內成功創(chuàng )建及繪制完畢的控件個(gè)數,并以較長(cháng)測試時(shí)間中取單位時(shí)間平均值為準。

事件驅動(dòng)機制反應速度。窗口及不同控件的典型事件及耗時(shí)事件,測試其完成時(shí)間。窗口及控件的大小、復雜程度隨機產(chǎn)生。量化指標為單位時(shí)間內成功處理完畢的事件數,并以較長(cháng)測試時(shí)間中取單位時(shí)間平均值為準。

3.3輸入引擎

在基于Linux的嵌入式系統中,輸入設備可能只有和為數不多的按鍵,相對圖形引擎來(lái)說(shuō),輸入設備的處理沒(méi)有統一接口,在此情況下,提供一個(gè)抽象的輸入層,顯得尤為重要。

這里我們參考MiniGUI,并結合實(shí)際工程機械控制系統來(lái)實(shí)現輸入引擎的工作。MiniGUI簡(jiǎn)單可分為三層,最頂層為API,即編程接口;中間層是 MiniGUI的核心層,其中包括了窗口系統必不可少的各個(gè)模塊,如消息事件處理模塊、圖形設備接口等;而最底層則是GAL和IAL。

該實(shí)際工程機械控制系統擬采用作為主要的輸入設備,需要編寫(xiě)自己的輸入引擎。首先定義一個(gè)結構體用來(lái)從觸摸屏設備(/dev/ts)中接受數據,結構體定義如下:

typedef struct

{

unsigned short b; //觸摸屏狀態(tài)(是否被點(diǎn)擊)

unsigned short x; //觸摸屏x坐標

unsigned short y; //觸摸屏y坐標

unsigned short pad; //32位填充域,無(wú)實(shí)際意義

} POS;

接下來(lái)定義輸入引擎的初始化函數,該函數打開(kāi)觸摸屏設備文件:/dev/ts,類(lèi)似PC上的/dev/psaux設備。在成功打開(kāi)設備文件后,該函數通過(guò) mouse_getxy和mouse_getbutton等函數將獲得的狀態(tài)信息通過(guò)INPUT結構體傳遞給GUI應用程序。

BOOl InitPADInput (INPUT*input,const char*mdev,const char*mtype)

{

ts = open(“/dev/ts”, O_RDONLY);

if (ts0) {

fprintf (stderr, “PAD:Can not open touch screen! ”);

return FALSE;

}

……

input->get_mouse_xy=mouse_getxy;

input->get_mouse_button=mouse_getbutton;

……

}

static void mouse_getxy(int* x, int* y)

{

*x=mousex;

*y=mousey;

}

static int mouse_getbutton(void)

{

return pos.b;

}



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>