新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于Linux的嵌入式GUI研究與應用

        基于Linux的嵌入式GUI研究與應用

        作者: 時間:2012-03-24 來源:網絡 收藏

        3.2基本性能需求

        應在基于操作系統的基礎上,為用戶提供豐富的圖形編程接口,使其能夠方便快速的編制界面友好的應用程序。
        GUI模塊的性能指標為單位時間實例化個數,如下所列:
        基本圖形繪制速度,即點、線、框、塊、圓、弧、橢圓等圖形單元繪制速度。在顯示設備可見范圍內任意位置產生隨機大小的基本圖形。量化指標為單位時間內繪制的個數,并以較長測試時間中取得的單位時間平均值為準。
        窗口創建速度。在顯示設備可見范圍內任意位置創建隨機大小的窗口。量化指標為單位時間內成功創建及繪制完畢的窗口個數,并以較長測試時間中取單位時間平均值為準。
        控件創建速度。在顯示設備可見范圍內任意位置創建隨機大小、包含隨機內容的窗口。量化指標為單位時間內成功創建及繪制完畢的控件個數,并以較長測試時間中取單位時間平均值為準。
        事件驅動機制反應速度。針對窗口及不同控件的典型事件及耗時事件,測試其完成時間。窗口及控件的大小、復雜程度隨機產生。量化指標為單位時間內成功處理完畢的事件數,并以較長測試時間中取單位時間平均值為準。

        3.3移植

        在基于的嵌入式系統中,輸入設備可能只有觸摸屏和為數不多的按鍵,相對圖形引擎來說,輸入設備的處理沒有統一接口,在此情況下,提供一個抽象的輸入層,顯得尤為重要。
        這里我們參考MiniGUI,并結合實際工程機械控制系統來實現的移植工作。MiniGUI簡單可分為三層,最頂層為API,即編程接口;中間層是 MiniGUI的核心層,其中包括了窗口系統必不可少的各個模塊,如消息事件處理模塊、圖形設備接口等;而最底層則是GAL和IAL。
        該實際工程機械控制系統擬采用觸摸屏作為主要的輸入設備,需要編寫自己的。首先定義一個結構體用來從觸摸屏設備(/dev/ts)中接受數據,結構體定義如下:
        typedefstruct
        {
        unsignedshortb;//觸摸屏狀態(是否被點擊)
        unsignedshortx;//觸摸屏x坐標
        unsignedshorty;//觸摸屏y坐標

        unsignedshortpad;//32位填充域,無實際意義
        }POS;
        接下來定義輸入引擎的初始化函數,該函數打開觸摸屏設備文件:/dev/ts,類似PC上的/dev/psaux設備。在成功打開設備文件后,該函數通過 mouse_getxy和mouse_getbutton等函數將獲得的狀態信息通過INPUT結構體傳遞給GUI應用程序。
        BOOlInitPADInput(INPUT*input,constchar*mdev,constchar*mtype)
        {
        ts=open(“/dev/ts”,O_RDONLY);
        if(ts0){
        fprintf(stderr,“PAD:Cannotopentouchscreen!n”);
        returnFALSE;
        }
        ……
        input->get_mouse_xy=mouse_getxy;
        input->get_mouse_button=mouse_getbutton;
        ……
        }
        staticvoidmouse_getxy(int*x,int*y)
        {
        *x=mousex;
        *y=mousey;
        }
        staticintmouse_getbutton(void)
        {
        returnpos.b;
        }
        最后通過wait_event函數調用select系統調用,當select系統調用返回值大于0時,該函數檢查是否有可讀的數據等待讀取,如果是,則從該文件描述符中讀取觸摸屏數據。
        限于篇幅原因,這里只列出了其中輸入引擎的移植代碼中較為關鍵的部分。代碼編寫完成后,還需要在“/src/ial/ial.c”中添加自定義的輸入引擎的入口項。
        staticINPUTinputs[]=
        {……
        #ifdef_PC104_IAL
        {"pc104",InitYKInput,TermYKInput},
        #endif
        ……
        }

        4.結束語

        本文具體介紹了作為嵌入式操作系統的實現方法,結合技術,在PC104主板上利用創建了一個擁有用戶界面的微型操作系統,并通過對抽象層接口及相關技術的分析,自定義輸入引擎,實現了設備的可定制,在實際工程機械項目中有較大的實用價值和市場前景。
        創新點:利用Linux在嵌入式主板上搭建了一個微型操作系統,在此基礎上實現了針對觸摸屏的輸入引擎的移植。

        參考文獻:
        [1]GRUB主頁[EB].http://www.gnu.org/software/grub
        [2]Linux內核主頁[EB].http://www.kernel.org
        [3]魏永明等.Linux/uClinux+MiniGUI:嵌入式系統開發原理、工具及過程[M].北京:飛漫軟件公司,2006
        [4]馬記平等.嵌入式Linux操作系統在PC104上的實現[J].微計算機信息,2007,2-2:39-41

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

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 古蔺县| 兰溪市| 任丘市| 河北省| 民权县| 木兰县| 鄯善县| 青冈县| 安阳县| 聂拉木县| 建平县| 大英县| 平远县| 吉木萨尔县| 香格里拉县| 云南省| 莲花县| 永川市| 丹棱县| 长乐市| 肥东县| 博客| 贵定县| 万年县| 左权县| 永仁县| 如皋市| 喀什市| 衡东县| 阿勒泰市| 尼木县| 靖州| 宁安市| 河池市| 庆阳市| 长春市| 中阳县| 宁武县| 东丽区| 桐乡市| 安乡县|