一種龍芯手持機MiniGUI觸摸屏驅(qū)動實現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及嵌入式技術(shù)領(lǐng)域,尤其涉及一種龍芯手持機MiniGUI觸摸屏驅(qū)動實現(xiàn)方法。
【背景技術(shù)】
[0002]MiniGUI是一款面向嵌入式系統(tǒng)的高級窗口系統(tǒng)和圖形用戶界面支持系統(tǒng),歷經(jīng)十余年時間發(fā)展,它性能優(yōu)良、功能豐富,成為一款優(yōu)秀的國產(chǎn)嵌入式操作系統(tǒng)。支持Linux/uClinux、eCos、uC/OS-11、VxWorks、ThreadX、Nucleus、pS0S、0SE 等操作系統(tǒng)和數(shù)十種SoC芯片,已驗證的硬件平臺包括ARM、MIPS、IA、PowerPC、M68K、Intel x86等等,廣泛應(yīng)用于嵌入式系統(tǒng)領(lǐng)域。
[0003]龍芯處理器是第一款國產(chǎn)芯片,現(xiàn)在發(fā)展分為三類:龍芯I號(嵌入式)、龍芯2號(桌面)、龍芯3號(服務(wù)器)。隨著國產(chǎn)化步伐加快,基于龍芯IA處理器的手持機也應(yīng)運而生,由于龍芯IA處理器性能較低,不適合運行大型操作系統(tǒng),可以在上面移植嵌入式操作系統(tǒng),而Mini⑶I是一個很不錯的選擇。
[0004]MiniGUI輸入抽象層(Input Abstract1n Layer,IAL),將 MiniGUI 涉及的所有輸入設(shè)備,如鍵鼠和觸摸屏等抽象了出來,為上層提供一致的接口。但MiniGUI未考慮很全面,在輸入引擎中,鍵鼠和觸摸屏不可以同時使用,這會導(dǎo)致手持機中可以使用鍵鼠,就不可以使用觸摸屏(或者可以使用觸摸屏,不能使用鍵鼠)的問題。
【發(fā)明內(nèi)容】
[0005]為了解決以上的技術(shù)問題,本文提出了一種龍芯手持機MiniGUI觸摸屏驅(qū)動實現(xiàn)方法。
[0006]本發(fā)明的主要目的是MiniGUI中鍵鼠和觸摸屏不可以同時使用問題,基于龍芯手持機,提出了一種Mini⑶I觸摸屏驅(qū)動實現(xiàn)方法。本發(fā)明實現(xiàn)方法為改寫IAL層的native引擎,加入觸摸屏的驅(qū)動,讓其不僅可以使用鍵鼠,還可以同時使用觸摸屏。本發(fā)明主要創(chuàng)新點是在MiniGUI中可以同時使用鍵鼠和觸摸屏,解決鍵鼠和觸摸屏不能同時使用的問題。
[0007]本發(fā)明基于龍芯手持機,但實現(xiàn)方法不僅限于此,實現(xiàn)方案如下:
1、本發(fā)明首先要實現(xiàn)miniGUI在龍芯手持機上的移植,主要移植的庫和文件包括:busybox、freetype、jpeg、png、zlib、tslib、Iibminigu1、Iibmgplus、minigui_res、mg-samples。其移植過程不在此進行贅述,但是tslib庫是觸摸屏驅(qū)動庫,必須要進行移植。
[0008]2、移植完成后就需要修改I ibminigui庫中IAL層的native引擎,native引擎主要包括如下函數(shù):InitNativeInput、TermNat ive Input、Mouse_update、Mouse_getxy、Mouse_getbutton、Keyboard_update、Keyboard_state、Wait_event ο 其中 Ini tNat ive Input、TermNat ive Input分別代表輸入設(shè)備的初始化和終止輸入設(shè)備而Mouse—update、Mouse—getxy、Mouse—36七1311^011三個函數(shù)可以分別獲取鼠標(biāo)的狀態(tài)、位置、點擊1671303『(1—update、Keyboard—state兩相函數(shù)可以獲取鍵盤的相應(yīng)狀態(tài)D最重要的是Wait—event函數(shù),它是native引擎的核心,該函數(shù)檢查鍵鼠是否有可讀的數(shù)據(jù)等待讀取,如果是,則分別讀取相應(yīng)數(shù)據(jù)。
[0009]3、由于native引擎中本身存在鼠標(biāo)的位置和點擊狀態(tài)獲取,觸摸屏鼠標(biāo)的位置和點擊狀態(tài)的變量延用native引擎本身變量,所以Mouse_getxy、Mouse_getbutton不需要修改,需要修改的函數(shù)只包括Ini tNat ive Input、TermNat ivelnput、Mouse_update、Wai t_evento
[0010]4、首先,修改Ini tNat ivelnput、TermNativeInput 函數(shù),在 Ini tNat ive Input 函數(shù)中依賴tslib庫文件加入觸摸屏的打開函數(shù),在TermNativeInput函數(shù)加入觸摸屏關(guān)閉函數(shù)。
[0011 ] 5、其次,Mouse_update更新鼠標(biāo)的位置和點擊狀態(tài),通過ts_read函數(shù)讀取出觸摸屏鼠標(biāo)狀態(tài),并分別賦值給xpos、ypos、buttons變量,然后三種變量通過Mouse_getxy、Mouse_getbutton將值傳遞給系統(tǒng)顯示。
[0012]6、再次,Wait_event中執(zhí)照原先鼠標(biāo)添加處理函數(shù),一是如果觸摸屏的文件描述符不存在,則需要重新打開觸摸屏,二是如果有鼠標(biāo)事件,則先檢測觸摸屏文件描述符是否存在,如果存在則檢測觸摸屏文件描述符是否可讀,如果可讀則返回一個標(biāo)志IAL_MOUSEEVENT,如果文件描述符非法則直接關(guān)閉觸摸屏。
[0013]7、最后,按以上步驟修改完成后,在手持機上試驗,發(fā)現(xiàn)當(dāng)提起觸摸筆后,鼠標(biāo)會亂跑,對照原碼分析,是由于觸摸屏與鼠標(biāo)相互干擾導(dǎo)致,解決此問題的方法為,一是在ffait_event中,如果觸摸屏事件發(fā)生,則讓鼠標(biāo)的文件描述符失效;二是在Mouse_update中,更新完觸摸屏事件后,如果觸摸屏被點擊,或者鼠標(biāo)的文件描述符失效,都直接返回。這樣就可以解決觸摸筆提起后鼠標(biāo)亂跑的問題。
【附圖說明】
[0014]圖1是Mini⑶I系統(tǒng)結(jié)構(gòu)圖;
圖2是native引擎的結(jié)構(gòu)圖;
圖3是觸摸屏驅(qū)動流程圖。
【具體實施方式】
[0015]下面參照附圖對本發(fā)明的內(nèi)容進行更加詳細的闡述:
如圖1所示,本發(fā)明首先要實現(xiàn)miniGUI在龍芯手持機上的移植,主要移植的庫和文件包括:busybox、freetype、jpeg、png、zlib、tslib、I ibminigu1、I ibmgplus、minigu1-res、mg-samp Ies0其移植過程不在此進行贅述,但是ts I ib庫是觸摸屏驅(qū)動庫,必須要進行移植。
[0016]如圖2所示,移植完成后就需要修改I ibminigui庫中IAL層的native引擎,native引擎主要包括如下函數(shù):InitNativeInput、TermNativeInput、Mouse_update、Mouse_getxy、Mous e_get but ton、Key boar d_update、Keybo ar d_ state、Wait_e vent。其中Ini tNat ive Input、TermNat ive Input分別代表輸入設(shè)備的初始化和終止輸入設(shè)備。而Mouse_update、Mouse_getxy、Mouse_getbutton三個函數(shù)可以分別獲取鼠標(biāo)的狀態(tài)、位置、點擊。Keyboard_update、Keyboard_state兩相函數(shù)可以獲取鍵盤的相應(yīng)狀態(tài)。最重要的是Wai t_event函數(shù),它是native引擎的核心,該函數(shù)檢查鍵鼠是否有可讀的數(shù)據(jù)等待讀取,如果是,則分別讀取相應(yīng)數(shù)據(jù)。
[0017]如圖3所示,由于native引擎中本身存在鼠標(biāo)的位置和點擊狀態(tài)獲取,觸摸屏鼠標(biāo)的位置和點擊狀態(tài)的變量延用native引擎本身變量,所以Mouse_getxy、Mouse_getbutton不需要修改,需要修改的函數(shù)只包括InitNati velnput、TermNat ivelnput、Mouse_update、Wait_event0
[0018]首先,修改InitNativelnput、TermNati velnput 函數(shù),在Ini tNat ivelnput函數(shù)中依賴tslib庫文件加入觸摸屏的打開函數(shù),在TermNativeInput函數(shù)加入觸摸屏關(guān)閉函數(shù)。
[0019]其次,Mouse_update更新鼠標(biāo)的位置和點擊狀態(tài),通過ts_read函數(shù)讀取出觸摸屏鼠標(biāo)狀態(tài),并分別賦值給xpos、ypos、buttons變量,然后三種變量通過Mouse_getxy、Mouse_getbutton將值傳遞給系統(tǒng)顯示。
[0020]再次,Wait_event中執(zhí)照原先鼠標(biāo)添加處理函數(shù),一是如果觸摸屏的文件描述符不存在,則需要重新打開觸摸屏,二是如果有鼠標(biāo)事件,則先檢測觸摸屏文件描述符是否存在,如果存在則檢測觸摸屏文件描述符是否可讀,如果可讀則返回一個標(biāo)志IAL_MOUSEEVENT,如果文件描述符非法則直接關(guān)閉觸摸屏。
[0021 ]最后,按以上步驟修改完成后,在手持機上試驗,發(fā)現(xiàn)當(dāng)提起觸摸筆后,鼠標(biāo)會亂跑,對照原碼分析,是由于觸摸屏與鼠標(biāo)相互干擾導(dǎo)致,解決此問題的方法為,一是在Wait_event中,如果觸摸屏事件發(fā)生,則讓鼠標(biāo)的文件描述符失效;二是在Mouse_update中,更新完觸摸屏事件后,如果觸摸屏被點擊,或者鼠標(biāo)的文件描述符失效,都直接返回。這樣就可以解決觸摸筆提起后鼠標(biāo)亂跑的問題。
【主權(quán)項】
1.一種龍芯手持機Mini⑶I觸摸屏驅(qū)動實現(xiàn)方法,其特征在于, 1)、首先要實現(xiàn)miniGUI在龍芯手持機上的移植,主要移植的庫和文件包括:busybox、freetype、jpeg、png、zlib、tslib、Iibminigu1、libmgpIus、minigu1-res、mg-sampIes; 2)、移植完成后就需要修改libminigui庫中IAL層的native引擎,native引擎主要包括如下函數(shù):InitNativeInput、TermNativeInput、Mouse_update、Mouse_getxy、Mouse_getbutton、Keyboard_update、Keyboard_state、Wait_event; 其中,InitNativeInput、TermNativeInput分別代表輸入設(shè)備的初始化和終止輸入設(shè)備; Mouse_update、Mouse_getxy、Mouse_getbutton三個函數(shù)可以分別獲取鼠標(biāo)的狀態(tài)、位置、點擊; Wait_event,是native引擎的核心,該函數(shù)檢查鍵鼠是否有可讀的數(shù)據(jù)等待讀取,如果是,則分別讀取相應(yīng)數(shù)據(jù); 3)、修改完成后,在手持機上試驗,發(fā)現(xiàn)當(dāng)提起觸摸筆后,鼠標(biāo)會亂跑,對照原碼分析,是由于觸摸屏與鼠標(biāo)相互干擾導(dǎo)致,解決此問題的方法為,一是在Wait_eVent中,如果觸摸屏事件發(fā)生,則讓鼠標(biāo)的文件描述符失效;二是在MoUSe_Update中,更新完觸摸屏事件后,如果觸摸屏被點擊,或者鼠標(biāo)的文件描述符失效,都直接返回。2.根據(jù)權(quán)利要求1所述的方法,其特征在于, 需要修改的函數(shù)只包括InitNat ive Input、TermNative Input、Mous e_update、Wait_evento3.根據(jù)權(quán)利要求2所述的方法,其特征在于, I)、首先,修改InitNativeInput、TermNativeInput函數(shù),在InitNativeInput函數(shù)中依賴tslib庫文件加入觸摸屏的打開函數(shù),在TermNativeInput函數(shù)加入觸摸屏關(guān)閉函數(shù); 2)、其次,Mouse_update更新鼠標(biāo)的位置和點擊狀態(tài),通過t s_read函數(shù)讀取出觸摸屏鼠標(biāo)狀態(tài),并分別賦值給xpos、ypos、buttons變量,然后三種變量通過Mouse_getxy、Mouse_getbutton將值傳遞給系統(tǒng)顯示; 3)、再次,Wait_event中執(zhí)照原先鼠標(biāo)添加處理函數(shù),一是如果觸摸屏的文件描述符不存在,則需要重新打開觸摸屏,二是如果有鼠標(biāo)事件,則先檢測觸摸屏文件描述符是否存在,如果存在則檢測觸摸屏文件描述符是否可讀,如果可讀則返回一個標(biāo)志IAL_MOUSEEVENT,如果文件描述符非法則直接關(guān)閉觸摸屏。
【專利摘要】本發(fā)明提供一種龍芯手持機MiniGUI觸摸屏驅(qū)動實現(xiàn)方法,屬于嵌入式技術(shù)領(lǐng)域,本發(fā)明實現(xiàn)方法為改寫IAL層的native引擎,加入觸摸屏的驅(qū)動,讓其不僅可以使用鍵鼠,還可以同時使用觸摸屏。本發(fā)明特點是在MiniGUI中可以同時使用鍵鼠和觸摸屏,解決鍵鼠和觸摸屏不能同時使用的問題。
【IPC分類】G06F13/10
【公開號】CN105512057
【申請?zhí)枴緾N201510820678
【發(fā)明人】吳登勇, 王則陸, 陳亮甫
【申請人】山東超越數(shù)控電子有限公司
【公開日】2016年4月20日
【申請日】2015年11月24日