專利名稱:一種滾球的實現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及滾球的實現(xiàn)技術(shù),尤其涉及一種嵌入式領(lǐng)域及誤觸發(fā)事件頻繁 而規(guī)律少的事件領(lǐng)域中滾球的實現(xiàn)方法。
背景技術(shù):
滾球在嵌入式消費電子產(chǎn)品中雖然是新興產(chǎn)品,但是它使用靈活方便快速,
兼顧鼠標(biāo)鍵盤的雙重優(yōu)點,正越來越受到用戶的青睞。滾球由大球Ball和四個 小球Roller組成,那么我們平時滾動滾球?qū)嶋H上就是在滾動Ball,當(dāng)Ball滾動 時帶動其方向上的Roller滾動,而Roller的滾動會觸發(fā)其相對應(yīng)的霍爾元件產(chǎn) 生脈沖通過通用輸入/輸出接口 GPIO,從而在有關(guān)滾球的寄存器里會產(chǎn)生相應(yīng) 變化。這里,有關(guān)滾球的寄存器,比如GPIO寄存器位于滾球控制器中。
現(xiàn)有滾球、滾球控制器與CPU之間的連接示意圖如圖1、圖2所示。圖1、 圖2中皆包括CPU1、滾球控制器2和滾球3,滾球傳遞給滾球控制器的信號都 是狀態(tài)信號即UP/DOWN/LEFT/RIGHT。圖1與圖2的區(qū)別主要在于圖1的 滾球控制器2位于CPU1內(nèi)。也就是說圖1是CPU支持滾球器件的情況,圖2 是CPU根本不支持滾球器件,只能通過外部擴展達(dá)到對滾球器件支持的情況。 以圖2所示連接關(guān)系為例,具體來說,CPU1向滾球控制器2提供時鐘信號; CPU1向滾球控制器2提供控制信號,用于開啟滾球控制器;滾球控制器2向 CPU1提供中斷信號,并且CPU1收到該中斷信號后,會調(diào)用相應(yīng)的中斷處理 函數(shù)去讀取滾球控制器2傳來的GPIO電平變化。這里,該滾球控制器2傳來 的GPIO電平變化是由于滾珠移動引起霍爾元件感應(yīng)產(chǎn)生的GPIO電平變化。 另外,滾球控制器2還向CPUl反饋用戶的輸入/輸出信號。這里,滾球3和滾 球控制器2之間只存在滾球滾動所產(chǎn)生的狀態(tài)信號,該狀態(tài)信號實際上是霍爾元件產(chǎn)生脈沖反饋給滾球控制器2的。
由于滾球在使用中,除了會觸發(fā)霍爾元件產(chǎn)生UP/DOWN/LEFT/RIGHT方 向的脈沖作為狀態(tài)信號反饋給滾球控制器,還經(jīng)常會意外碰觸其它方向的霍爾 元件,從而觸發(fā)滾球其它方向上的波形形成誤觸發(fā)。目前從考慮改進(jìn)硬件結(jié)構(gòu)
的角度還無法將誤觸發(fā)的脈沖濾去,從而無法解決誤觸發(fā)帶來的不良影響,比 如本來向下操作滾球,結(jié)果由于其它方向的誤觸發(fā)波形,使得產(chǎn)生向左、或向
右,甚至向上的脈沖。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種滾球的實現(xiàn)方法,在兼容現(xiàn)有 硬件結(jié)構(gòu)的基礎(chǔ)上能避免誤觸發(fā),克服誤觸發(fā)帶來的不良影響。 為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實現(xiàn)的
一種滾球的實現(xiàn)方法,該方法包括將讀取的前次通用輸入/輸出接口 GPIO 值和本次GPIO值進(jìn)行異或操作后,獲得GPIO的電平變化;沖艮據(jù)所述GPIO的 電平變化來判斷出本次滾球的操作方向。
其中,所述將讀取的前次GPIO值和本次GPIO值進(jìn)行異或操作具體為 直接讀取GPIO電平值,將前次GPIO的電平值和本次GPIO的電平值進(jìn)行異或 操作。
其中,所述方法進(jìn)一步包括統(tǒng)計5次GPIO的電平變化發(fā)送滾球的鍵值, 確定所述滾球的4建值為所述5次GPIO的電平變化中出現(xiàn)GPIO的電平變化 機率最大方向的鍵值,來修正所述滾球的操作方向。
其中,所述方法進(jìn)一步包括如果符合GPIO的電平變化次數(shù)》且在所述 GPIO的電平變化期間所述GPIO電平的脈沖寬度>參照值;以及本次所述GPIO 的電平變化和前次發(fā)送滾球方向的GPIO為同一 GPIO且方向一致的條件,則 確定本次滾球的滾動方向和前次滾球的滾動方向 一致,來〗務(wù)正所述滾球的操作 方向。
其中,所述方法進(jìn)一步包括如果符合滾球最大值>1;以及脈寬>參照值且前一個發(fā)送的值和本值相同的條件,則確定本次滾球的滾動方向和前次滾球 的滾動方向一致,來修正所述滾球的操作方向。
其中,所述方法進(jìn)一步包括如果符合GPIO的電平變化次數(shù)>2;以及前 兩個發(fā)送的是同值且和本值相同的條件,則確定本次滾球的滾動方向和前次滾 球的滾動方向一致,來修正所述滾球的操作方向。
其中,所述方法進(jìn)一步包括如果3s定時器超時,則確定接收完畢后,跳 出接收循環(huán),來修正所述滾球的操作方向。
由于滾球在操作時誤觸發(fā)頻繁,而且規(guī)律不明顯,因此目前從考慮改進(jìn)硬 件結(jié)構(gòu)的角度還無法將誤觸發(fā)形成的脈沖濾去。本發(fā)明是從軟件算法實現(xiàn)的角 度解決誤觸發(fā)的。具體來說,本發(fā)明將讀取的前次通用輸入/輸出接口 GPIO值 和本次GPIO值進(jìn)行異或操作后,獲得GPIO的電平變化;根據(jù)該GPIO的電平 變化來判斷出本次滾球的操作方向。釆用本發(fā)明能在兼容現(xiàn)有硬件結(jié)構(gòu)的基礎(chǔ) 上能避免誤觸發(fā),克服誤觸發(fā)帶來的不良影響。
進(jìn)而,采用實現(xiàn)滾球功能的基本算法以及解決滾球誤觸發(fā)的優(yōu)化算法相糅 合的方式,來避免誤觸發(fā)。采用本發(fā)明在實現(xiàn)滾球功能基本算法的基礎(chǔ)上,進(jìn) 一步優(yōu)化滾球的實現(xiàn),更好地避免誤觸發(fā)。并且,本發(fā)明還采用實現(xiàn)滾球功能 的基本算法,以及解決滾球靈敏度、準(zhǔn)確度和響應(yīng)速度的優(yōu)化算法相糅合的方 式,來改善滾球的靈敏度、準(zhǔn)確度和響應(yīng)速度。采用本發(fā)明解決了滾球的響應(yīng) 速度與靈敏度和準(zhǔn)確性的矛盾,能實現(xiàn)滾球快速響應(yīng)、準(zhǔn)確和穩(wěn)定地滾動。另 外,采用實現(xiàn)滾球功能的基本算法,解決滾球誤觸發(fā)的優(yōu)化算法,以及解決滾 球靈敏度、準(zhǔn)確度和響應(yīng)速度的優(yōu)化算法相糅合的方式,不僅可以避免誤觸發(fā), 而且還可以解決滾球的響應(yīng)速度與靈敏度和準(zhǔn)確性的矛盾,實現(xiàn)滾球快速響應(yīng)、 準(zhǔn)確和穩(wěn)定地滾動。
圖1為現(xiàn)有滾球、滾球控制器與CPU之間的一連接示意圖; 圖2為現(xiàn)有滾球、滾球控制器與CPU之間的另一連接示意圖;圖3為本發(fā)明原理實現(xiàn)的流程示意圖。
具體實施例方式
本發(fā)明的核心思想是本發(fā)明將讀取的前次通用輸入/輸出接口 GPIO值和 本次GPIO值進(jìn)行異或操作后,獲得GPIO的電平變化;根據(jù)該GPIO的電平變 化來判斷出本次滾球的操作方向。采用本發(fā)明能在兼容現(xiàn)有硬件和結(jié)構(gòu)的基礎(chǔ) 上能避免誤觸發(fā),克服誤觸發(fā)帶來的不良影響。
下面結(jié)合附圖對技術(shù)方案的實施作進(jìn)一步的詳細(xì)描述。 如圖3所示, 一種滾球的實現(xiàn)方法,該方法包括以下步驟 步驟101、將讀耳又的前次GPIO值和本次GPIO值進(jìn)行異或操作后,獲得 GPIO的電平變化。
步驟102、根據(jù)該GPIO的電平變化來判斷出本次滾球的操作方向。 其中,上述步驟101中,當(dāng)硬件結(jié)構(gòu)采用如圖2所示的滾球、滾球控制器 與CPU之間的連接時,所述將讀取的前次GPIO值和本次GPIO值進(jìn)行異或操 作具體為直接讀取GPIO電平值,將前次GPIO的電平值和本次GPIO的電平 值進(jìn)行異或操作。從而根據(jù)該異或操作獲得這段時間內(nèi)GPIO的電平變化,能 判斷出本次滾球的操作方向。
這里,需要指出的是,以上所描述的滾球的實現(xiàn)方法都是實現(xiàn)滾球功能的 基本算法。以下對實現(xiàn)滾球功能的優(yōu)化算法進(jìn)行闡述。
優(yōu)化算法一為解決滾球誤觸發(fā)的優(yōu)化算法。由于滾球在操作時誤觸發(fā)頻 繁、規(guī)律不明顯,從考慮硬件結(jié)構(gòu)的角度還無法解決該問題,本發(fā)明是從軟件 算法實現(xiàn)的角度解決誤觸發(fā)的,軟件算法的實現(xiàn)采用統(tǒng)計學(xué)算法。經(jīng)過驗證, 采用本優(yōu)化算法,即統(tǒng)計5次GPIO的電平變化發(fā)送一個滾球的鍵值,確定所 發(fā)送的滾球的鍵:值為所述5次GPIO的電平變化中,出現(xiàn)GPIO的電平變化 機率最大的那一個方向的鍵值。那么,采用上述實現(xiàn)滾球功能的基本算法,以 及解決滾球誤觸發(fā)的優(yōu)化算法相糅合的方式,在實現(xiàn)滾球功能基本算法的基礎(chǔ) 上,進(jìn)一步優(yōu)化滾^t的實現(xiàn),更好地避免誤觸發(fā)。度、準(zhǔn)確度和響應(yīng)速度的優(yōu)化算法。采用本 優(yōu)化算法,即如果符合GPIO電平變化次數(shù)>2且在該GPIO的電平變化期間該 GPIO電平的脈沖寬度>參照值,比如8ms;以及本次該GPIO的電平變化和前 次發(fā)送滾球方向的那個GPIO為同一 GPIO且方向一致的條件,則確定本次滾 球的滾動方向和前次滾球的滾動方向一致。此時可以讓接收滾J求滾動次數(shù)減少, 從而增加滾球的靈敏性及速度。也就是說,采用實現(xiàn)滾球功能的基本算法,以 及解決滾球靈敏度、準(zhǔn)確度和響應(yīng)速度的優(yōu)化算法相糅合的方式,能改善滾球 的靈敏度、準(zhǔn)確度和響應(yīng)速度。
優(yōu)化算法三為也是解決滾球靈敏度、準(zhǔn)確度和響應(yīng)速度的優(yōu)化算法。采 用本優(yōu)化算法,即如果符合滾球最大值>1;以及脈寬>參照值且前一個發(fā)送的 值和本值相同的條件,則確定本次滾球的滾動方向和前次滾球的滾動方向 一致。 此時可以讓接收滾球滾動次數(shù)減少,從而增加滾球的靈敏性及速度。也就是說, 采用實現(xiàn)滾球功能的基本算法,以及解決滾球靈敏度、準(zhǔn)確度和響應(yīng)速度的優(yōu) 化算法相糅合的方式,能改善滾球的靈敏度、準(zhǔn)確度和響應(yīng)速度。
優(yōu)化算法四為也是解決滾球靈敏度、準(zhǔn)確度和響應(yīng)速度的優(yōu)化算法。采 用本優(yōu)化算法,即如果符合GPIO的電平變化次數(shù)>2;以及前兩個發(fā)送的是同 值且和本值相同的條件,這里所謂同值指滾球的4建值相同,則確定本次滾球的 滾動方向和前次滾球的滾動方向一致。此時可以讓接收滾球滾動次數(shù)減少,從 而增加滾球的靈敏性及速度。也就是說,采用實現(xiàn)滾球功能的基本算法,以及 解決滾球靈敏度、準(zhǔn)確度和響應(yīng)速度的優(yōu)化算法相糅合的方式,能改善滾球的 靈敏度、準(zhǔn)確度和響應(yīng)速度。
優(yōu)化算法五為也是解決滾球靈敏度、準(zhǔn)確度和響應(yīng)速度的優(yōu)化算法。采 用本優(yōu)化算法,即如果3s定時器超時,則確定接收完畢后,跳出接收循環(huán)。這 樣,可增加滾球的速度,同時在滾球的發(fā)送條件上加以限制可以保證滾球的準(zhǔn) 確性。也就是說,采用實現(xiàn)滾球功能的基本算法,以及解決滾球靈敏度、準(zhǔn)確 度和響應(yīng)速度的優(yōu)化算法相糅合的方式,能改善滾球的靈敏度、準(zhǔn)確度和響應(yīng) 速度。這里,需要指出的是,將實現(xiàn)滾球功能的基本算法,解決滾球誤觸發(fā)的優(yōu) 化算法,以及與上述解決滾球靈敏度、準(zhǔn)確度和響應(yīng)速度的優(yōu)化算法中的至少 一個算法相糅合,不僅可以避免誤觸發(fā),而且還可以解決滾球的響應(yīng)速度與靈 敏度和準(zhǔn)確性的矛盾,實現(xiàn)滾球快速響應(yīng)、準(zhǔn)確和穩(wěn)定地滾動。舉例來說,可
以將實現(xiàn)滾球功能的基本算法,優(yōu)化算法一與優(yōu)化算法二相糅合;將實現(xiàn)滾球 功能的基本算法,優(yōu)化算法一與優(yōu)化算法三相糅合;將實現(xiàn)滾球功能的基本算 法,優(yōu)化算法一與優(yōu)化算法四相糅合;將實現(xiàn)滾球功能的基本算法,優(yōu)化算法 一與優(yōu)化算法五相糅合;將實現(xiàn)滾球功能的基本算法,優(yōu)化算法一,優(yōu)化算法 二與優(yōu)化算法三相糅合;將實現(xiàn)滾球功能的基本算法,優(yōu)化算法一,優(yōu)化算法 二,優(yōu)化算法三與優(yōu)化算法四相糅合;將實現(xiàn)滾球功能的基本算法,優(yōu)化算法 一,優(yōu)化算法二,優(yōu)化算法三,優(yōu)化算法四與優(yōu)化算法五相糅合。
方法實施例在不改變現(xiàn)有硬件連接的基礎(chǔ)之上,采用實現(xiàn)滾球功能的基 本算法以及優(yōu)化算法一、優(yōu)化算法二、優(yōu)化算法三、優(yōu)化算法四和優(yōu)化算法五 相糅合的方式,克服誤觸發(fā)頻繁且規(guī)律少的現(xiàn)象,^v而實現(xiàn)滾球快速、準(zhǔn)確、 穩(wěn)定的滾動。上述優(yōu)化算法體現(xiàn)在滾球接收跳出算法中。具體來說,優(yōu)化算法 一對應(yīng)滾球接收跳出算法的①;優(yōu)化算法二對應(yīng)滾球接收跳出算法的②;優(yōu)化 算法三對應(yīng)滾球接收跳出算法的③;優(yōu)化算法四對應(yīng)滾^M妄收跳出算法的④; 優(yōu)化算法五對應(yīng)滾球接收跳出算法的⑤。以下對本實施例的具體處理流程進(jìn)行 闡述。
這里,針對滾球的初始化而言,滾球的初始化流程包括以下步驟
步驟201、預(yù)先定義滾球相關(guān)的GPIO,以及預(yù)先設(shè)置滾球控制器的相關(guān)控 制配置;CPU設(shè)置滾球GPIO的開中斷。
步驟202、判斷注冊滾球中斷函數(shù)是否成功,如果成功,則執(zhí)行步驟203; 否則,結(jié)束當(dāng)前滾球的初始化流程。
步驟203、給滾球分配空間,判斷分配滾球事件結(jié)構(gòu)體空間是否成功,如 果成功,則執(zhí)行步驟204;否則,結(jié)束當(dāng)前滾球的初始化流程。
步驟204、創(chuàng)建并初始化完成(completion)事件,同步滾球信號。步驟205、創(chuàng)建滾球的內(nèi)核線程,判斷創(chuàng)建滾球內(nèi)核線程是否成功,如果 成功,則執(zhí)行步驟206;否則,結(jié)束當(dāng)前滾球的初始化流程。
步驟206、等待completion同步信號;結(jié)束當(dāng)前滾球的初始化流程。
這里,針對滾球的中斷處理而言,滾球的中斷處理流程包括步驟當(dāng)有中 斷信號過來時,檢查并判斷是否為滾球中斷信號,如果是,則給滾球線程發(fā)信 號,進(jìn)行后續(xù)的滾球線程處理流程,否則不進(jìn)行后續(xù)的滾球線程處理流程。
這里,針對滾球線程處理而言,滾球線程處理包括線程初始化、由死循環(huán) 構(gòu)成的滾球處理程序及退出線程的處理。那么滾球線程處理包括以下步驟
步驟301、初始化定時器和信號量。
這里,定時器使得滾球不能長時間運行在死循環(huán)中,在到達(dá)一定預(yù)設(shè)時間 后就跳出。以10ms定時器為例,在達(dá)到10ms后滾球就跳出。信號量用于接收 由中斷發(fā)來的信號。
步驟302、釋放滾球線程的用戶空間,使得該線程只能運行于內(nèi)核空間中。
步驟303、重新初始化線程空間。
步驟304、鎖定當(dāng)前任務(wù)的信號掩碼鎖。
步驟305、設(shè)置殺死信號(SIGKILL)非阻塞,重新計算懸掛的信號數(shù)。
這里的兩項操作都需要信號鎖鎖定。
步驟306、喚醒滾球的等待線程。
步驟307、進(jìn)入由死循環(huán)構(gòu)成的滾球處理程序。
步驟308、在接收到SIGKILL信號后,進(jìn)行退出線程的處理。并在模塊退 出時釋放線程在內(nèi)核所占用的內(nèi)存空間。
這里,具體來i兌,退出線程的處理即為刪除10ms定時器,退出completion 同步。從而結(jié)束當(dāng)前滾球線程處理的流程。
這里需要指出的是,上述由步驟301 ~步驟306構(gòu)成的流程即為線程初始 化的流程。上述步驟307即為滾球的死循環(huán)處理,這是線程啟動初始化后,滾 5求處理的i也方。
這里,針對滾球的死循環(huán)處理而言,滾^求的死循環(huán)處理流程包括以下步驟處理^莫塊中初始化的10ms定時器定 時10ms。
步驟402、等待接收中斷處理函數(shù)發(fā)來的滾球信號,當(dāng)收到滾球信號時就 到信號懸掛隊列中讀取,判斷當(dāng)前任務(wù)中是否有待處理信號,如果是,即隊列 不為空,則執(zhí)行步驟403;否則,對列為空,則轉(zhuǎn)入執(zhí)行步驟401。
步驟403、屏蔽滾球中斷,延時4ms防抖動,通過異或前次GPIO電平和 本次GPIO電平來計算各GPIO的本次電平變化。
步驟404、定時3s使得滾球在處理一定的中斷數(shù)后能夠跳出死循環(huán),加快 滾球的速度。
步驟405、延時4ms,如步驟403中通過異或前次GPIO電平和本次GPIO 電平來計算各GPIO的本次電平變化,重新計算滾球各GPIO的電平變化,以 及滾球各GPIO電平變化數(shù)和脈寬。
步驟406、以5個統(tǒng)計值作為滾球才莫塊最初電平變化參照;取得滾球方向 最大值。
步驟407、判斷滾球GPIO的電平變化是否滿足滾球接收跳出算法,如果是, 則執(zhí)行步驟408;否則,轉(zhuǎn)入執(zhí)行步驟405。
這里,也可以理解為滾球根據(jù)是否符合滾球接收跳出算法,來決定是轉(zhuǎn) 入執(zhí)行步驟405繼續(xù)接收滾球GPIO的電平變化,還是繼續(xù)往下執(zhí)行滾球的其 他處理操作。
步驟408、判斷滾球GPIO的電平變化是否滿足斜方向滾動算法,如果是, 則保存滾球的斜方向后執(zhí)行步驟409;否則,直接執(zhí)行步驟409。
步驟409、判斷滾球GPIO的電平變化是否滿足滾球一建值發(fā)送條件算法,如 果是,則保存前次及本次滾球的發(fā)送值方向,將滾球各方向的鍵值清0,給滾 球GPIO的電平變化最多的方向賦最大方向的鍵值,執(zhí)行步驟410;否則,轉(zhuǎn)入 執(zhí)行步驟412。 '
步驟410、判斷滾球次最大方向是否存在,如果是,則賦值滾球次最大方 向后執(zhí)行步驟411;否則,直接執(zhí)行步驟411。步驟411、發(fā)送滾球滾動4定值及或滾球的釋放鍵值,清O定時器10ms超 時才示志。
步驟412、設(shè)置當(dāng)前任務(wù)狀態(tài)可中斷,調(diào)度超時30ms后執(zhí)行步驟401。 以下對上述滾球的死循環(huán)處理流程中涉及到的算法進(jìn)行闡述。 針對滾球接收跳出算法而言,以下所選用的^M^化算法是并列的關(guān)系。 ①GPI0的電平的變化次數(shù)>=5時,跳出本次循環(huán),不再接收滾球各GPIO 電平變化,改為執(zhí)行滾球的其它操作。這是滾球的接收跳出的最基本算法,其 他都是在此基礎(chǔ)上的優(yōu)化算法,以解決快速與準(zhǔn)確性的矛盾,達(dá)到靈敏準(zhǔn)確穩(wěn) 定的操作結(jié)果。
@當(dāng)滾球最大值=1;以及脈寬>參照值;以及前兩個發(fā)送的是同值且和本 值相同時可以跳出本次循環(huán),執(zhí)行滾球的其它操作。其中滾球最大值=1是為了 加快滾球的速度,畢竟若每次都采用GPIO的電平的變化次數(shù)>=5時,跳出本 次循環(huán)的條件會使得滾球反應(yīng)比較慢。脈寬>參照值的條件是為了保證滾球的準(zhǔn) 確性。而前兩個發(fā)送的是同值且和本值相同的條件是為了保證滾球的準(zhǔn)確性及 穩(wěn)定性。
③ 當(dāng)滾球最大值>1;以及脈寬>參照值且前一個發(fā)送的值和本值相同時可 以跳出本次循環(huán),執(zhí)行滾球的其它操作。其中滾球最大值>1是為了加快滾球的 速度。而脈寬>參照值且前一個發(fā)送的值和本值相同是為了保證滾球的準(zhǔn)確性。
④ GPI0的電平變化次數(shù)>2;以及前兩個發(fā)送的是同值且和本值相同時可 以跳出本次循環(huán),執(zhí)行滾球的其它操作。
⑤ 當(dāng)3s定時器超時可以跳出本次循環(huán),執(zhí)行滾球的其它操作。本條件是為 了加快滾球的速度。
這里,針對斜方向滾動算法而言,以下所選用的各優(yōu)化算法也是并列的關(guān)系。
①當(dāng)滾球最大值》;以及滾球其次最大值與滾球最大值相差<2且GPIO的
電平變化次數(shù)>3時認(rèn)為滾球發(fā)生了斜方向的滾動。
@當(dāng)滾球最大值=5且滾球其次最大值與滾球最大值相差=2時也認(rèn)為滾球發(fā)生了斜方向的滾動。
這里,針對滾球4建值發(fā)送條件算法而言,以下所選用的各優(yōu)化算法也是并 列的關(guān)系。旨在增加滾球的準(zhǔn)確性、穩(wěn)定性,以及在按滾球確認(rèn)時的防抖動。
① GPI0的電平的變化次數(shù)>=5還是可發(fā)送的基礎(chǔ)條件。
② GPI0的電平變化次數(shù)>2且超過定時10ms的條件,對應(yīng)滾i^處理程序中 的10ms定時器,即步驟308。
③ 滾球最大值M;以及脈寬>參照值且前一個發(fā)送的值和本值相同的條件, 對應(yīng)滾球接收跳出算法的第3步,即滾球接收跳出算法的③。
④ 滾球最大值4;以及脈寬>參照值;以及前兩個發(fā)送的是同值且和本值 相同的條件,對應(yīng)滾球接收跳出算法的第2步,即滾球接收跳出算法的②。
以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。
權(quán)利要求
1、一種滾球的實現(xiàn)方法,其特征在于,該方法包括將讀取的前次通用輸入/輸出接口GPIO值和本次GPIO值進(jìn)行異或操作后,獲得GPIO的電平變化;根據(jù)所述GPIO的電平變化來判斷出本次滾球的操作方向。
2、 根據(jù)權(quán)利要求1所述的實現(xiàn)方法,其特征在于,所述將讀取的前次GPIO 值和本次GPIO值進(jìn)行異或操作具體為直接讀取GPIO電平值,將前次GPIO 的電平值和本次GPIO的電平值進(jìn)行異或才喿作。
3、 根據(jù)權(quán)利要求1或2所述的實現(xiàn)方法,其特征在于,所述方法進(jìn)一步包 括統(tǒng)計5次GPIO的電平變化發(fā)送滾球的鍵值,確定所述滾球的鍵值為所 述5次GPIO的電平變化中出現(xiàn)GPIO的電平變化機率最大方向的鍵值,來修 正所述滾球的操作方向。
4、 根據(jù)權(quán)利要求1或2所述的實現(xiàn)方法,其特征在于,所述方法進(jìn)一步包 括如果符合GPIO的電平變化次數(shù)>2且在所述GPIO的電平變化期間所述 GPIO電平的脈沖寬度>參照值;以及本次所述GPIO的電平變化和前次發(fā)送滾 球方向的GPIO為同一 GPIO且方向 一致的條件,則確定本次滾球的滾動方向 和前次滾球的滾動方向一致,來修正所述滾球的操作方向。
5、 根據(jù)權(quán)利要求1或2所述的實現(xiàn)方法,其特征在于,所述方法進(jìn)一步包 括如果符合滾球最大值>1;以及脈寬>參照值且前一個發(fā)送的值和本值相同 的條件,則確定本次滾球的滾動方向和前次滾球的滾動方向一致,來修正所述 滾球的操作方向。
6、 根據(jù)權(quán)利要求1或2所述的實現(xiàn)方法,其特征在于,所述方法進(jìn)一步包 括如果符合GPIO的電平變化次數(shù)>2;以及前兩個發(fā)送的是同值且和本值相 同的條件,則確定本次滾球的滾動方向和前次滾球的滾動方向一致,來修正所 述滾球的操作方向。
7、 根據(jù)權(quán)利要求1或2所述的實現(xiàn)方法,其特征在于,所述方法進(jìn)一步包 括如果3s定時器超時,則確定接收完畢后,跳出接收循環(huán),來修正所述滾球 的操作方向。
全文摘要
本發(fā)明公開了一種滾球的實現(xiàn)方法,該方法包括將讀取的前次通用輸入/輸出接口GPIO值和本次GPIO值進(jìn)行異或操作后,獲得GPIO的電平變化;根據(jù)所述GPIO的電平變化來判斷出本次滾球的操作方向。采用本發(fā)明能在兼容現(xiàn)有硬件結(jié)構(gòu)的基礎(chǔ)上能避免誤觸發(fā),克服誤觸發(fā)帶來的不良影響。
文檔編號G06F3/033GK101593046SQ20081010018
公開日2009年12月2日 申請日期2008年5月28日 優(yōu)先權(quán)日2008年5月28日
發(fā)明者劉艷玲 申請人:中興通訊股份有限公司