通信數(shù)據(jù)協(xié)議構(gòu)造與分解系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種計算機數(shù)據(jù)處理技術(shù),更具體的說,涉及一種基于通信數(shù)據(jù)協(xié)議的數(shù)據(jù)構(gòu)造與分解系統(tǒng)及方法。
【背景技術(shù)】
[0002]對于一個大型系統(tǒng)來說,它可能由多個設(shè)備構(gòu)成,每個設(shè)備只是系統(tǒng)的一個部分,它通過與周邊設(shè)備進行交互完成整個系統(tǒng)的功能。而整個系統(tǒng)的穩(wěn)定性、安全性雖然不能完全由單個設(shè)備決定,但每個設(shè)備獨立的穩(wěn)定性、安全性的提升,對應(yīng)整個系統(tǒng)的穩(wěn)定性、安全性有非常大的幫助。而單個設(shè)備的測試,一般是通過操作周邊設(shè)備構(gòu)造測試通信數(shù)據(jù),通過查看被測設(shè)備的狀態(tài),或者查看被測設(shè)備返回的通信數(shù)據(jù)信息來判斷被測設(shè)備是否符合預(yù)期要求。在以往的實際工作中,大部分測試通信數(shù)據(jù)的構(gòu)造是通過手工方式直接構(gòu)造,這種方式不僅效率非常低,而且也非常容易出錯。另一方面,為了驗證被測設(shè)備返回結(jié)果的正確性,還需要對返回的通信數(shù)據(jù)進行分解,對于復(fù)雜的數(shù)據(jù)協(xié)議,手動的分解過程效率非常低,也非常容易出錯,最終影響對被測設(shè)備測試結(jié)果的判斷。
【發(fā)明內(nèi)容】
[0003]本發(fā)明針對上述現(xiàn)有技術(shù),提供一種通信數(shù)據(jù)協(xié)議構(gòu)造與分解系統(tǒng)及方法,該系統(tǒng)通過可視化的數(shù)據(jù)構(gòu)造以及數(shù)據(jù)協(xié)議構(gòu)造方式來極大地提升構(gòu)造與分解通信測試數(shù)據(jù)的效率、正確率。
[0004]為達(dá)到上述目的,本發(fā)明所采用的技術(shù)方案如下:
[0005]一種通信數(shù)據(jù)協(xié)議構(gòu)造與分解系統(tǒng),包括基于數(shù)據(jù)協(xié)議封包、解包模塊、可視化數(shù)據(jù)協(xié)議編輯模塊、可視化通信數(shù)據(jù)編輯模塊,所述基于數(shù)據(jù)協(xié)議封包、解包模塊,是該系統(tǒng)的核心模塊,它將用戶定義的數(shù)據(jù)協(xié)議、通信數(shù)據(jù)最終轉(zhuǎn)換為能夠直接進行通信傳輸?shù)臄?shù)據(jù)序列;所述可視化數(shù)據(jù)協(xié)議編輯模塊,用來進行特定數(shù)據(jù)協(xié)議的定義;所述可視化通信數(shù)據(jù)編輯模塊,用來構(gòu)建一個測試用的通信數(shù)據(jù)。
[0006]所述基于數(shù)據(jù)協(xié)議封包、解包模塊主要是由數(shù)據(jù)匹配邏輯模塊,匹配狀態(tài)堆棧模塊,數(shù)據(jù)序列化模塊,Python腳本轉(zhuǎn)換執(zhí)行模塊構(gòu)成,用來將一個后期才能確定的數(shù)據(jù)轉(zhuǎn)換為真實BUFFER。
[0007]所述可視化數(shù)據(jù)協(xié)議編輯模塊主要是由一個UI展示模塊與一個數(shù)據(jù)協(xié)議表達(dá)模塊以及一個數(shù)據(jù)值生成模塊構(gòu)成,通過樹形列表控件支持協(xié)議、子協(xié)議的構(gòu)造,每個協(xié)議字段類型的設(shè)置,字段之間依賴關(guān)系的設(shè)置。
[0008]所述可視化通信數(shù)據(jù)編輯模塊主要是由一個Π表現(xiàn)模塊和一個協(xié)議實例數(shù)據(jù)表達(dá)模塊構(gòu)成,完成一個協(xié)議實例化的過程,每個數(shù)據(jù)協(xié)議能構(gòu)造出無數(shù)的實例數(shù)據(jù),可視化通信數(shù)據(jù)編輯模塊通過一個樹形列表控件將編輯過程變得非常直觀。
[0009]一種通信數(shù)據(jù)協(xié)議構(gòu)造與分解方法,采用上述的系統(tǒng)來完成,包括步驟如下:
[0010]第一步,通過可視化數(shù)據(jù)協(xié)議編輯模塊構(gòu)建一個數(shù)據(jù)協(xié)議表達(dá);
[0011]第二步,基于數(shù)據(jù)協(xié)議表達(dá),通過可視化通信數(shù)據(jù)編輯模塊構(gòu)造通信數(shù)據(jù);
[0012]第三步,通過數(shù)據(jù)協(xié)議封包模塊將構(gòu)造的通信數(shù)據(jù)轉(zhuǎn)換為通信數(shù)據(jù)流。
[0013]所述第一步的具體實現(xiàn)方法是:在可視化數(shù)據(jù)協(xié)議編輯模塊中,通過可視化操作創(chuàng)建一個協(xié)議,然后創(chuàng)建協(xié)議中的各個字段信息,各個字段信息包括名稱,數(shù)據(jù)類型,長度,默認(rèn)值,設(shè)置協(xié)議的大小端,所有設(shè)置完成后,點擊保存即可。
[0014]所述第二步的具體實現(xiàn)方法是:打開可視化通信數(shù)據(jù)編輯模塊,然后選擇待編輯的協(xié)議,Π視圖中自動列出協(xié)議各個字段的信息,報告字段的默認(rèn)值,用戶在Π視圖中,字段的真實值那里輸入該字段實際值,然后保存,就完成了一個協(xié)議的實例化過程。
[0015]所述第三步的具體實現(xiàn)方法是:在數(shù)據(jù)發(fā)送前,將構(gòu)造的協(xié)議實例化表達(dá)交給數(shù)據(jù)協(xié)議封包、解包模塊,自動解析實例化表達(dá)規(guī)范,將每個字段的值轉(zhuǎn)換為一個數(shù)據(jù)BUFFER,然后對這些BUFFER序列化生成一個待發(fā)送數(shù)據(jù)BUFFER,在接收到數(shù)據(jù)之后,將接收BUFFER交給協(xié)議解包模塊,對可能的協(xié)議進行每個字段的匹配,直到所有字段都匹配成功,滿足某個協(xié)議。
[0016]由于一個大的系統(tǒng)往往由多個設(shè)備相互連接構(gòu)成,而以前針對這樣的環(huán)境進行測試時,通信數(shù)據(jù)的構(gòu)造、解包是非常麻煩的工作,不僅占用大量的時間,而且還非常容易產(chǎn)生錯誤,一旦有錯誤,重新定位測試失敗的原因是一件非常費力的事情。而本發(fā)明在這樣的環(huán)境中可以幫助使用者快速、正確的構(gòu)建通信數(shù)據(jù)、解包通信數(shù)據(jù)。
【附圖說明】
[0017]通過閱讀參照以下附圖對非限制性實施例所作的詳細(xì)描述,本發(fā)明的其它特征、目的和優(yōu)點將會變得更明顯:
[0018]圖1是本發(fā)明系統(tǒng)的組成框圖;
[0019]圖2是本發(fā)明方法流程圖;
[0020]圖3是本發(fā)明一實施例的數(shù)據(jù)協(xié)議構(gòu)造圖。
【具體實施方式】
[0021]下面結(jié)合具體實施例對本發(fā)明進行詳細(xì)說明。以下實施例將有助于本領(lǐng)域的技術(shù)人員進一步理解本發(fā)明,但不以任何形式限制本發(fā)明。應(yīng)當(dāng)指出的是,對本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進。這些都屬于本發(fā)明的保護范圍。
[0022]如圖1所示,本發(fā)明所提供的通信數(shù)據(jù)協(xié)議構(gòu)造與分解系統(tǒng),包括基于數(shù)據(jù)協(xié)議封包、解包模塊,可視化數(shù)據(jù)協(xié)議編輯模塊,可視化通信數(shù)據(jù)編輯模塊。
[0023]基于數(shù)據(jù)協(xié)議封包、解包模塊,是系統(tǒng)的核心模塊,它將用戶定義的數(shù)據(jù)協(xié)議,通信數(shù)據(jù)最終轉(zhuǎn)換為可以直接進行通信傳輸?shù)臄?shù)據(jù)序列。
[0024]可視化的數(shù)據(jù)協(xié)議編輯模塊,用來進行特定數(shù)據(jù)協(xié)議的定義。
[0025]可視化的通信數(shù)據(jù)編輯模塊,用來構(gòu)建一個測試用的通信數(shù)據(jù)。
[0026]如圖2所示,本發(fā)明方法步驟如下:
[0027]第一步,通過可視化數(shù)據(jù)協(xié)議編輯模塊構(gòu)建一個數(shù)據(jù)協(xié)議表達(dá);
[0028]第二步,基于數(shù)據(jù)協(xié)議表達(dá),通過可視化通信數(shù)據(jù)編輯模塊構(gòu)造通信數(shù)據(jù);
[0029]第三步,通過數(shù)據(jù)協(xié)議封包模塊將構(gòu)造的通信數(shù)據(jù)轉(zhuǎn)換為通信數(shù)據(jù)流。
[0030]為了更好的說明具體實施過程,以一個串口通信的例子為例進行說明。該實施例中,數(shù)據(jù)協(xié)議包括四個部分,數(shù)據(jù)頭、數(shù)據(jù)長度、數(shù)據(jù)內(nèi)容、校驗值,測試發(fā)送一個3個字節(jié)的數(shù)據(jù)\x0A\x0B\x0C?;诖耸纠?
[0031]第一步構(gòu)建數(shù)據(jù)協(xié)議定義,如圖3所示;
[0032]第二步構(gòu)建測試數(shù)據(jù);
[0033]第三步最終生成的通信數(shù)據(jù);
[0034]其中,第一步構(gòu)建數(shù)據(jù)協(xié)議定義中,先創(chuàng)建一個數(shù)據(jù)協(xié)義,串口命令協(xié)義,然后通過鼠標(biāo)右鍵添加協(xié)義字段,這里演示例子中添加有4個字段,包括協(xié)義頭,數(shù)據(jù)長度,數(shù)據(jù)內(nèi)容,校驗位,協(xié)義頭定義了類型是Intl6,也就是兩個字節(jié)寬度,默認(rèn)值是OxEAEF,并且可以添加描述信息,數(shù)據(jù)長度也是Intl6,兩個字節(jié)寬度,數(shù)據(jù)內(nèi)容是一個Buffer,它的長度依賴于數(shù)據(jù)長度段。第二步構(gòu)建測試數(shù)據(jù),通過在可視化編輯界面中對協(xié)義各個字段進行賦值,完成協(xié)義實例化。第三步通過協(xié)義封包模塊將實例化的數(shù)據(jù)序列化成一個最終的通信數(shù)據(jù)BUFFER。
[0035]以上對本發(fā)明的具體實施例進行了描述。需要理解的是,本發(fā)明并不局限于上述特定實施方式,本領(lǐng)域技術(shù)人員可以在權(quán)利要求的范圍內(nèi)做出各種變形或修改,這并不影響本發(fā)明的實質(zhì)內(nèi)容。
【主權(quán)項】
1.一種通信數(shù)據(jù)協(xié)議構(gòu)造與分解系統(tǒng),其特征在于,包括基于數(shù)據(jù)協(xié)議封包、解包模塊、可視化數(shù)據(jù)協(xié)議編輯模塊、可視化通信數(shù)據(jù)編輯模塊,所述基于數(shù)據(jù)協(xié)議封包、解包模塊,是該系統(tǒng)的核心模塊,它將用戶定義的數(shù)據(jù)協(xié)議、通信數(shù)據(jù)最終轉(zhuǎn)換為能夠直接進行通信傳輸?shù)臄?shù)據(jù)序列;所述可視化數(shù)據(jù)協(xié)議編輯模塊,用來進行特定數(shù)據(jù)協(xié)議的定義;所述可視化通信數(shù)據(jù)編輯模塊,用來構(gòu)建一個測試用的通信數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的通信數(shù)據(jù)協(xié)議構(gòu)造與分解系統(tǒng),其特征在于,所述基于數(shù)據(jù)協(xié)議封包、解包模塊主要是由數(shù)據(jù)匹配邏輯模塊,匹配狀態(tài)堆棧模塊,數(shù)據(jù)序列化模塊,Python腳本轉(zhuǎn)換執(zhí)行模塊構(gòu)成,用來將一個后期才能確定的數(shù)據(jù)轉(zhuǎn)換為真實BUFFER。
3.根據(jù)權(quán)利要求1所述的通信數(shù)據(jù)協(xié)議構(gòu)造與分解系統(tǒng),其特征在于,所述可視化數(shù)據(jù)協(xié)議編輯模塊主要是由一個Π展示模塊與一個數(shù)據(jù)協(xié)議表達(dá)模塊以及一個數(shù)據(jù)值生成模塊構(gòu)成,通過樹形列表控件支持協(xié)議、子協(xié)議的構(gòu)造,每個協(xié)議字段類型的設(shè)置,字段之間依賴關(guān)系的設(shè)置。
4.根據(jù)權(quán)利要求1所述的通信數(shù)據(jù)協(xié)議構(gòu)造與分解系統(tǒng),其特征在于,所述可視化通信數(shù)據(jù)編輯模塊主要是由一個Π表現(xiàn)模塊和一個協(xié)議實例數(shù)據(jù)表達(dá)模塊構(gòu)成,完成一個協(xié)議實例化的過程,每個數(shù)據(jù)協(xié)議能構(gòu)造出無數(shù)的實例數(shù)據(jù),可視化通信數(shù)據(jù)編輯模塊通過一個樹形列表控件將編輯過程變得非常直觀。
5.一種通信數(shù)據(jù)協(xié)議構(gòu)造與分解方法,其特征在于,采用權(quán)利要求1所述的系統(tǒng)來完成,包括步驟如下: 第一步,通過可視化數(shù)據(jù)協(xié)議編輯模塊構(gòu)建一個數(shù)據(jù)協(xié)議表達(dá); 第二步,基于數(shù)據(jù)協(xié)議表達(dá),通過可視化通信數(shù)據(jù)編輯模塊構(gòu)造通信數(shù)據(jù); 第三步,通過數(shù)據(jù)協(xié)議封包模塊將構(gòu)造的通信數(shù)據(jù)轉(zhuǎn)換為通信數(shù)據(jù)流。
6.根據(jù)權(quán)利要求5所述的通信數(shù)據(jù)協(xié)議構(gòu)造與分解方法,其特征在于,所述第一步的具體實現(xiàn)方法是:在可視化數(shù)據(jù)協(xié)議編輯模塊中,通過可視化操作創(chuàng)建一個協(xié)議,然后創(chuàng)建協(xié)議中的各個字段信息,各個字段信息包括名稱,數(shù)據(jù)類型,長度,默認(rèn)值,設(shè)置協(xié)議的大小端,所有設(shè)置完成后,點擊保存即可。
7.根據(jù)權(quán)利要求6所述的通信數(shù)據(jù)協(xié)議構(gòu)造與分解方法,其特征在于,所述第二步的具體實現(xiàn)方法是:打開可視化通信數(shù)據(jù)編輯模塊,然后選擇待編輯的協(xié)議,UI視圖中自動列出協(xié)議各個字段的信息,報告字段的默認(rèn)值,用戶在Π視圖中,字段的真實值那里輸入該字段實際值,然后保存,就完成了一個協(xié)議的實例化過程。
8.根據(jù)權(quán)利要求7所述的通信數(shù)據(jù)協(xié)議構(gòu)造與分解方法,其特征在于,所述第三步的具體實現(xiàn)方法是:在數(shù)據(jù)發(fā)送前,將構(gòu)造的協(xié)議實例化表達(dá)交給數(shù)據(jù)協(xié)議封包、解包模塊,自動解析實例化表達(dá)規(guī)范,將每個字段的值轉(zhuǎn)換為一個數(shù)據(jù)BUFFER,然后對這些BUFFER序列化生成一個待發(fā)送數(shù)據(jù)BUFFER,在接收到數(shù)據(jù)之后,將接收BUFFER交給協(xié)議解包模塊,對可能的協(xié)議進行每個字段的匹配,直到所有字段都匹配成功,滿足某個協(xié)議。
【專利摘要】本發(fā)明公開一種通信數(shù)據(jù)協(xié)議構(gòu)造與分解系統(tǒng)及方法,包括基于數(shù)據(jù)協(xié)議封包、解包模塊、可視化數(shù)據(jù)協(xié)議編輯模塊、可視化通信數(shù)據(jù)編輯模塊,所述基于數(shù)據(jù)協(xié)議封包、解包模塊,是該系統(tǒng)的核心模塊,它將用戶定義的數(shù)據(jù)協(xié)議、通信數(shù)據(jù)最終轉(zhuǎn)換為能夠直接進行通信傳輸?shù)臄?shù)據(jù)序列;所述可視化數(shù)據(jù)協(xié)議編輯模塊,用來進行特定數(shù)據(jù)協(xié)議的定義;所述可視化通信數(shù)據(jù)編輯模塊,用來構(gòu)建一個測試用的通信數(shù)據(jù)。本發(fā)明通過可視化的數(shù)據(jù)構(gòu)造以及數(shù)據(jù)協(xié)議構(gòu)造方式來極大地提升構(gòu)造與分解通信測試數(shù)據(jù)的效率、正確率。
【IPC分類】H04L29-06
【公開號】CN104767729
【申請?zhí)枴緾N201510070400
【發(fā)明人】楊波波, 顧春建, 張謀晶
【申請人】上海創(chuàng)景計算機系統(tǒng)有限公司
【公開日】2015年7月8日
【申請日】2015年2月10日