專利名稱:一種字符串命令處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種命令處理方法,尤其是字符串命令的處理方法。
背景技術(shù):
字符串命令是目前廣泛流行的命令方式,例如DOS和UNIX系統(tǒng)中都大量采用字符串的命令方式。字符串的命令方式有其特定的優(yōu)勢(shì),在很多場(chǎng)合下不可或缺,如對(duì)外提供接口、命令批處理等等。
有許多字符串命令,系統(tǒng)并不關(guān)心命令本身,而只需要將命令下發(fā),并顯示返回結(jié)果就可以了,但是系統(tǒng)需要對(duì)命令輸入進(jìn)行合法性判斷,對(duì)不同命令的不同返回結(jié)果按照一定格式進(jìn)行顯示。
按照現(xiàn)有技術(shù)中一般的做法,在增加、減少或者修改一條原先的字符串命令,都需要修改原先的程序代碼,增加對(duì)該字符串命令的支持,包括對(duì)該命令的輸入?yún)?shù)的檢查,對(duì)該命令的不同返回結(jié)果的輸出參數(shù)的提取,并按照一定格式進(jìn)行顯示。而在實(shí)際應(yīng)用中諸如修改參數(shù)、修改顯示格式等需求的變化是很常見(jiàn)的現(xiàn)象,這就造成了一個(gè)問(wèn)題,每次修改都要修改原先的程序代碼,更換版本,這樣頻繁地修改現(xiàn)有的版本,會(huì)造成版本難以維護(hù),影響版本穩(wěn)定性。
發(fā)明內(nèi)容
本發(fā)明解決的技術(shù)問(wèn)題是改變現(xiàn)有技術(shù)中處理字符串命令的方式,減少因?yàn)樵黾?、減少或者修改字符串命令而引起的頻繁修改版本問(wèn)題,從而降低對(duì)版本穩(wěn)定性的影響。
為了達(dá)到以上目的,本發(fā)明方法具體采用以下步驟步驟一將字符串命令碼和輸入輸出參數(shù)記錄到本地的表或文件中;步驟二對(duì)下發(fā)的字符串命令進(jìn)行輸入?yún)?shù)的合法性檢查,通過(guò)合法性檢查的字符串命令下發(fā);步驟三收到字符串命令返回結(jié)果后,用輸出參數(shù)從返回結(jié)果中獲取輸出結(jié)果,并按照顯示格式進(jìn)行格式顯示。
其中步驟一包括以下步驟1.1)定義命令碼、輸入輸出參數(shù)屬性,每種命令設(shè)定唯一的命令碼,每個(gè)輸入和輸出參數(shù)都設(shè)定對(duì)應(yīng)的參數(shù)屬性;1.2)將所有的字符串命令碼、輸入?yún)?shù)屬性和輸出參數(shù)屬性記錄在表或者文件中。
其中步驟二包括以下步驟2.1)用戶下發(fā)字符串命令;2.2)系統(tǒng)從字符串命令中提取命令碼,并從字符串命令表和輸入?yún)?shù)表中提取該命令碼對(duì)應(yīng)的輸入?yún)?shù),進(jìn)行輸入?yún)?shù)的合法性檢查;2.3)如果字符串命令通過(guò)合法性檢查則將命令下發(fā)給前臺(tái),如果沒(méi)有通過(guò)合法性檢查則向用戶提示錯(cuò)誤信息。
其中步驟三包括以下步驟3.1)接收字符串命令返回結(jié)果;3.2)對(duì)于返回錯(cuò)誤執(zhí)行結(jié)果的,直接從輸出的命令結(jié)果中提取錯(cuò)誤碼,根據(jù)錯(cuò)誤碼解釋成對(duì)應(yīng)的錯(cuò)誤結(jié)果字符串,直接顯示該錯(cuò)誤結(jié)果字符串,流程結(jié)束;3.3)對(duì)于返回正確執(zhí)行結(jié)果的,從輸出的命令結(jié)果中提取格式控制符,并根據(jù)命令碼和格式控制符從參數(shù)格式表中讀取輸出參數(shù),再按照輸出參數(shù)屬性從輸出的命令結(jié)果中提取對(duì)應(yīng)的輸出數(shù)據(jù);3.4)輸出數(shù)據(jù)按照輸出參數(shù)所對(duì)應(yīng)參數(shù)格式表的固有格式進(jìn)行顯示。
上述顯示格式包括頭參數(shù)格式、循環(huán)參數(shù)格式、行循環(huán)參數(shù)格式、二維循環(huán)參數(shù)格式,輸出命令結(jié)果時(shí)可以分別采用這些格式或者這些格式的各種組合。
本方法在增加新的和修改舊的字符串命令時(shí),不需要改動(dòng)原先的程序,只需要在表中增加或修改該命令的相關(guān)記錄就可以了,極大地提高了可維護(hù)性和程序的可靠性。將命令按照命令碼、輸入?yún)?shù)和輸出參數(shù)進(jìn)行數(shù)據(jù)提取,按照輸入?yún)?shù)類型進(jìn)行合法性檢測(cè),將整個(gè)命令顯示格式歸納為四種固定格式,而不是按照不同的命令碼采用不同的命令處理方式,同時(shí)采用了格式符的概念,對(duì)同一個(gè)命令的不同返回結(jié)果可以提供不同的顯示格式。這樣既保證了不犧牲功能,又最大限度地保證了程序的相對(duì)穩(wěn)定,只有在需要有新類型的輸入?yún)?shù)和輸出參數(shù),需要有新的命令顯示格式時(shí),才需要修改程序增加對(duì)新參數(shù)和新格式的支持,由于開(kāi)發(fā)前期會(huì)覆蓋大部分的輸入?yún)?shù)和輸出參數(shù),四種命令顯示格式又基本上能覆蓋大部分的應(yīng)用,所以越是到開(kāi)發(fā)后期,改動(dòng)程序的情況越少。
圖1是本發(fā)明方法的流程2是本發(fā)明方法實(shí)施例的流程圖具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明的實(shí)現(xiàn)方式做進(jìn)一步詳細(xì)說(shuō)明。
如圖1所示,本發(fā)明方法主要包括以下步驟步驟一將字符串命令碼和輸入輸出參數(shù)記錄到本地的表或文件中;步驟二對(duì)下發(fā)的字符串命令進(jìn)行輸入?yún)?shù)的合法性檢查,通過(guò)合法性檢查的字符串命令下發(fā);步驟三收到字符串命令返回結(jié)果后,用輸出參數(shù)從返回結(jié)果中獲取輸出結(jié)果,并按照顯示格式進(jìn)行格式顯示。
本發(fā)明方法可以應(yīng)用于各種字符串命令的處理中,下面以個(gè)人便攜電話系統(tǒng)(PHS)系統(tǒng)的網(wǎng)管系統(tǒng)為例,詳細(xì)介紹本發(fā)明的實(shí)施方法。
網(wǎng)管編程采用DELPHI,采用PARADOX數(shù)據(jù)庫(kù)記錄字符串命令信息(也可以用文件等其它方式記錄所有的命令信息,只是信息提取方式有些不同而已)。本方法中系統(tǒng)不是按照命令碼進(jìn)行分類處理,而是按照參數(shù)屬性來(lái)分類處理。對(duì)于每個(gè)輸入?yún)?shù)都有輸入?yún)?shù)屬性,對(duì)于每個(gè)輸出參數(shù)都有輸出參數(shù)的屬性,每種輸入?yún)?shù)屬性或者輸出參數(shù)屬性都由單獨(dú)的函數(shù)進(jìn)行處理。參數(shù)屬性由系統(tǒng)定義,需要窮舉,也可以自定義參數(shù)屬性。
需要定義三類表字符串命令表、輸入?yún)?shù)表和輸出參數(shù)表。字符串命令表用于記錄所有的字符串命令碼,輸入?yún)?shù)表用于記錄所有命令的輸入?yún)?shù)的屬性,輸出參數(shù)用于記錄所有的輸出參數(shù)的屬性和顯示的格式。表存放在本地硬盤上,也可以用文件等其它靜態(tài)存放方式。
對(duì)命令碼和輸入、輸出參數(shù)的定義如下WholeCmd.db表記錄所有的命令碼,見(jiàn)表1。
表1
CmdInpara.db表記錄了所有的命令輸入?yún)?shù),見(jiàn)表2。
表2
輸出格式可以歸納成四種頭參數(shù)格式、循環(huán)參數(shù)格式、行循環(huán)參數(shù)格式、二維循環(huán)參數(shù)格式。每種輸出格式分別對(duì)應(yīng)一個(gè)表,所以共有四個(gè)輸出參數(shù)表,命令結(jié)果的顯示格式可以采用這些格式或者這些格式的各種組合。頭參數(shù)格式用于表示“字段名=值”這種類型的輸出。循環(huán)參數(shù)和二維循環(huán)參數(shù)用于輸出多個(gè)字段的多條結(jié)果,不同的是,二維循環(huán)參數(shù)的顯示格式和表格類似,而循環(huán)參數(shù)適用于字段太多,如果用表格形式顯示可能在一個(gè)界面中顯示不全的情況。行循環(huán)參數(shù)是和二維循環(huán)參數(shù)配套使用的,行循環(huán)參數(shù)用于給二維循環(huán)參數(shù)的行記錄做注釋。
headPara.db表記錄頭參數(shù)格式的輸出參數(shù),見(jiàn)表3。
表3
頭參數(shù)格式顯示形式如下=======人機(jī)命令輸出內(nèi)容========主節(jié)點(diǎn)號(hào)=15呼叫區(qū)號(hào)=65534CyclePara.db表記錄循環(huán)參數(shù)格式的輸出參數(shù),見(jiàn)表4。
表4
循環(huán)參數(shù)格式顯示形式如下=======人機(jī)命令輸出內(nèi)容========順序號(hào)=96群內(nèi)序號(hào)=96中繼用戶邏輯號(hào)=15_40_36物理設(shè)備號(hào)=0-1-15-36中繼類型=雙向中繼線路信令方式=CCS共路信令號(hào)碼分析表號(hào)=0用戶測(cè)試組=0信令點(diǎn)類型=14位SPC目的地信令點(diǎn)編碼=0_0_1電路指示碼=356順序號(hào)=97群內(nèi)序號(hào)=97中繼用戶邏輯號(hào)=15_40_37物理設(shè)備號(hào)=0-1-15-37中繼類型=雙向中繼線路信令方式=CCS共路信令號(hào)碼分析表號(hào)=0用戶測(cè)試組=0信令點(diǎn)類型=14位SPC目的地信令點(diǎn)編碼=0_0_1電路指示碼=357ColPara.db表記錄行循環(huán)參數(shù)格式的輸出參數(shù),見(jiàn)表5。
表5
本輸出參數(shù)表是配合二維循環(huán)參數(shù)表使用的,用于給二維循環(huán)參數(shù)的每行記錄做注釋,如下面舉例中的“一級(jí)”、“二級(jí)”、“三級(jí)”,行循環(huán)參數(shù)格式的顯示形式如下=======人機(jī)命令輸出內(nèi)容========CPU占用率剩余UB百分比 呼叫強(qiáng)度(1次/5秒) 信令鏈路擁塞一級(jí)85 10 200 1二級(jí)80 20 100 1三級(jí)75 30 140 1EwPara.db表記錄二維循環(huán)參數(shù)格式的輸出參數(shù),見(jiàn)表6。
表6
二維循環(huán)參數(shù)格式的顯示形式如下=======人機(jī)命令輸出內(nèi)容========基站序列號(hào)ANU主節(jié)點(diǎn)號(hào)CSC子節(jié)點(diǎn)號(hào)基站索引號(hào)基站類型基站標(biāo)識(shí)5015 6 56CS11B 8180088032005115 6 60CS11B 8180088033005215 6 64CS11B 818008803400如圖2所示,PHS網(wǎng)管處理步驟如下步驟100,用戶將所有的字符串命令的輸入和輸出參數(shù)信息填入表1至表6,對(duì)應(yīng)表中沒(méi)有記錄的可以不填,本操作只須做一次。
步驟110,用戶輸入字符串命令并下發(fā)命令,網(wǎng)管從字符串命令中分離出命令碼和所有的輸入?yún)?shù),在WholeCmd.db中找到命令碼,并在CmdInpara.db中找到該命令碼的所有輸入?yún)?shù),并根據(jù)參數(shù)屬性判斷是否有輸入?yún)?shù)遺漏,是否輸入的參數(shù)符合參數(shù)類型,輸入?yún)?shù)是否超出范圍。如果判斷未通過(guò),則提示用戶并退出。
步驟120,網(wǎng)管將命令下發(fā)給前臺(tái)。
步驟130,前臺(tái)返回命令執(zhí)行命令結(jié)果,執(zhí)行結(jié)果是二進(jìn)制流。
步驟140a,從返回二進(jìn)制流中先取出執(zhí)行結(jié)果。對(duì)于執(zhí)行結(jié)果是錯(cuò)誤的情況,直接取出錯(cuò)誤碼,翻譯成相應(yīng)的錯(cuò)誤結(jié)果字符串,并直接顯示該字符串執(zhí)行結(jié)果,流程結(jié)束。
步驟140b,對(duì)于執(zhí)行結(jié)果是正確的情況,從返回二進(jìn)制流中取出格式控制符,根據(jù)命令碼和格式控制符依次尋找HeadPara.db、CyclePara.db、ColPara.db、Ewpara.db中的輸出參數(shù)記錄。不同的執(zhí)行結(jié)果可能需要有不同的輸出格式進(jìn)行顯示,用格式控制符來(lái)控制不同的輸出結(jié)果可以有不同的輸出內(nèi)容和格式。
步驟150a,如果該命令碼和格式控制符在ColPara.db中沒(méi)有對(duì)應(yīng)記錄,則根據(jù)HeadPara.db、CyclePara.db、Ewpara.db表中的字段屬性依次從返回二進(jìn)制流中取出頭參數(shù)、循環(huán)參數(shù)、二維循環(huán)參數(shù)。輸出按照頭參數(shù)格式、循環(huán)參數(shù)格式和二維循環(huán)參數(shù)的顯示格式進(jìn)行顯示。
步驟150b,如果該命令碼和格式控制符在ColPara.db中有對(duì)應(yīng)記錄,則根據(jù)HeadPara.db、CyclePara.db、Ewpara.db表中的字段屬性依次從返回二進(jìn)制流中取出頭參數(shù)、循環(huán)參數(shù)、二維循環(huán)參數(shù),由于每一個(gè)行循環(huán)參數(shù)記錄,都對(duì)應(yīng)于一行的二維循環(huán)參數(shù),所以有N條行循環(huán)參數(shù)記錄,就需要根據(jù)Ewpara.db中的二維循環(huán)參數(shù)字段從輸出二進(jìn)制流中讀取N遍的二維循環(huán)參數(shù)。輸出按照頭參數(shù)格式、循環(huán)參數(shù)格式和行循環(huán)參數(shù)的顯示格式進(jìn)行顯示。
應(yīng)當(dāng)理解的是,對(duì)本領(lǐng)域普通技術(shù)人員來(lái)說(shuō),可以根據(jù)本發(fā)明的技術(shù)構(gòu)思進(jìn)行等同改變或替換,而所有這種無(wú)需額外創(chuàng)造性勞動(dòng)的改變或替換方案都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。
權(quán)利要求
1.一種字符串命令處理方法,其特征在于,包括以下處理步驟步驟一將字符串命令碼和輸入輸出參數(shù)記錄到本地的表或文件中;步驟二對(duì)下發(fā)的字符串命令進(jìn)行輸入?yún)?shù)的合法性檢查,通過(guò)合法性檢查的字符串命令下發(fā);步驟三收到字符串命令返回結(jié)果后,用輸出參數(shù)從返回結(jié)果中獲取輸出結(jié)果,并按照顯示格式進(jìn)行格式顯示。
2.如權(quán)利要求1所述的方法,其特征在于所述的步驟一具體包括以下步驟1.1)定義命令碼、輸入輸出參數(shù)屬性,每種命令設(shè)定唯一的命令碼,每個(gè)輸入和輸出參數(shù)都設(shè)定對(duì)應(yīng)的參數(shù)屬性;1.2)將所有的字符串命令碼、輸入?yún)?shù)屬性和輸出參數(shù)屬性記錄在表或者文件中。
3.如權(quán)利要求1所述的方法,其特征在于所述的步驟二具體包括以下步驟2.1)用戶下發(fā)字符串命令;2.2)系統(tǒng)從字符串命令中提取命令碼,并從字符串命令表和輸入?yún)?shù)表中提取該命令碼對(duì)應(yīng)的輸入?yún)?shù),進(jìn)行輸入?yún)?shù)的合法性檢查;2.3)如果字符串命令通過(guò)合法性檢查則將命令下發(fā)給前臺(tái),如果沒(méi)有通過(guò)合法性檢查則向用戶提示錯(cuò)誤信息。
4.如權(quán)利要求1所述的方法,其特征在于使用格式控制符來(lái)控制不同的輸出結(jié)果可以有不同的輸出內(nèi)容和格式。
5.如權(quán)利要求4所述的方法,其特征在于所述的步驟三具體包括以下步驟3.1)接收字符串命令返回結(jié)果;3.2)對(duì)于返回錯(cuò)誤執(zhí)行結(jié)果的,直接從輸出的命令結(jié)果中提取錯(cuò)誤碼,根據(jù)錯(cuò)誤碼解釋成對(duì)應(yīng)的錯(cuò)誤結(jié)果字符串,直接顯示該錯(cuò)誤結(jié)果字符串,流程結(jié)束;3.3)對(duì)于返回正確執(zhí)行結(jié)果的,從輸出的命令結(jié)果中提取格式控制符,并根據(jù)命令碼和格式控制符從參數(shù)格式表中讀取輸出參數(shù),再按照輸出參數(shù)屬性從輸出的命令結(jié)果中提取對(duì)應(yīng)的輸出數(shù)據(jù);3.4)輸出數(shù)據(jù)按照輸出參數(shù)所對(duì)應(yīng)參數(shù)格式表的固有格式進(jìn)行顯示。
6.如權(quán)利要求1所述的方法,其特征在于所述的每種輸入?yún)?shù)屬性或者輸出參數(shù)屬性都由單獨(dú)的函數(shù)進(jìn)行處理。
7.如權(quán)利要求1所述的方法,其特征在于所述的顯示格式包括頭參數(shù)格式、循環(huán)參數(shù)格式、行循環(huán)參數(shù)格式、二維循環(huán)參數(shù)格式,輸出命令結(jié)果時(shí)可以分別采用這些格式或者采用這些格式的各種組合。
8.如權(quán)利要求7所述的方法,其特征在于如果所述的行循環(huán)參數(shù)表中也有命令碼和格式控制符的相應(yīng)記錄,則直接將這些記錄作為二維循環(huán)參數(shù)輸出記錄的行注釋,如果該命令碼和所對(duì)應(yīng)的格式控制符在行循環(huán)參數(shù)表中有N條記錄,則應(yīng)該從輸出的命令結(jié)果中提取N次的二維循環(huán)參數(shù),其中N為整數(shù)。
全文摘要
本發(fā)明公開(kāi)了一種字符串命令處理方法,具體采用以下步驟將字符串命令碼和輸入輸出參數(shù)記錄到本地的表或文件中;對(duì)下發(fā)的字符串命令進(jìn)行輸入?yún)?shù)的合法性檢查,通過(guò)合法性檢查的字符串命令下發(fā);收到字符串命令返回結(jié)果后,用輸出參數(shù)從返回結(jié)果中獲取輸出結(jié)果,并按照顯示格式進(jìn)行格式顯示。本方法在增加新的和修改舊的字符串命令時(shí),不需要改動(dòng)原先的程序,只需要在表中增加或修改該命令的相關(guān)記錄,對(duì)同一個(gè)命令的不同返回結(jié)果可以提供不同的顯示格式,既保證了不犧牲功能,又極大地提高了可維護(hù)性和程序的可靠性。
文檔編號(hào)G06F9/44GK1564128SQ200410030389
公開(kāi)日2005年1月12日 申請(qǐng)日期2004年3月26日 優(yōu)先權(quán)日2004年3月26日
發(fā)明者謝永輝, 蔣賢忠, 羅江凱 申請(qǐng)人:中興通訊股份有限公司