專(zhuān)利名稱(chēng):一種提高嵌入式圖形用戶(hù)接口系統(tǒng)實(shí)時(shí)性的方法
技術(shù)領(lǐng)域:
本發(fā)明應(yīng)用于嵌入式圖形用戶(hù)接口(GUI)系統(tǒng)領(lǐng)域和工業(yè)控制系統(tǒng)領(lǐng)域,能夠縮短嵌入式GUI系統(tǒng)對(duì)外界命令的反映時(shí)間,提高系統(tǒng)實(shí)時(shí)性,解決嵌入式GUI在其應(yīng)用領(lǐng)域 使用耗費(fèi)過(guò)多時(shí)間資源的問(wèn)題。
背景技術(shù):
嵌入式GUI系統(tǒng)由于其使用方便,功能強(qiáng)大,在嵌入式系統(tǒng)開(kāi)發(fā)中的應(yīng)用廣泛,是 嵌入式系統(tǒng)的重要組成部分。目前常用的嵌入式⑶I系統(tǒng)大多由原先的PCGUI發(fā)展而來(lái),基本I/O以窗口為中 心,支持復(fù)雜的層疊式窗口和彈出式窗口,所有控件都看作子窗口,控件必須以窗口為控件 包容器(Container)才能使用。為了有效地支持窗口,很多嵌入式⑶I系統(tǒng)必須實(shí)現(xiàn)復(fù)雜 的窗口管理器(WM)。此外為了保證其通用性,一般嵌入式⑶I集成了諸多不必須的特性, 如多窗口,窗口的覆蓋,移動(dòng),動(dòng)態(tài)改變窗口尺寸等,這些特性在一些對(duì)界面人性化程度要 求不高的系統(tǒng)或是硬件條件不允許的系統(tǒng)中不僅發(fā)揮不了作用,還極大的消耗了系統(tǒng)的資 源,增加了 GUI應(yīng)用程序開(kāi)發(fā)的復(fù)雜性。對(duì)于工業(yè)控制系統(tǒng)領(lǐng)域的大多數(shù)嵌入式系統(tǒng)來(lái)說(shuō),系統(tǒng)對(duì)實(shí)時(shí)動(dòng)作和實(shí)時(shí)消息傳 遞的要求很高,而系統(tǒng)留給嵌入式GUI系統(tǒng)的運(yùn)作時(shí)間又很短。所以工控領(lǐng)域?qū)?yīng)用其中 的嵌入式GUI系統(tǒng)的實(shí)時(shí)性有很高的要求,但對(duì)界面本身僅要求簡(jiǎn)潔明了,使用方便。因此 一般嵌入式GUI系統(tǒng)中的窗口管理器和部分特殊功能不是必須的,甚至系統(tǒng)硬件不支持這 些功能。同時(shí),應(yīng)用在這些領(lǐng)域的嵌入式GUI系統(tǒng)本身需要具有盡可能小的命令反應(yīng)時(shí)間 和數(shù)據(jù)傳遞時(shí)間。目前,多數(shù)適用于工業(yè)控制系統(tǒng)領(lǐng)域的嵌入式⑶I系統(tǒng),無(wú)論是過(guò)程驅(qū)動(dòng)還是消 息驅(qū)動(dòng),大多數(shù)采用窗口或控件控制模式。這種結(jié)構(gòu)的運(yùn)行過(guò)程一般是上電后,創(chuàng)建窗口 及其控件,通過(guò)獲取命令值確定并進(jìn)入當(dāng)前窗口,為當(dāng)前窗口設(shè)定一個(gè)命令選擇開(kāi)關(guān),來(lái)選 擇命令值對(duì)該窗口的操作,然后進(jìn)行具體操作。根據(jù)處理結(jié)果,創(chuàng)建并跳入相應(yīng)子窗口。對(duì) 于子窗口則執(zhí)行與父窗口相似的操作。該結(jié)構(gòu)中窗口及其控件要到用時(shí)才創(chuàng)建,這樣在系統(tǒng)正常運(yùn)行時(shí)消耗了很多時(shí)間 資源;其次,為每一次窗口設(shè)定一個(gè)命令選擇開(kāi)關(guān),增加了代碼的重復(fù)性和復(fù)雜度。因此,針對(duì)這類(lèi)應(yīng)用需求,研究設(shè)計(jì)出一種能夠減少嵌入式⑶I系統(tǒng)時(shí)間資源消 耗,提高系統(tǒng)實(shí)時(shí)性的方法越來(lái)越顯示出其必要性和緊迫性。
發(fā)明內(nèi)容
技術(shù)問(wèn)題本發(fā)明針對(duì)工業(yè)控制領(lǐng)域或自動(dòng)化系統(tǒng)用嵌入式GUI存在的上述問(wèn) 題,提出了一種提高嵌入式GUI系統(tǒng)實(shí)時(shí)性的方法。系統(tǒng)運(yùn)行時(shí),這種高實(shí)時(shí)性的輕便嵌入 式GUI系統(tǒng)能夠?qū)崿F(xiàn)顯示窗口的快速創(chuàng)建和撤銷(xiāo),小量常用數(shù)據(jù)的快速處理以達(dá)到在不影 響整個(gè)工控裝置性能的前提下,系統(tǒng)對(duì)外界命令快速響應(yīng)的目的。
技術(shù)方案本發(fā)明為實(shí)現(xiàn)上述目的,采用如下技術(shù)方案本發(fā)明一種提高嵌入式圖形用戶(hù)接口系統(tǒng)實(shí)時(shí)性的方法,其特征在于所述方法 對(duì)所有要用到的窗口在系統(tǒng)初始化時(shí)進(jìn)行預(yù)創(chuàng)建和初始化,并將所有窗口按照窗口之間的 關(guān)聯(lián)性連接成一張窗口關(guān)系網(wǎng);每個(gè)窗口都是窗口關(guān)系網(wǎng)中的一個(gè)節(jié)點(diǎn)且所述每個(gè)節(jié)點(diǎn) 都至多有上下左右四個(gè)相鄰節(jié)點(diǎn);窗口節(jié)點(diǎn)的內(nèi)容包括三部分一是標(biāo)識(shí)窗口種類(lèi)的標(biāo)志 位,用來(lái)區(qū)分該窗口是數(shù)據(jù)框、按鈕或是動(dòng)態(tài)顯示的數(shù)據(jù);二是用于連接其他窗口的指針, 將所有窗口按照一定的順序或是關(guān)系連接起來(lái);三是數(shù)據(jù)存儲(chǔ)區(qū),用來(lái)存儲(chǔ)常用的小量數(shù) 據(jù),具體步驟如下在系統(tǒng)初始化時(shí)創(chuàng)建窗口關(guān)系表并初始化窗口節(jié)點(diǎn)數(shù)據(jù),在系統(tǒng)穩(wěn)定運(yùn)行時(shí)通過(guò) 整個(gè)系統(tǒng)的命令選擇開(kāi)關(guān)選擇的命令對(duì)窗口關(guān)系網(wǎng)進(jìn)行操作,包括窗口節(jié)點(diǎn)的移動(dòng)和窗口 數(shù)據(jù)的處理;對(duì)窗口節(jié)點(diǎn)的移動(dòng)操作包括
創(chuàng)建一個(gè)新子窗口的操作轉(zhuǎn)化為對(duì)窗口關(guān)系網(wǎng)上與當(dāng)前窗口節(jié)點(diǎn)有聯(lián)系的下一 個(gè)節(jié)點(diǎn)窗口的顯示操作;撤銷(xiāo)當(dāng)前的窗口返回上一級(jí)菜單的操作轉(zhuǎn)化為對(duì)窗口關(guān)系網(wǎng)上與當(dāng)前窗口節(jié)點(diǎn) 有聯(lián)系的上一個(gè)節(jié)點(diǎn)窗口的顯示操作;創(chuàng)建一個(gè)窗口的同級(jí)下一頁(yè)窗口的操作轉(zhuǎn)化為對(duì)窗口關(guān)系網(wǎng)上與當(dāng)前窗口節(jié)點(diǎn) 有聯(lián)系的右邊一個(gè)節(jié)點(diǎn)窗口的顯示操作;撤銷(xiāo)一個(gè)窗口返回同級(jí)上一頁(yè)窗口的操作轉(zhuǎn)化為對(duì)窗口關(guān)系網(wǎng)上與當(dāng)前窗口節(jié) 點(diǎn)有聯(lián)系的左邊一個(gè)節(jié)點(diǎn)窗口的顯示操作。有益效果本發(fā)明提到的提高嵌入式GUI系統(tǒng)實(shí)時(shí)性的方法,將創(chuàng)建和撤銷(xiāo)窗口 時(shí)繁雜的對(duì)內(nèi)存的操作,初始化操作放在系統(tǒng)初始化時(shí)做,系統(tǒng)穩(wěn)定運(yùn)行時(shí)用耗時(shí)遠(yuǎn)遠(yuǎn)小 于上述操作的在窗口關(guān)系網(wǎng)中移動(dòng)節(jié)點(diǎn)的操作來(lái)代替上述操作。打開(kāi)一個(gè)窗口只需進(jìn)行顯 示窗口的操作,而顯示窗口的操作耗時(shí)只與硬件有關(guān)。上電運(yùn)行穩(wěn)定后,界面響應(yīng)時(shí)間與窗 口操作復(fù)雜度無(wú)關(guān)。因此,這種方法大幅提高了嵌入式GUI系統(tǒng)的實(shí)時(shí)性。同時(shí),本發(fā)明提 供的方法結(jié)構(gòu)清晰,易于裁減,移植或是更新。
圖1是二級(jí)窗口關(guān)系網(wǎng)。父窗口 A和父窗口 B為相互聯(lián)系的同一級(jí)窗口。子窗口 Al,子窗口 A2和子窗口 A3是父窗口 A的子窗口。子窗口 Bi,子窗口 B2和子窗口 B3是父窗 口 B的子窗口。子窗口 Al,子窗口 A2和子窗口 A3為相互聯(lián)系的同一級(jí)窗口。子窗口 Bi, 子窗口 B2和子窗口 B3為相互聯(lián)系的同一級(jí)窗口。圖2是提高嵌入式⑶I系統(tǒng)實(shí)時(shí)性方法的運(yùn)作流程。
具體實(shí)施例方式下面結(jié)合附圖和實(shí)例詳細(xì)說(shuō)明本發(fā)明提供的具體方法和運(yùn)行過(guò)程。將提高嵌入式GUI系統(tǒng)實(shí)時(shí)性的方法應(yīng)用到工業(yè)控制系統(tǒng)中的智能電動(dòng)機(jī)保護(hù) 裝置中。這樣的裝置一般存在復(fù)雜的保護(hù)算法,留給嵌入式GUI系統(tǒng)的運(yùn)行時(shí)間非常少。而 在人機(jī)互動(dòng)任務(wù)中,保護(hù)裝置的內(nèi)部信息必須及時(shí)反饋給人,同時(shí)人為的命令又必須盡可 能及時(shí)的傳達(dá)給保護(hù)裝置。本發(fā)明提供的方法完全能夠適用于這種對(duì)實(shí)時(shí)性要求嚴(yán)格的場(chǎng)合 O以此為例介紹這種高實(shí)時(shí)性的嵌入式⑶I系統(tǒng)。在上電初始化時(shí),同時(shí)執(zhí)行嵌入式GUI的初始化操作。初始化操作過(guò)程包括初始化顯示相關(guān)硬件系統(tǒng),進(jìn)行窗口預(yù)創(chuàng)建,創(chuàng) 建窗口關(guān)系網(wǎng)和顯示最初需顯示的窗口。初始化顯示相關(guān)硬件系統(tǒng)與具體硬件驅(qū)動(dòng)相關(guān)。圖1所示是一個(gè)由兩個(gè)主窗口組成的小的二級(jí)窗口關(guān)系網(wǎng)的結(jié)構(gòu)。以此為例詳細(xì) 說(shuō)明窗口關(guān)系網(wǎng)的組織方法。其中父窗口 A的下一個(gè)節(jié)點(diǎn)是子窗口 Al,右邊一個(gè)鄰接節(jié)點(diǎn)是父窗口 B ;父窗口 B的下一個(gè)節(jié)點(diǎn)是子窗口 Bi,左邊一個(gè)鄰接節(jié)點(diǎn)是父窗口 A ;子窗口 Al的右邊一個(gè)鄰接節(jié)點(diǎn)是子窗口 A2,上一個(gè)節(jié)點(diǎn)是父窗口 A ;子窗口 A2的右邊一個(gè)鄰接節(jié)點(diǎn)是子窗口 A3,上一個(gè)節(jié)點(diǎn)是父窗口 A,左邊一個(gè)鄰 接節(jié)點(diǎn)是子窗口 Al;子窗口 A3的上一個(gè)節(jié)點(diǎn)是父窗口 A,左邊一個(gè)鄰接節(jié)點(diǎn)是子窗口 A2 ;子窗口 Bl的右邊一個(gè)鄰接節(jié)點(diǎn)是子窗口 B2,上一個(gè)節(jié)點(diǎn)是父窗口 B ;子窗口 B2的右邊一個(gè)鄰接節(jié)點(diǎn)是子窗口 B3,上一個(gè)節(jié)點(diǎn)是父窗口 B,左邊一個(gè)鄰 接節(jié)點(diǎn)是子窗口 Bl ;子窗口 B3的上一個(gè)節(jié)點(diǎn)是父窗口 B,左邊一個(gè)鄰接節(jié)點(diǎn)是子窗口 B2 ;按照這樣的方法將系統(tǒng)中所有用到的窗口組織成一張N級(jí)窗口關(guān)系網(wǎng)。初始化窗口和創(chuàng)建窗口關(guān)系網(wǎng)完成以后將最初需顯示的窗口設(shè)為窗口關(guān)系網(wǎng)的 入口。如圖2,上述過(guò)程為圖中的步驟21。系統(tǒng)正常運(yùn)行的過(guò)程如下一般工業(yè)控制系統(tǒng)用的裝置需要的控制命令比較單一,可以簡(jiǎn)單的將所有相似的 操作加以整理分類(lèi),總結(jié)出最常用的操作過(guò)程如確定,退出,上移(光標(biāo)上移或是數(shù)據(jù)修改 時(shí)增大數(shù)據(jù)等等),下移(光標(biāo)下移或是數(shù)據(jù)修改時(shí)減小數(shù)據(jù)等等),左移,右移等等操作。 系統(tǒng)獲得命令以后進(jìn)入命令選擇開(kāi)關(guān)(23)。由命令選擇開(kāi)關(guān)做出正確的判斷。如果是無(wú)效命令(包括當(dāng)前被屏蔽的命令和錯(cuò)誤命令),系統(tǒng)會(huì)重新進(jìn)入步驟22 等待獲取新的命令。如果是有效命令,系統(tǒng)則根據(jù)命令進(jìn)入相應(yīng)的執(zhí)行命令操作模塊(24)。執(zhí)行命令操作模塊的具體工作就是根據(jù)命令對(duì)窗口關(guān)系網(wǎng)(25)進(jìn)行操作。以圖1中的父窗口 A的操作為例對(duì)本發(fā)明中涉及方法的操作過(guò)程進(jìn)行詳細(xì)說(shuō)明 假設(shè)子窗口 Al為數(shù)據(jù)框,子窗口 A3為數(shù)據(jù)顯示框。對(duì)父窗口 A的操作有很多種,以如下幾種典型操作為例打開(kāi)下一頁(yè)父窗口 B,點(diǎn) 擊進(jìn)入子窗口 A2,修改子窗口 Al中的數(shù)據(jù)和顯示子窗口 A3中的數(shù)據(jù)等等。系統(tǒng)在打開(kāi)父窗口 A時(shí)可以顯示其子窗口中需顯示的數(shù)據(jù)。窗口顯示完畢后對(duì)數(shù) 據(jù)顯示框中的數(shù)據(jù)不能做修改。當(dāng)接收到打開(kāi)下一頁(yè)父窗口 B的命令時(shí),從窗口關(guān)系網(wǎng)中找到父窗口 A的右邊鄰 接節(jié)點(diǎn)窗口,調(diào)用顯示模塊直接顯示窗口,無(wú)需臨時(shí)為父窗口 B分配內(nèi)存和初始化數(shù)據(jù)結(jié) 構(gòu)。
當(dāng)接收到點(diǎn)擊進(jìn)入子窗口 A2的命令時(shí),從窗口關(guān)系網(wǎng)中找到父窗口 A的下一級(jí)節(jié) 點(diǎn),再根據(jù)下一級(jí)節(jié)點(diǎn)的左右鄰接節(jié)點(diǎn)找到子窗口 A2,調(diào)用顯示模塊直接顯示窗口。當(dāng)接收到修改子窗口 Al中的數(shù)據(jù)的命令時(shí),從窗口關(guān)系網(wǎng)中找到父窗口 A的下一 級(jí)鄰接節(jié)點(diǎn)窗口 Al,讀出Al存儲(chǔ)區(qū)的數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行修改,最后寫(xiě)回Al存儲(chǔ)區(qū),無(wú)需從其 他存儲(chǔ)空間讀取數(shù)據(jù)。本發(fā)明用于對(duì)界面人性化要求不太高,但是對(duì)系統(tǒng)實(shí)時(shí)性要求很?chē)?yán)格,系統(tǒng)資源 有限的嵌入式系統(tǒng)。例如它能很好的適用于低壓系統(tǒng)領(lǐng)域和工業(yè)控制領(lǐng)域的嵌入式系統(tǒng)。 它最大的特點(diǎn)是實(shí)時(shí)性強(qiáng),省卻了大量創(chuàng)建窗口,撤消窗口的時(shí)間。它結(jié)構(gòu)清晰,易于裁減, 移植或是更新。以上借助實(shí)施例描述了本發(fā)明的具體實(shí)施方式
,但是應(yīng)該理解的是,前述具體的 描述不應(yīng)理解為對(duì)本發(fā)明的實(shí)質(zhì)和范圍的限定,本領(lǐng)域內(nèi)的普通技術(shù)人員在閱讀本說(shuō)明書(shū) 后對(duì)上述實(shí)施例作出的各種修改,都屬于本發(fā)明所保 護(hù)的范圍。
權(quán)利要求
一種提高嵌入式圖形用戶(hù)接口系統(tǒng)實(shí)時(shí)性的方法,其特征在于所述方法對(duì)所有要用到的窗口在系統(tǒng)初始化時(shí)進(jìn)行預(yù)創(chuàng)建和初始化,并將所有窗口按照窗口之間的關(guān)聯(lián)性連接成一張窗口關(guān)系網(wǎng);每個(gè)窗口都是窗口關(guān)系網(wǎng)中的一個(gè)節(jié)點(diǎn)且所述每個(gè)節(jié)點(diǎn)都至多有上下左右四個(gè)相鄰節(jié)點(diǎn);窗口節(jié)點(diǎn)的內(nèi)容包括三部分一是標(biāo)識(shí)窗口種類(lèi)的標(biāo)志位,用來(lái)區(qū)分該窗口是數(shù)據(jù)框、按鈕或是動(dòng)態(tài)顯示的數(shù)據(jù);二是用于連接其他窗口的指針,將所有窗口按照一定的順序或是關(guān)系連接起來(lái);三是數(shù)據(jù)存儲(chǔ)區(qū),用來(lái)存儲(chǔ)常用的小量數(shù)據(jù),具體步驟如下在系統(tǒng)初始化時(shí)創(chuàng)建窗口關(guān)系表并初始化窗口節(jié)點(diǎn)數(shù)據(jù),在系統(tǒng)穩(wěn)定運(yùn)行時(shí)通過(guò)整個(gè)系統(tǒng)的命令選擇開(kāi)關(guān)選擇的命令對(duì)窗口關(guān)系網(wǎng)進(jìn)行操作,包括窗口節(jié)點(diǎn)的移動(dòng)和窗口數(shù)據(jù)的處理;對(duì)窗口節(jié)點(diǎn)的移動(dòng)操作包括創(chuàng)建一個(gè)新子窗口的操作轉(zhuǎn)化為對(duì)窗口關(guān)系網(wǎng)上與當(dāng)前窗口節(jié)點(diǎn)有聯(lián)系的下一個(gè)節(jié)點(diǎn)窗口的顯示操作;撤銷(xiāo)當(dāng)前的窗口返回上一級(jí)菜單的操作轉(zhuǎn)化為對(duì)窗口關(guān)系網(wǎng)上與當(dāng)前窗口節(jié)點(diǎn)有聯(lián)系的上一個(gè)節(jié)點(diǎn)窗口的顯示操作;創(chuàng)建一個(gè)窗口的同級(jí)下一頁(yè)窗口的操作轉(zhuǎn)化為對(duì)窗口關(guān)系網(wǎng)上與當(dāng)前窗口節(jié)點(diǎn)有聯(lián)系的右邊一個(gè)節(jié)點(diǎn)窗口的顯示操作;撤銷(xiāo)一個(gè)窗口返回同級(jí)上一頁(yè)窗口的操作轉(zhuǎn)化為對(duì)窗口關(guān)系網(wǎng)上與當(dāng)前窗口節(jié)點(diǎn)有聯(lián)系的左邊一個(gè)節(jié)點(diǎn)窗口的顯示操作。
2.根據(jù)權(quán)利要求1所述的一種提高嵌入式圖形用戶(hù)接口系統(tǒng)實(shí)時(shí)性的方法,其特征在 于所述方法中整個(gè)系統(tǒng)只設(shè)置一個(gè)命令選擇開(kāi)關(guān),將所有相似操作的操作歸為一大類(lèi),每 一大類(lèi)組成一個(gè)操作執(zhí)行模塊;系統(tǒng)接到外部命令時(shí)通過(guò)命令選擇開(kāi)關(guān)選擇一類(lèi)操作,同 時(shí)進(jìn)入該操作執(zhí)行模塊。
全文摘要
本發(fā)明公布了一種提高嵌入式圖形用戶(hù)接口系統(tǒng)實(shí)時(shí)性的方法。本發(fā)明將創(chuàng)建和撤銷(xiāo)窗口時(shí)繁雜的對(duì)內(nèi)存的操作,初始化操作放在系統(tǒng)初始化時(shí)做,系統(tǒng)穩(wěn)定運(yùn)行時(shí),用耗時(shí)遠(yuǎn)遠(yuǎn)小于上述操作的在窗口關(guān)系網(wǎng)中移動(dòng)節(jié)點(diǎn)的操作來(lái)代替上述操作。其中窗口關(guān)系網(wǎng)在系統(tǒng)初始化時(shí)由所有用到的窗口組建而成。同時(shí)在窗口節(jié)點(diǎn)上存儲(chǔ)小量數(shù)據(jù)來(lái)縮短系統(tǒng)處理小量常用數(shù)據(jù)的時(shí)間。本發(fā)明的特點(diǎn)是實(shí)時(shí)性強(qiáng),系統(tǒng)運(yùn)行時(shí)系統(tǒng)反應(yīng)快,結(jié)構(gòu)清晰,易于裁減,移植或是更新。該方法可降低系統(tǒng)命令反映時(shí)間和信息傳遞時(shí)間,解決嵌入式GUI在工業(yè)控制系統(tǒng)領(lǐng)域應(yīng)用時(shí)耗費(fèi)過(guò)多時(shí)間資源的問(wèn)題。
文檔編號(hào)G05B19/02GK101819527SQ20091026457
公開(kāi)日2010年9月1日 申請(qǐng)日期2009年12月28日 優(yōu)先權(quán)日2009年12月28日
發(fā)明者刁龍, 孫華芳, 徐宇柘, 時(shí)龍興, 李冰, 石耘, 鐘銳, 陸生禮 申請(qǐng)人:東南大學(xué)