專利名稱:一種機頂盒界面高效切換的方法
一種機頂盒界面高效切換的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種嵌入式技術(shù),尤其是一種機頂盒界面高效切換的方法,特別是屬 于機頂盒領(lǐng)域技術(shù)。
背景技術(shù):
隨著國家數(shù)字電視的大規(guī)模普及,作為數(shù)字電視終端產(chǎn)品的數(shù)字電視機頂盒的功 能也越來越強大,作為與用戶使用最多的人機交互界面也越來越多樣。傳統(tǒng)的機頂盒上界 面切換通過程序編寫來完成,每進(jìn)入一個新的界面程序就不斷的讀取遙控器輸入值,根據(jù) 讀到的遙控器輸入值判斷程序下一步的執(zhí)行以及要切換的界面,由于不同的界面在不同的 狀態(tài)下切換的界面也不同。造成傳統(tǒng)方式界面切換必須編寫大量的代碼來完成界面的切換 工作,因此無法實現(xiàn)在一個界面下向任意界面跳轉(zhuǎn)。傳統(tǒng)模式下界面切換的方式如圖5所 示機頂盒在開機后處于一個初始狀態(tài),每個狀態(tài)對于了一個界面和一些功能。在某個狀態(tài) 里,都是不斷等待機頂盒的按鍵輸入或者其他如定時器等消息,當(dāng)?shù)鹊桨存I輸入或消息時, 根據(jù)程序的相應(yīng)設(shè)置選擇需要的狀態(tài),然后運行相應(yīng)的功能和繪制新的界面。在每個新的 狀態(tài)中繼續(xù)按照如圖5中的流程進(jìn)行。對增加新的界面都要按照這個流程編寫新的分支程 序。這個做法工作量大,編程容易出錯。特別是不能在某個狀態(tài)下,隨意向其他狀態(tài)切換, 如圖4所示,當(dāng)處在狀態(tài)6時,如程序需要切換到狀態(tài)9,就必須先退到狀態(tài)3,然后從狀態(tài) 3退到狀態(tài)1,然后從狀態(tài)1切換到狀態(tài)4,然后從狀態(tài)4切換到狀態(tài)9,而不能直接從狀態(tài) 6直接切換到狀態(tài)9。這樣界面切換必須編寫大量的代碼來完成。
發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問題,在于提供一種機頂盒界面高效切換的方法,可以在編 寫少量代碼的情況下,通過配置狀態(tài)表來實現(xiàn)機頂盒界面的高效切換,可實現(xiàn)在機頂盒一 種狀態(tài)界面下向別的任意狀態(tài)界面跳轉(zhuǎn)的功能。本發(fā)明是這樣實現(xiàn)的一種機頂盒界面高效切換的方法,其特征在于首先,將機 頂盒的界面作為一個容器,每個容器對應(yīng)一種狀態(tài),每個狀態(tài)對應(yīng)一個ID,所述容器包括了 與界面相關(guān)的界面繪制事件以及與EVENT事件有關(guān)的狀態(tài)進(jìn)入事件、狀態(tài)退出事件、狀態(tài) 的按鍵和消息相應(yīng)事件;其次,在機頂盒中設(shè)置一緩存區(qū)用于緩存消息池和按鍵池,提供一消息引擎,將所 有事件的事件消息集中在一消息池中,通過消息引擎進(jìn)行處理,并根據(jù)事件消息處理相應(yīng) 的事件;處理完消息池中的消息后,接著檢測按鍵池中是否有按鍵輸入,如果有則向所述 消息引擎發(fā)送按鍵事件消息,并根據(jù)狀態(tài)表或使用跳轉(zhuǎn)函數(shù)實現(xiàn)狀態(tài)跳轉(zhuǎn);所述的狀態(tài)表 包括初始狀態(tài)、狀態(tài)的子狀態(tài)、對應(yīng)消息、要跳轉(zhuǎn)的狀態(tài)、跳轉(zhuǎn)的方式。本發(fā)明具有如下優(yōu)點該方法將機頂盒的每個界面作為一個容器,每個容器對應(yīng) 一種狀態(tài),然后使用消息引擎技術(shù)及事件處理技術(shù),并根據(jù)狀態(tài)表或使用跳轉(zhuǎn)函數(shù)實現(xiàn)狀態(tài)跳轉(zhuǎn)。本發(fā)明可以在編寫少量代碼的情況下,通過配置狀態(tài)表來實現(xiàn)機頂盒界面的高效 切換,可實現(xiàn)在機頂盒一種狀態(tài)界面下向別的任意狀態(tài)界面跳轉(zhuǎn)的功能。
圖1為本發(fā)明中所述容器的結(jié)構(gòu)示意圖。圖2為本發(fā)明中所述的狀態(tài)表結(jié)構(gòu)示意圖。圖3為本發(fā)明中所述消息引擎的操作流程示意圖。圖4為現(xiàn)有機頂盒界面狀態(tài)切換示意圖。圖5為現(xiàn)有機頂盒界面切換方法流程示意圖。
具體實施方式下面參照圖1至圖3結(jié)合實施例對本發(fā)明作進(jìn)一步的說明一種機頂盒界面高效切換的方法,是通過以下方式實現(xiàn)的首先,將機頂盒的界面作為一個容器,每個容器對應(yīng)一種狀態(tài),每個狀態(tài)對應(yīng)一個 ID,見圖1所示所述容器包括了與界面繪制相關(guān)的界面的繪制事件以及與EVENT事件函數(shù) 有關(guān)的狀態(tài)的進(jìn)入事件、狀態(tài)的退出事件、狀態(tài)的按鍵和消息相應(yīng)事件;其次,在機頂盒中設(shè)置一緩存區(qū)用于緩存消息池和按鍵池,提供一消息引擎,將所 有事件的事件消息集中在一消息池中,通過消息引擎進(jìn)行處理,并根據(jù)事件消息處理相應(yīng) 的事件;處理完消息池中的消息后,接著檢測按鍵池中是否有按鍵輸入,如果有則向所述 消息引擎發(fā)送按鍵事件消息,并根據(jù)狀態(tài)表或使用跳轉(zhuǎn)函數(shù)實現(xiàn)狀態(tài)跳轉(zhuǎn);見圖2所示所 述的狀態(tài)表包括初始狀態(tài)、狀態(tài)的子狀態(tài)、對應(yīng)消息、要跳轉(zhuǎn)的狀態(tài)、跳轉(zhuǎn)的方式;所述跳轉(zhuǎn) 的方式包括直接跳轉(zhuǎn)和帶返回的跳轉(zhuǎn),所述帶返回的跳轉(zhuǎn)指的是跳轉(zhuǎn)結(jié)束后在一定時間范 圍內(nèi)還會回到原來狀態(tài)。其中所述消息引擎的操作流程見圖3所示等待事件消息和按鍵輸入,當(dāng)收到事 件消息后,找到對應(yīng)狀態(tài)下該消息注冊的事件,并執(zhí)行相應(yīng)的事件函數(shù),當(dāng)運行完相應(yīng)消息 的事件后,判斷消息池中是否還有消息(消息池是當(dāng)有事件處理時,把相應(yīng)的事件處理消 息放入緩存區(qū),該緩存區(qū)是消息池),是則繼續(xù)找到對應(yīng)狀態(tài)下該消息注冊的事件,并執(zhí)行 相應(yīng)的事件函數(shù),如此反復(fù)操作,直到消息池中沒有消息為止,否則等待事件消息和按鍵輸 入;當(dāng)按鍵池中有按鍵輸入時(按鍵池是當(dāng)有按鍵輸入時,把相應(yīng)的按鍵值及按鍵狀態(tài)放 入緩存區(qū),該緩存區(qū)是按鍵池,其中按鍵狀態(tài)分為按下狀態(tài)和彈起狀態(tài)),則向消息引擎發(fā) 送按鍵事件消息,并讀取狀態(tài)表,判斷狀態(tài)表中是否有初始狀態(tài)和子狀態(tài),以及對應(yīng)該按鍵 的消息,是則系統(tǒng)通過狀態(tài)表實現(xiàn)狀態(tài)跳轉(zhuǎn),否則等待事件消息和按鍵輸入。其中當(dāng)系統(tǒng)通過狀態(tài)表或者使用跳轉(zhuǎn)函數(shù)實現(xiàn)狀態(tài)跳轉(zhuǎn)時,具體的流程為首先 發(fā)送原狀態(tài)的退出事件消息到消息引擎,然后發(fā)送跳轉(zhuǎn)狀態(tài)的繪制消息到消息引擎,最后 發(fā)送跳轉(zhuǎn)狀態(tài)的進(jìn)入消息到消息引擎,然后所有的消息將在消息引擎中得以執(zhí)行。其中所述跳轉(zhuǎn)函數(shù)的參數(shù)包括了原狀態(tài)的ID,跳轉(zhuǎn)狀態(tài)的ID,以及跳轉(zhuǎn)方式。其中值得一提的是在每個狀態(tài)中包括許多子狀態(tài),在每個狀態(tài)中對響應(yīng)按鍵的 輸入或消息池中的消息的位置,這些都是狀態(tài)的子狀態(tài)。
4
總之,機頂盒界面高效切換的方法,將機頂盒的每個界面作為一個容器,每個容器 對應(yīng)一種狀態(tài),然后使用消息引擎技術(shù)及事件處理技術(shù),并根據(jù)狀態(tài)表或使用跳轉(zhuǎn)函數(shù)實 現(xiàn)狀態(tài)跳轉(zhuǎn)。本發(fā)明可以在編寫少量代碼的情況下,通過配置狀態(tài)表來實現(xiàn)機頂盒界面的 高效切換,可實現(xiàn)在機頂盒一種狀態(tài)界面下向別的任意狀態(tài)界面跳轉(zhuǎn)的功能。以上所述僅為本發(fā)明的較佳實施例,凡依本發(fā)明申請專利范圍所做的均等變化與 修飾,皆應(yīng)屬本發(fā)明的涵蓋范圍。
權(quán)利要求
一種機頂盒界面高效切換的方法,其特征在于首先,將機頂盒的每個界面作為一個容器,每個容器對應(yīng)一種狀態(tài),每個狀態(tài)對應(yīng)一個ID,所述容器包括了與界面相關(guān)的界面繪制事件以及與EVENT事件有關(guān)的狀態(tài)進(jìn)入事件、狀態(tài)退出事件、狀態(tài)的按鍵和消息相應(yīng)事件;其次,在機頂盒中設(shè)置一緩存區(qū)用于緩存消息池和按鍵池,并提供一消息引擎,將所有事件的事件消息集中在一消息池中,通過消息引擎進(jìn)行處理,并根據(jù)事件消息處理相應(yīng)的事件;處理完消息池中的消息后,接著檢測按鍵池中是否有按鍵輸入,如果有則向所述消息引擎發(fā)送按鍵事件消息,并根據(jù)狀態(tài)表或使用跳轉(zhuǎn)函數(shù)實現(xiàn)狀態(tài)跳轉(zhuǎn);所述的狀態(tài)表包括初始狀態(tài)、狀態(tài)的子狀態(tài)、對應(yīng)消息、要跳轉(zhuǎn)的狀態(tài)、跳轉(zhuǎn)的方式。
2.根據(jù)權(quán)利要求1所述的一種機頂盒界面高效切換的方法,其特征在于所述消息引 擎的操作流程為等待事件消息和按鍵輸入,當(dāng)收到事件消息后,找到對應(yīng)狀態(tài)下該消息注 冊的事件,并執(zhí)行相應(yīng)的事件函數(shù),當(dāng)運行完相應(yīng)消息的事件后,判斷消息池中是否還有消 息,是則繼續(xù)找到對應(yīng)狀態(tài)下該消息注冊的事件,并執(zhí)行相應(yīng)的事件函數(shù),如此反復(fù)操作, 直到消息池中沒有消息為止,否則等待事件消息和按鍵輸入;當(dāng)按鍵池中有按鍵輸入時,則 向消息引擎發(fā)送按鍵事件消息,并讀取狀態(tài)表,判斷狀態(tài)表中是否有初始狀態(tài)和子狀態(tài),以 及對應(yīng)該按鍵的消息,是則系統(tǒng)通過狀態(tài)表實現(xiàn)狀態(tài)跳轉(zhuǎn),否則等待事件消息和按鍵輸入。
3.根據(jù)權(quán)利要求1所述的一種機頂盒界面高效切換的方法,其特征在于當(dāng)系統(tǒng)通過 狀態(tài)表或者使用跳轉(zhuǎn)函數(shù)實現(xiàn)狀態(tài)跳轉(zhuǎn)時,具體的流程為首先發(fā)送原狀態(tài)的退出事件消 息到消息引擎,然后發(fā)送跳轉(zhuǎn)狀態(tài)的繪制消息到消息引擎,最后發(fā)送跳轉(zhuǎn)狀態(tài)的進(jìn)入消息 到消息引擎,然后所有的消息將在消息引擎中得以執(zhí)行。
4.根據(jù)權(quán)利要求1所述的一種機頂盒界面高效切換的方法,其特征在于所述跳轉(zhuǎn)的 方式包括直接跳轉(zhuǎn)和帶返回的跳轉(zhuǎn),所述帶返回的跳轉(zhuǎn)指的是跳轉(zhuǎn)結(jié)束后在一定時間范圍 內(nèi)還會回到原來狀態(tài)。
5.根據(jù)權(quán)利要求1所述的一種機頂盒界面高效切換的方法,其特征在于所述跳轉(zhuǎn)函 數(shù)的參數(shù)包括了原狀態(tài)的ID,跳轉(zhuǎn)狀態(tài)的ID,以及跳轉(zhuǎn)方式。
全文摘要
本發(fā)明提供一種機頂盒界面高效切換的方法,將機頂盒的每個界面作為一個容器,每個容器對應(yīng)一種狀態(tài),然后使用消息引擎技術(shù)及事件處理技術(shù),并根據(jù)狀態(tài)表或使用跳轉(zhuǎn)函數(shù)實現(xiàn)狀態(tài)跳轉(zhuǎn);從而實現(xiàn)機頂盒界面的高效切換。本發(fā)明可以在編寫少量代碼的情況下,通過配置狀態(tài)表來實現(xiàn)機頂盒界面的高效切換,可實現(xiàn)在機頂盒一種狀態(tài)界面下向別的任意狀態(tài)界面跳轉(zhuǎn)的功能。
文檔編號G06F3/048GK101937314SQ20101028787
公開日2011年1月5日 申請日期2010年9月20日 優(yōu)先權(quán)日2010年9月20日
發(fā)明者方立 申請人:福建新大陸通信科技股份有限公司