專利名稱:一種嵌入式系統(tǒng)中具有實時幫助功能的命令行管理方法
技術領域:
本發(fā)明涉及一種嵌入式系統(tǒng)中具有實時幫助功能的命令行管理方法,提供一種針對現有網絡設備等嵌入式系統(tǒng)的命令行界面管理方式,即一種新的實時在線幫助的方法。
背景技術:
在目前的數字網絡環(huán)境下,對網絡設備等嵌入式系統(tǒng)的管理方法以形式來劃分主要有兩種方式1、通過串口進行的命令行界面管理方式;2、通過網口進行的Windows圖形界面管理方式。
雖然命令行管理方式沒有Windows圖形界面方式的直觀、清晰、富于美感,但其具備管理界面相對比較簡單、直接,消耗系統(tǒng)資源較少的優(yōu)點。對于那些網絡規(guī)模較小的應用,或者工程人員開通、調試的場合,命令行管理方式也不失一種簡便快捷的選擇。因此,設備供應商一般會同時提供這兩種管理方式在不同的應用中。
命令行管理方式也可以大致上分成兩種類型1、直接輸入命令;2、采用菜單式選擇。
第一種命令行方式,即直接輸入命令比較靈活,存在的主要的問題是,由于網絡設備等嵌入式系統(tǒng)的功能越來越復雜,命令以及其所需的參數也越來越復雜,用戶需要記憶和掌握成百上千條命令,十分不方便。為此,一些主流的廠商進行了改進,提供了一些幫助指令。
例如,目前比較流行的命令行風格中,提供“help”命令(或類似的命令),提供幫助信息;提供“?”指令,在鍵入命令的同時,配合使用“?”鍵,系統(tǒng)會提示已經鍵入的內容之后可能的內容清單;提供“Tab”指令,在鍵入命令的同時,配合使用“Tab”鍵,系統(tǒng)可以把剩余的部分補齊。以上這些改進,在一定程度上提高了命令行接口的友好性。但是,在獲取幫助時,需要配合其他一些指令,仍然不算方便。
第二種命令行方式,即采用菜單選擇的形式輸入指令及參數。這種方法提高了命令行的直觀性,用戶基本上不用記憶指令語法,通過選擇設計好的菜單項,就可以完成管理功能。但是這種方法存在著效率問題,一條帶有多個參數的指令往往需要用戶層層選擇菜單,用戶很容易迷失在各級菜單中。同時,由于這種方式具備一些圖形界面的特點,也增加了開發(fā)的復雜度。
發(fā)明內容
本發(fā)明的目的針對上述現有網絡設備等嵌入式系統(tǒng)命令行管理方式的不足,提供了一種新的實時在線幫助的方法。用戶不需要其他指令,在每一次鍵入的同時,即可以實時獲取鍵入的剩余部分的提示信息。
本發(fā)明的技術方案本發(fā)明的一種嵌入式系統(tǒng)中具有實時幫助功能的命令行管理方法包括命令行超級終端顯示方式、命令的定義和儲存、命令元素及其參數的查找和匹配,其命令行超級終端顯示包括指令的輸入顯示和信息提示顯示兩部分內容,對系統(tǒng)命令的定義和存儲是采取命令矩陣方式,命令矩陣是一個樹形的數據結構,它由根、目錄、命令、關鍵字和參數各種節(jié)點組成,它們的層次關系是每一條命令是由關鍵字和參數組成的,功能相近、相似或者相關的命令被組織在同一目錄中,而實現不同功能的目錄被安裝在命令矩陣根節(jié)點上,命令元素及其參數的查找和匹配過程是當系統(tǒng)在指令輸入區(qū)接收到用戶的輸入的時候,將同時觸發(fā)命令元素及其參數的查找和匹配,系統(tǒng)根據用戶已經輸入的內容,在上述命令矩陣中匹配合適的關鍵字或者參數,一旦匹配成功,系統(tǒng)在提示信息區(qū)給出匹配的內容,如果匹配不成功,則在提示信息區(qū)給出出錯提示。
所述的嵌入式系統(tǒng)中具有實時幫助功能的命令行管理方法,命令行管理方式將命令行超級終端劃分成兩個區(qū)域,兩個區(qū)域具有的功能不同,前者專門提供給用戶輸入用,后者則供系統(tǒng)實時顯示提示。
所述的嵌入式系統(tǒng)中具有實時幫助功能的命令行管理方法,命令矩陣的載入是由雙重循環(huán)構成的,一個循環(huán)是載入所有定義的命令目錄,另一個是載入所有指定目錄上的命令。
所述的嵌入式系統(tǒng)中具有實時幫助功能的命令行管理方法,其載入命令循環(huán)被套用在載入命令目錄循環(huán)中,即它是載入命令目錄循環(huán)的組成部分。
所述的嵌入式系統(tǒng)中具有實時幫助功能的命令行管理方法,完成一個目錄的命令載入之后要對該目錄上的命令進行排序,排序是按照命令的關鍵字和參數的字母順序排列。
所述的嵌入式系統(tǒng)中具有實時幫助功能的命令行管理方法,其命令矩陣載入流程安裝一個命令目錄時,首先要給待安裝的命令目錄建立一個索引號,不同的目錄的索引是唯一的,第二步給該命令目錄分配一塊內存空間,用來安裝命令,第三步指定命令矩陣下面的流程中安裝該目錄上的命令的入口函數。
所述的嵌入式系統(tǒng)中具有實時幫助功能的命令行管理方法,其命令元素及其參數的查找和匹配過程用計數變量i計數,當系統(tǒng)接收到一個空格時,變量i加1,i表示當前用戶輸入的指令是第幾個命令元素。如果用戶連續(xù)輸入空格,計數值只累加一次。當用戶輸入的是ASCII碼在31和127之間的字符時,表示輸入的是一個命令元素的其中一個字符,需要使用查找算法,與安裝在當前目錄下的命令的第i個元素進行比較,列出所有匹配成功的命令元素,如果沒有一個匹配成功的,則顯示出錯信息。
有益效果本命令行管理方法改善了傳統(tǒng)的命令行管理方式使用起來不直觀,不方便的不足。采用本命令行管理方法,用戶在屏幕的指令輸入區(qū)鍵入指令的每一個字符的同時,都可以在屏幕的信息提示區(qū)實時得到幫助。用戶不用使用其他的指令,就可以很明確的實時知道,剩余的指令部分有那些可能情況,輸入是否正確等等。可以說是提供給用戶一種實時在線幫助功能,提高了管理效率。
同時也注意到與傳統(tǒng)的命令行管理方式兼容。
圖1是定義命令系統(tǒng)的組織結構示意圖。
圖2是實現命令矩陣的載入過程流程圖。
圖3是安裝命令目錄的流程圖。
圖4是安裝命令的流程圖。
圖5是在命令矩陣中匹配合適的關鍵字或者參數主流程圖。
具體實施例方式
本發(fā)明的主要要解決的問題是a、命令矩陣與命令元素的定義和存儲;b、命令元素及其參數的查找和匹配;c、超級終端顯示的合理規(guī)劃和光標定位技術;本命令行管理方式對傳統(tǒng)嵌入式系統(tǒng)管理技術進行了深入研究和分析,在設計中充分考慮了與傳統(tǒng)命令行方式的兼容性;很好地解決了實時在線幫助系統(tǒng)存在的效率問題;同時還關注了界面的美觀實用。技術方案由三個部分組成,具體說明如下一、超級終端顯示的合理規(guī)劃;本命令行管理方式將命令行超級終端劃分成兩個區(qū)域。例如,可以將屏幕的0行~21行作為指令的輸入區(qū);將屏幕的22行~23行作為提示信息區(qū)。(當然,也可以不明顯的分區(qū),而是直接在每一條命令輸入行的下一行顯示提示信息。)兩個區(qū)域具有的功能不同,前者專門提供給用戶輸入用;后者則供系統(tǒng)實時顯示提示。由于進行了以上屏幕區(qū)域劃分,就需要光標在這兩個區(qū)域之間往返,光標定位技術成為關鍵。在本方案中使用了標準的ANSI輸出格式進行光標定位技術。
二、命令矩陣與命令元素的定義對系統(tǒng)提供的所有指令進行分類,按照功能相關的原則,將指令關聯到不同的目錄中。同時也需要規(guī)劃好各個命令需要攜帶的參數,將各個參數(包括幫助信息)與指令關聯起來。
圖1是定義了命令系統(tǒng)的組織結構示意圖本方案定義的命令矩陣是一個樹形的數據結構。它由根、目錄、命令、關鍵字和參數等5.種節(jié)點組成。它們的層次關系是每一條命令是由關鍵字和參數組成的;功能相近、相似或者相關的命令被組織在同一目錄中;而實現不同功能的目錄被安裝在命令矩陣根節(jié)點上。
三、命令矩陣的載入整個嵌入式系統(tǒng)進行初始化的時候需要進行命令矩陣的初始化,即實現命令矩陣的載入過程,流程見圖2算法描述命令矩陣的加載流程是由雙重循環(huán)構成的,其一是循環(huán)加載所有定義的命令目錄(加載命令目錄流程見圖3);其二是循環(huán)加載所有指定目錄上的命令(加載命令流程見圖4)。由圖2描述的命令矩陣的加載流程可以看到,命令目錄加載循環(huán)中套用了命令加載循環(huán)。具體說明如下1、加載命令目錄循環(huán)系統(tǒng)首先檢查是否還有定義的命令目錄沒有加載。如果發(fā)現還有未載入的命令目錄的時候,就會調用加載命令目錄的流程,載入一個未安裝的命令目錄。然后進入加載命令循環(huán),在該目錄上安裝相應的命令。完成此輪循環(huán)之后,系統(tǒng)繼續(xù)檢查是否還有定義的命令目錄沒有加載。如果還有,則開始新一輪的循環(huán),加載一個未安裝的目錄,并在該目錄上安裝相應的命令。直到系統(tǒng)認定已經加載完成所有定義的命令矩陣中的命令目錄(包括命令目錄中的所有命令)。自此,完成了命令矩陣的加載。
2、加載命令循環(huán)加載命令循環(huán)被套用在加載命令目錄循環(huán)中,即它是加載命令目錄循環(huán)的組成部分。流程如下系統(tǒng)首先檢查該目錄中是否還有定義的命令沒有加載。如果發(fā)現還有未載入的命令時,就會調用加載命令的流程,載入一條未安裝的命令。完成此輪循環(huán)之后,系統(tǒng)繼續(xù)檢查是否還有定義的命令沒有加載。如果還有,則開始新一輪的循環(huán),加載一個未安裝的命令。直到系統(tǒng)認定已經加載完成該命令目錄中的所有命令。
之后要對該目錄上的指令進行排序。排序是按照命令的關鍵字和參數的字母順序,這樣做是為了在系統(tǒng)運行時提供幫助信息的時候能夠采用高效的查找算法,從而提高系統(tǒng)的效率。對于排序算法和查找算法,設計者可以靈活采取“數據結構”中的一些經典算法,這里不再贅述。
安裝命令目錄的流程該流程與下面介紹的安裝命令的流程共同構成了命令矩陣載入流程。流程圖如圖3算法描述當系統(tǒng)發(fā)現一個未安裝的命令目錄時,調用本流程安裝一個命令目錄。首先,要給待安裝的命令目錄建立一個索引號。值得注意的是,不同的目錄的索引是唯一的。即命令目錄索引號唯一標識了命令目錄。第二步,給該命令目錄分配一塊內存空間,用來安裝命令。分配空間的大小可以根據開發(fā)者的需要定義。第三步,指定命令矩陣下面的流程中安裝該目錄上的命令的入口函數。即告訴系統(tǒng),用什么函數安裝該目錄上的命令集。其實就是下面的函數。
安裝命令的流程該流程與上面介紹的安裝命令目錄的流程共同構成了命令矩陣載入流程。流程圖如圖4算法描述當系統(tǒng)發(fā)現指定目錄上有沒有安裝的命令時,調用該流程安裝一條命令。首先,系統(tǒng)檢查指定的命令目錄是否存在,即是否初始化了指定的目錄。檢查的目的是為了保證有足夠的內存空間安裝命令。如果指定的命令目錄沒有進行初始化,則打印出錯信息,然后退出。
如果指定的命令目錄存在,則將命令的關鍵字和參數保存在指定的命令空間中,并建立好命令與關鍵字1~n,參數1~n之間的映射關系。建立命令與關鍵字1~n,參數1~n之間的映射關系,實際上就是告訴系統(tǒng),該指令的各個關鍵字和參數分別是什么,保存在內存空間的什么地方等等相關信息。
當映射好各個關鍵字和參數之后,需要指定好該命令的執(zhí)行函數。也就是告訴系統(tǒng)當用戶鍵入該指令的時候,調用什么函數來執(zhí)行該指令,完成該指令的功能。
當系統(tǒng)發(fā)現還沒有載入完成所有的命令目錄的時候,就會循環(huán)執(zhí)行該流程,先載入一個未安裝的命令目錄。然后在該目錄上安裝命令(包括關鍵字和參數的設定),直到在該目錄上安裝完所有的命令。之后要對一個目錄上的指令進行排序。排序是按照指令的關鍵字和參數的字母順序,這樣做是為了在系統(tǒng)運行時提供幫助信息的時候能夠采用高效的查找算法,從而提高系統(tǒng)的效率。
四、命令的關鍵字及參數的查找和匹配當系統(tǒng)在指令輸入區(qū)接收到用戶的輸入的時候,將同時觸發(fā)命令元素及其參數的查找和匹配,系統(tǒng)根據用戶已經輸入的內容,在上述命令矩陣中匹配合適的關鍵字或者參數;一旦匹配成功,系統(tǒng)在提示信息區(qū)給出匹配的內容;如果匹配不成功,則在提示信息區(qū)給出出錯提示。
圖5是在命令矩陣中匹配合適的關鍵字或者參數主要流程圖算法描述該流程是由一個死循環(huán)組成的。系統(tǒng)打開一個任務,將一直等待并偵聽用戶的輸入。當系統(tǒng)接收到用戶輸入的字符后,根據用戶的輸入進行相應的處理。這里用到了計數變量i(i從1開始計數),它表示當前用戶輸入的是指令的第幾個命令元素。假設當前的命令元素是第5個,此時i=5。當系統(tǒng)接收到一個空格時,意味著其后輸入的非空格字符是第6個命令元素,于是i=6。如果用戶連續(xù)輸入空格,計數值只累加一次。
如果用戶輸入的是ASCII碼在31和127之間的字符,表示輸入的是一個命令元素的其中一個字符,于是,需要使用查找算法,與安裝在當前目錄下的命令的第i個元素進行比較,列出所有匹配成功的命令元素,如果沒有一個匹配成功的,則顯示出錯信息。對于查找算法,設計者可以靈活采取“數據結構”中的一些經典算法,這里不再贅述。
如果用戶輸入的是空格,表示命令的當前命令元素(關鍵字或者參數)已經輸入完成,以后的輸入是下一個命令元素。
如果輸入的是回車鍵,表示當前的命令已經輸入完成,則調用在安裝該命令時指定的執(zhí)行函數運行該命令。
系統(tǒng)設計者還可以定義一些其他的輸入字符,完成特定的處理流程。這里不再贅述。
五、命令矩陣的加載模塊主流程源代碼
<pre listing-type="program-listing"> Command_matrix_init() { int dir_index,command_index; /*初始化變量*/ for(dir_index=1;dir_index<=_MAX_DIR_INDEX;dir_index++)/*安裝命令目錄循環(huán)*/ { install_dir(dir_index);/*安裝命令目錄dir_index*/ /*安裝命令循環(huán)*/ for(eommand_index=l;command_index<=_MAX_COMMAND_INDEX;command_index++) { install_command(dir_index,command_index);/*在dir_index命令目錄上安裝命令 command_index*/ } sort_command(dir_index); /*對命令目錄dir_index上的命令集合進行排序*/ } }</pre>六、操作過程實例系統(tǒng)定義了一個Admin目錄,其中有兩條命令,分別是“cd”和“clear”命令?!癱d”命令包括關鍵字“cd”和參數“../device/fdb/igmp/port/service/snmp/stp/vlan”,其中的“/”表示可選的參數?!癱d”命令執(zhí)行的結果是進入相應的目錄。例如,用戶希望進入Service目錄,以往的命令行方式是在當前提示符后直接輸入“cdservice”,然后回車。用戶需要記住該指令。下面是使用本方案提供的命令行方式根據上述的設計要求,在系統(tǒng)初始化的時候初始化命令矩陣,安裝“Admin”目錄,在該目錄上安裝上述兩條指令。同時打開一個任務,監(jiān)聽命令行的輸入,并進行相應的處理。
1.用戶鍵入“c”,系統(tǒng)匹配到兩個命令元素,相應在提示信息區(qū)提示可能的指令是“cd”或者“clear”,系統(tǒng)等待用戶的進一步輸入。
2.用戶接著鍵入“d”,系統(tǒng)匹配了指令“cd”,并等待輸入參數。
3.用戶接著鍵入“”(空格鍵)時;系統(tǒng)認為第一個命令元素已經輸入完成,在提示信息區(qū)提示下面的命令元素(參數)可能是“..”、“device”、“fdb”、“igmp”、“port”、“service”、“snmp”、“stp”或者“vlan”。
4.用戶接著鍵入“s”,系統(tǒng)開始在命令的第2個命令元素中匹配,并在提示信息區(qū)提示此時可能的參數是“service”、“snmp”或者“stp”。
5.用戶接著鍵入“e”,系統(tǒng)繼續(xù)在命令的第2個命令元素中匹配,在提示信息區(qū)提示此時可能的參數只有“service”。此時,用戶可以直接回車,進入“Service”目錄。
6用戶接著鍵入<cr>(回車鍵),“cd service”指令執(zhí)行成功。
權利要求
1.一種嵌入式系統(tǒng)中具有實時幫助功能的命令行管理方法,包括命令行超級終端顯示方式、命令的定義和儲存、命令元素及其參數的查找和匹配,其特征在于命令行超級終端顯示包括指令的輸入顯示和信息提示顯示兩部分,對系統(tǒng)命令的定義和存儲是采取命令矩陣方式,命令矩陣是一個樹形的數據結構,它由根、目錄、命令、關鍵字和參數各種節(jié)點組成,它們的層次關系是每一條命令是由關鍵字和參數組成的,功能相近、相似或者相關的命令被組織在同一目錄中,而實現不同功能的目錄被安裝在命令矩陣根節(jié)點上,命令元素及其參數的查找和匹配過程是當系統(tǒng)在指令輸入區(qū)接收到用戶的輸入的時候,將同時觸發(fā)命令元素及其參數的查找和匹配,系統(tǒng)根據用戶已經輸入的內容,在上述命令矩陣中匹配合適的關鍵字或者參數,一旦匹配成功,系統(tǒng)在提示信息區(qū)給出匹配的內容,如果匹配不成功,則在提示信息區(qū)給出出錯提示。
2.根據權利要求1所述的嵌入式系統(tǒng)中具有實時幫助功能的命令行管理方法,其特征在于命令行管理方式將命令行超級終端劃分成兩個區(qū)域,兩個區(qū)域具有的功能不同,前者專門提供給用戶輸入用,后者則供系統(tǒng)實時顯示提示。
3.根據權利要求1或2所述的嵌入式系統(tǒng)中具有實時幫助功能的命令行管理方法,其特征在于命令矩陣的載入是由雙重循環(huán)構成的,一個循環(huán)是載入所有定義的命令目錄,另一個循環(huán)是載入所有指定目錄上的命令。
4.根據權利要求3所述的嵌入式系統(tǒng)中具有實時幫助功能的命令行管理方法,其特征在于載入命令循環(huán)被套用在載入命令目錄循環(huán)中,即它是載入命令目錄循環(huán)的組成部分。
5.根據權利要求3或4所述的嵌入式系統(tǒng)中具有實時幫助功能的命令行管理方法,其特征在于完成一個目錄的命令載入之后要對該目錄上的命令進行排序,排序是按照命令的關鍵字和參數的字母順序排列。
6.根據權利要求3或4所述的嵌入式系統(tǒng)中具有實時幫助功能的命令行管理方法,其特征在于命令矩陣載入流程安裝一個命令目錄時,首先要給待安裝的命令目錄建立一個索引號,不同的目錄的索引是唯一的,第二步給該命令目錄分配一塊內存空間,用來安裝命令,第三步指定命令矩陣下面的流程中安裝該目錄上的命令的入口函數。
7.根據權利要求1或2所述的嵌入式系統(tǒng)中具有實時幫助功能的命令行管理方法,其特征在于命令元素及其參數的查找和匹配過程用計數變量i計數,當系統(tǒng)接收到一個空格時,變量i加1,i表示當前用戶輸入的指令是第幾個命令元素,如果用戶連續(xù)輸入空格,計數值只累加一次,當用戶輸入的是ASCII碼在31和127之間的字符時,表示輸入的是一個命令元素的其中一個字符,需要使用查找算法,與安裝在當前目錄下的命令的第i個元素進行比較,列出所有匹配成功的命令元素,如果沒有一個匹配成功的,則顯示出錯信息。
全文摘要
本發(fā)明提供一種嵌入式系統(tǒng)中具有實時幫助功能的命令行管理方法,命令行終端顯示包括指令的輸入顯示和信息提示顯示兩部分,命令矩陣是一個樹形的數據結構,它由根、目錄、命令、關鍵字和參數各種節(jié)點組成,每一條命令是由關鍵字和參數組成,功能相近、相似或相關的命令被組織在同一目錄中,而實現不同功能的目錄被安裝在命令矩陣根節(jié)點上,當系統(tǒng)在指令輸入區(qū)接收到用戶的輸入的時候,將同時觸發(fā)命令元素及其參數的查找和匹配,系統(tǒng)根據用戶已經輸入的內容,在上述命令矩陣中匹配合適的關鍵字或者參數,一旦匹配成功,系統(tǒng)在提示信息區(qū)給出匹配的內容,如果匹配不成功,則在提示信息區(qū)給出出錯提示。
文檔編號G06F9/318GK1534460SQ0311886
公開日2004年10月6日 申請日期2003年3月28日 優(yōu)先權日2003年3月28日
發(fā)明者向中青, 李凌, 周箴 申請人:烽火通信科技股份有限公司