專利名稱:一種模擬按鍵設備的模擬器及其實現(xiàn)方法
技術領域:
本發(fā)明涉及軟件領域,尤其涉及一種模擬按鍵設備的模擬器及其實現(xiàn)方法。
背景技術:
現(xiàn)有技術中,移動終端開發(fā)過程包括軟件開發(fā)和硬件開發(fā)兩個部分,在按鍵設備相關的軟件開發(fā)過程中,經(jīng)常需要在實際的按鍵設備硬件上進行調試,如果按鍵設備硬件沒有準備好,相關的軟件開發(fā)就難以順利進行,如果軟件開發(fā)以及調試能夠在軟件程序上進行操作,則會大大提高軟件開發(fā)效率。而現(xiàn)有技術中,又沒有能夠模擬按鍵設備硬件功能的軟件程序,導致按鍵設備相關的軟件開發(fā)效率較低。因此,現(xiàn)有技術還有待于改進和發(fā)展。
發(fā)明內容
鑒于上述現(xiàn)有技術的不足,本發(fā)明的目的在于提供一種模擬按鍵設備的模擬器及其實現(xiàn)方法,旨在解決現(xiàn)有的移動終端開發(fā)過程中按鍵設備相關的軟件開發(fā)無法在軟件程序上進行操作、開發(fā)效率低的問題。本發(fā)明的技術方案如下
一種模擬按鍵設備的模擬器實現(xiàn)方法,其中,包括步驟
A、設置一包括模擬驅動及模擬n模塊的模擬器,所述模擬驅動提供給應用程序第一接口以及提供給模擬Ui模塊第二接口,在所述模擬驅動中設置有一用于存放按鍵鍵值的緩沖區(qū);
B、所述模擬UI模塊接收到模擬動作指令后,通過第二接口寫入至模擬驅動;
C、所述應用程序通過所述第一接口從所述模擬驅動中讀取模擬動作指令,并根據(jù)所述模擬動作指令進行相應的動作,實現(xiàn)對按鍵設備的模擬。一種采用所述的實現(xiàn)方法模擬按鍵設備的模擬器,其中,所述模擬器包括模擬驅動及模擬UI模塊;
所述模擬驅動,用于提供給應用程序第一接口以及提供給模擬UI模塊第二接口,在所述模擬驅動中設置有一用于存放按鍵鍵值的緩沖區(qū);
所述模擬UI模塊,用于將接收到的模擬動作指令通過第二接口寫入至模擬驅動,所述應用程序通過所述第一接口從所述模擬驅動中讀取模擬動作指令,并根據(jù)所述模擬動作指令進行相應的動作,實現(xiàn)對按鍵設備的模擬。所述模擬按鍵設備的模擬器,其中,所述緩沖區(qū)內同時存放按鍵鍵值數(shù)量的最大值為31個。所述模擬按鍵設備的模擬器,其中,所述緩沖區(qū)中設置有用于表示緩沖區(qū)容量大小的頭指針及尾指針。所述模擬按鍵設備的模擬器,其中,所述第一接口包括用于打開按鍵設備、關閉按鍵設備及讀取按鍵鍵值的接口。
所述模擬按鍵設備的模擬器,其中,所述第二接口包括用于控制按鍵設備狀態(tài)的接口。有益效果本發(fā)明通過設置模擬驅動及模擬UI模塊,由該模擬驅動提供給應用程序第一接口以及提供給模擬UI模塊第二接口,應用程序從該模擬驅動中讀取模擬動作指令,并根據(jù)所述模擬動作指令進行相應的動作,實現(xiàn)對按鍵的模擬。通過本發(fā)明的模擬器,應用程序的開發(fā)人員可以獨立于實際的按鍵來進行軟件開發(fā),操作起來非常方便,并且模擬效果逼真,只需要保證第一接口與真實硬件中的第一接口的軟件功能一致,即可保證應用程序在真實的按鍵中也可實現(xiàn),所以本發(fā)明的模擬器即使被真實硬件替換,該模擬器與真實硬件的差別也可忽略,使得開發(fā)后的應用程序不需要在后期進行修改,從而提高了應用程序的開發(fā)效率。
圖1為本發(fā)明模擬按鍵設備的模擬器實現(xiàn)方法較佳實施例的流程圖。圖2為本發(fā)明模擬按鍵設備的模擬器較佳實施例的結構框圖。圖3為本發(fā)明模擬器中模擬驅動的緩沖區(qū)的結構示意圖。圖4為本發(fā)明模擬器中模擬UI模塊的模擬按鍵的結構示意圖。
具體實施例方式本發(fā)明提供一種模擬按鍵設備的模擬器及其實現(xiàn)方法,為使本發(fā)明的目的、技術方案及效果更加清楚、明確,以下對本發(fā)明進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明一種模擬按鍵設備的模擬器實現(xiàn)方法,如圖1所示,包括步驟
S101、設置一包括模擬驅動及模擬n模塊的模擬器,所述模擬驅動提供給應用程序第一接口以及提供給模擬Ui模塊第二接口,在所述模擬驅動中設置有一用于存放按鍵鍵值的緩沖區(qū);
si02、所述模擬n模塊接收到模擬動作指令后,通過第二接口寫入至模擬驅動;
S103、所述應用程序通過所述第一接口從所述模擬驅動中讀取模擬動作指令,并根據(jù)所述模擬動作指令進行相應的動作,實現(xiàn)對按鍵設備的模擬。本發(fā)明的模擬器實現(xiàn)方法是為了實現(xiàn)按鍵設備相關的應用程序能夠在軟件模擬器上進行調試和開發(fā),從而提高開發(fā)效率。下面結合該模擬器對本發(fā)明進行詳細的說明。請參閱圖2,圖2為本發(fā)明一種模擬按鍵設備的模擬器的結構框圖,如圖所示,所述模擬器100包括
模擬驅動120及模擬UI模塊110,所述模擬驅動120用于提供給應用程序130第一接口以及提供給模擬UI模塊110第二接口,所述模擬UI模塊110將接收到的模擬動作指令通過第二接口寫入至模擬驅動120,所述應用程序130通過所述第一接口從所述模擬驅動120中讀取模擬動作指令,并根據(jù)所述模擬動作指令進行相應的動作,實現(xiàn)對按鍵設備的模擬。本發(fā)明的第一接口與實際硬件上的接口的軟件功能是一致的,所述第一接口是根據(jù)實際開發(fā)的軟件來制定的,只要第一接口保持與實際硬件的接口一致,那么如果應用程序能運行在模擬器上,同樣應用程序也能運行在實際的硬件上,從而實現(xiàn)模擬實際硬件的功能。按鍵設備作為電子設備的輸入設備的一種,整體上來說提供給應用程序標準的字符設備接口即可,所以,模擬器上提供給應用程序的第一接口也需要是標準的字符設備接口。而本發(fā)明中的第二接口則是可以根據(jù)需要進行修改的,原來驅動與硬件的連接以及溝通變?yōu)榱四M驅動與模擬UI模塊的連接以及溝通,所以模擬驅動需要提供額外的接口給模擬UI模塊,使模擬UI模塊能夠模擬出與實際硬件相似的效果。在本發(fā)明中,模擬按鍵設備的模擬n模塊110與實際按鍵設備的處理對象不同,模擬UI模塊110處理用戶通過鼠標點擊模擬UI模塊上的button (點擊)事件,而實際硬件處理用戶的按鍵事件,模擬UI模塊的按鍵如圖3所示,其示出了常用的一些 模擬按鍵,用戶通過鼠標點擊上面的模擬按鍵來對按鍵設備進行模擬操作。在模擬按鍵使用過程中,由于用戶按鍵的速度有可能超過軟件處理的速度,因此模擬驅動120中設置了一個用于存放按鍵鍵值的buffer (緩沖區(qū)),所述buffer最多能同時存放31個按鍵鍵值,該buffer的定義如下
#define BUFFER_SIZE 32
static unsigned char Buffer[BUFFER_SIZE];
圖4示出了模擬驅動120中設置的buffer的示意圖,其中的頭指針和尾指針,用于表示緩沖區(qū)容量大小。此buffer —共可存放32個按鍵鍵值(0 32,但只能同時存放31個按鍵鍵值),當沒有任何按鍵按下的時候,頭指針和尾指針都指向同一個地址,表示buffer為空;當有newkey (即新的按鍵鍵值)放進buffer時,頭指針往后移動一個地址,如果尾指針與頭指針又指向同一個地址,即重疊則表示buffer已滿;當buffer中有一個按鍵鍵值被讀取走(readkeys)時,頭指針也往后移動一個地址,如果尾指針與頭指針重新指向同一地址則表示buffer處于為空的狀態(tài),所以頭指針與尾指針都處于一個動態(tài)的狀態(tài),用于控制緩沖區(qū)內的按鍵鍵值的數(shù)量。模擬驅動的第一接口包括用于打開按鍵設備的接口,如open (),還包括用于關閉按鍵設備的接口,如close (),以及用于讀取鍵值的接口,如read ()。由于這些第一接口是根據(jù)真實的軟件來制定的,而且第一接口與實際硬件的接口一致,即未做改動,所以此處不再進行詳述。模擬驅動的第二接口包括用于控制按鍵設備狀態(tài)的接口,Ioctl (),該接口中具有一個用于設置按鍵鍵值的變量,該變量名稱為SET_NEWKEY,賦予該變量值為0x54R),表示將新的按鍵鍵值寫入到buffer中,Ioctl傳進來的參數(shù)即為寫入到buffer的按鍵鍵值,類型是unsigned char, Ioctl傳進來的參數(shù)的最高位(第8位)為I時代表按鍵的動作為釋放,為0時代表按鍵的動作為按下,正常情況下新的按鍵鍵值會被添加到上一個按鍵鍵值的后面,但若是buffer已滿,貝U會先丟棄buffer中最先存入的按鍵鍵值,然后在buffer的尾部添加新的按鍵鍵值,即以先進先出的原則存儲按鍵鍵值。通過鼠標點擊模擬UI模塊上的模擬按鍵,模擬UI模塊捕捉到按鍵事件后,先將按鍵事件的鍵值通過調用Ioctl接口寫入到模擬驅動的buffer中,接著模擬驅動會通知應用程序來讀取鍵值,對于應用程序來說,與實際硬件產生按鍵事件,然后通知應用程序來取鍵值的情況是一樣的。
模擬UI模塊的實現(xiàn)文件可以采用key. cpp、key. h,其中,cpp和h是程序文件的類型,函數(shù)的實現(xiàn)都放在CPP文件中,h文件即為“頭文件”,函數(shù)的定義等都放在h文件中。在key. cpp中首先創(chuàng)建需要的點擊的按鍵,然后將這些點擊的按鍵和釋放的信號與對應的處理函數(shù)關聯(lián)起來,相應的代碼如下
m_homeButton = new QToolButton( this, //m_ homeButton ” );
m_menuButton = new QToolButton( this, //m_ menuButton ” );
m_backButton = new QToolButton( this, 〃m_ backButton 〃);
connect(m_homeButton, SIGNAL(pressed ()), this, SLOT ( homeButtonPressed()));
connect(m_homeButton, SIGNAL(released ()), this, SLOT ( homeButtonReleased())·
);
connect (m_menuButton, SIGNAL(pressed ()), this, SLOT ( menuButtonPressed()));connect(m_menuButton, SIGNAL(released ()), this, SLOT ( menuButtonReleased())
);
connect(m_backButton, SIGNAL(pressed()),this, SLOT ( backButtonPressed()));connect(m_backButton, SIGNAL(released ()), this, SLOT ( backButtonReleased())
);
當捕捉到按鍵事件之后,就會進入該按鍵對應的處理函數(shù)中執(zhí)行相應的操作,按鍵鍵值通過Ioctl函數(shù)調用寫入模擬驅動的buffer中
Ioctl (fd_key, SET_NEWKEY, KeyCode);
綜上所述,本發(fā)明通過設置模擬驅動及模擬n模塊,由該模擬驅動用于提供給應用程序第一接口以及提供給模擬UI模塊第二接口,應用程序從該模擬驅動中讀取模擬動作指令,并根據(jù)所述模擬動作指令進行相應的動作,實現(xiàn)對按鍵的模擬。通過本發(fā)明的模擬器,應用程序的開發(fā)人員可以獨立于實際的按鍵來進行軟件開發(fā),操作起來非常方便,并且模擬效果逼真,只需要保證第一接口與真實硬件中的第一接口的軟件功能一致,即可保證應用程序在真實的按鍵中也可實現(xiàn),所以本發(fā)明的模擬器即使被真實硬件替換,該模擬器與真實硬件的差別也可忽略,使得開發(fā)后的應用程序不需要在后期進行修改,從而提高了應用程序的開發(fā)效率。應當理解的是,本發(fā)明的應用不限于上述的舉例,對本領域普通技術人員來說,可以根據(jù)上述說明加以改進或變換,所有這些改進和變換都應屬于本發(fā)明所附權利要求的保護范圍。
權利要求
1.一種模擬按鍵設備的模擬器實現(xiàn)方法,其特征在于,包括步驟 A、設置一包括模擬驅動及模擬Π模塊的模擬器,所述模擬驅動提供給應用程序第一接口以及提供給模擬UI模塊第二接口,在所述模擬驅動中設置有一用于存放按鍵鍵值的緩沖區(qū); B、所述模擬UI模塊接收到模擬動作指令后,通過第二接口寫入至模擬驅動; C、所述應用程序通過所述第一接口從所述模擬驅動中讀取模擬動作指令,并根據(jù)所述模擬動作指令進行相應的動作,實現(xiàn)對按鍵設備的模擬。
2.一種采用如權利要求1所述的實現(xiàn)方法模擬按鍵設備的模擬器,其特征在于,所述模擬器包括模擬驅動及模擬UI模塊; 所述模擬驅動,用于提供給應用程序第一接口以及提供給模擬UI模塊第二接口,在所述模擬驅動中設置有一用于存放按鍵鍵值的緩沖區(qū); 所述模擬UI模塊,用于將接收到的模擬動作指令通過第二接口寫入至模擬驅動,所述應用程序通過所述第一接口從所述模擬驅動中讀取模擬動作指令,并根據(jù)所述模擬動作指令進行相應的動作,實現(xiàn)對按鍵設備的模擬。
3.根據(jù)權利要求2所述模擬按鍵設備的模擬器,其特征在于,所述緩沖區(qū)內同時存放按鍵鍵值數(shù)量的最大值為31個。
4.根據(jù)權利要求2所述模擬按鍵設備的模擬器,其特征在于,所述緩沖區(qū)中設置有用于表示緩沖區(qū)容量大小的頭指針及尾指針。
5.根據(jù)權利要求2所述模擬按鍵設備的模擬器,其特征在于,所述第一接口包括用于打開按鍵設備、關閉按鍵設備及讀取按鍵鍵值的接口。
6.根據(jù)權利要求2所述模擬按鍵設備的模擬器,其特征在于,所述第二接口包括用于控制按鍵設備狀態(tài)的接口。
全文摘要
本發(fā)明公開一種模擬按鍵設備的模擬器及其實現(xiàn)方法,其中,所述實現(xiàn)方法包括步驟設置一包括模擬驅動及模擬UI模塊的模擬器,所述模擬驅動提供給應用程序第一接口以及提供給模擬UI模塊第二接口,所述模擬UI模塊接收到模擬動作指令后,通過第二接口寫入至模擬驅動,所述應用程序通過所述第一接口從所述模擬驅動中讀取模擬動作指令,并根據(jù)所述模擬動作指令進行相應的動作,實現(xiàn)對按鍵設備的模擬。通過本發(fā)明的模擬器,應用程序的開發(fā)人員可以獨立于實際的按鍵設備來進行軟件開發(fā),操作起來非常方便,并且模擬效果逼真。
文檔編號G06F11/36GK102999373SQ201210518629
公開日2013年3月27日 申請日期2012年12月6日 優(yōu)先權日2012年12月6日
發(fā)明者吳奇峰 申請人:Tcl通訊(寧波)有限公司