專利名稱:機(jī)載設(shè)備網(wǎng)絡(luò)數(shù)據(jù)傳輸通用的數(shù)據(jù)格式轉(zhuǎn)換方法及其系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及航空領(lǐng)域民用飛機(jī)航空電子系統(tǒng),特別是涉及一種機(jī)載設(shè)備網(wǎng)絡(luò)數(shù)據(jù)傳輸通用的數(shù)據(jù)格式轉(zhuǎn)換方法及其系統(tǒng),該方法和系統(tǒng)適用于飛行管理系統(tǒng)、自動(dòng)控制系統(tǒng)、綜合顯示系統(tǒng)等各種航空電子系統(tǒng)之間的數(shù)據(jù)傳輸、加載和網(wǎng)絡(luò)通信。
背景技術(shù):
民用飛機(jī)航空電子系統(tǒng)之間離不開(kāi)相互的數(shù)據(jù)傳輸。由于機(jī)載電子系統(tǒng)的計(jì)算機(jī)體系結(jié)構(gòu)存在差異,會(huì)導(dǎo)致電子系統(tǒng)之間直接的數(shù)據(jù)傳輸錯(cuò)誤。為了保證數(shù)據(jù)傳輸正確,必須在數(shù)據(jù)傳輸中進(jìn)行相應(yīng)的數(shù)據(jù)格式轉(zhuǎn)換。按照不同的計(jì)算機(jī)體系結(jié)構(gòu)對(duì)于數(shù)據(jù)(比特、字節(jié)、字)的存儲(chǔ)和傳輸機(jī)制,主要有兩種數(shù)據(jù)傳輸和存儲(chǔ)格式大端存儲(chǔ)(Big-Endian)和小端存儲(chǔ)(Little-Endian)。在大端存儲(chǔ)的計(jì)算機(jī)體系結(jié)構(gòu)中規(guī)定把高位字節(jié)排放在內(nèi)存的低地址端,低位字節(jié)排放在內(nèi)存的高地址端,傳輸數(shù)據(jù)時(shí)高位數(shù)據(jù)放在流的開(kāi)始,低位數(shù)據(jù)放在流的末尾。相反,在小端存儲(chǔ)的計(jì)算機(jī)體系結(jié)構(gòu)中規(guī)定把低位字節(jié)排放在內(nèi)存的低地址端,高位字節(jié)排放在內(nèi)存的高地址端,傳輸數(shù)據(jù)時(shí)低位數(shù)據(jù)放在流的開(kāi)始,高位數(shù)據(jù)放在流的末尾。由此可見(jiàn),在小端存儲(chǔ)體系計(jì)算機(jī)和大端存儲(chǔ)體系計(jì)算機(jī)之間,若直接傳輸數(shù)據(jù)將得到錯(cuò)誤的數(shù)值。目前專門論述大端和小端數(shù)據(jù)格式轉(zhuǎn)換的著作非常少,在解決實(shí)際工程問(wèn)題吋,人們常根據(jù)經(jīng)驗(yàn)采用比較原始的方法進(jìn)行大端和小端數(shù)據(jù)格式字節(jié)序的轉(zhuǎn)換。對(duì)于雙字節(jié)和四字節(jié)的數(shù)據(jù),C語(yǔ)言提供了 hton、htonl、ntohs、ntohl四個(gè)轉(zhuǎn)換函數(shù),它們可以滿足部分?jǐn)?shù)據(jù)的字節(jié)序格式轉(zhuǎn)換,但是對(duì)于八字節(jié)的數(shù)據(jù)或者用戶自定義的結(jié)構(gòu)體數(shù)據(jù)則不能通過(guò)這些函數(shù)進(jìn)行轉(zhuǎn)換。因此,程序設(shè)計(jì)人員在遇到此類數(shù)據(jù)格式轉(zhuǎn)換時(shí)的做法是根據(jù)實(shí)際情況需要,為特定的數(shù)據(jù)和結(jié)構(gòu)體編寫特定的數(shù)據(jù)字節(jié)序格式轉(zhuǎn)換函數(shù),最常見(jiàn)的方法有定義共用體、位操作等。其中定義共用體的局限性最大,因?yàn)槌绦騿T必須為每個(gè)類型數(shù)據(jù)或結(jié)構(gòu)體數(shù)據(jù)定義ー個(gè)共用體類型以實(shí)現(xiàn)數(shù)據(jù)字節(jié)序格式的轉(zhuǎn)換,因此,這種方法沒(méi)有靈活性,編程工作量大,已經(jīng)完成的程序重用性差。位操作的靈活性和程序的可重用性較高,但是位操作只針對(duì)單個(gè)多字節(jié)的數(shù)據(jù),不能直接對(duì)用戶自定義的結(jié)構(gòu)體數(shù)據(jù)進(jìn)行字節(jié)序格式轉(zhuǎn)換,當(dāng)需要使用結(jié)構(gòu)體中的某ー個(gè)數(shù)據(jù)時(shí),再把這ー個(gè)數(shù)據(jù)按位操作進(jìn)行格式轉(zhuǎn)換。由此可見(jiàn),位操作方法的不足之處在于,當(dāng)結(jié)構(gòu)體數(shù)據(jù)定義非常龐大,且需要訪問(wèn)結(jié)構(gòu)體定義中的所有數(shù)據(jù)時(shí),仍需要挨個(gè)完成結(jié)構(gòu)體中包含數(shù)據(jù)的格式轉(zhuǎn)換,如果要對(duì)很多不同的結(jié)構(gòu)體都進(jìn)行轉(zhuǎn)換,則程序員的工作將沒(méi)完沒(méi)了,非常繁瑣。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題是提供ー種機(jī)載設(shè)備網(wǎng)絡(luò)數(shù)據(jù)傳輸通用的數(shù)據(jù)格式轉(zhuǎn)換方法及其系統(tǒng),其實(shí)現(xiàn)目前存在的各種不同網(wǎng)絡(luò)數(shù)據(jù)格式轉(zhuǎn)換處理方法的統(tǒng)一,簡(jiǎn)化設(shè)計(jì)人員在網(wǎng)絡(luò)接ロ協(xié)議和程序設(shè)計(jì)期間的工作,提高航空機(jī)載設(shè)備之間數(shù)據(jù)傳輸?shù)男?,降低機(jī)載設(shè)備之間數(shù)據(jù)傳輸錯(cuò)誤的風(fēng)險(xiǎn)。本發(fā)明是通過(guò)下述技術(shù)方案來(lái)解決上述技術(shù)問(wèn)題的ー種機(jī)載設(shè)備網(wǎng)絡(luò)數(shù)據(jù)傳輸通用的數(shù)據(jù)格式轉(zhuǎn)換方法,其特征在于,其包括以下步驟步驟一,根據(jù)被轉(zhuǎn)換源數(shù)據(jù)的類型,定義源數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類型描述說(shuō)明;步驟ニ,聲明源數(shù)據(jù)類型描述說(shuō)明的變量,并對(duì)該源數(shù)據(jù)類型描述說(shuō)明的變量進(jìn)行初始化賦值;步驟三,定義目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū);步驟四,按照數(shù)據(jù)格式轉(zhuǎn)換規(guī)則,對(duì)源數(shù)據(jù)類型描述說(shuō)明的變量進(jìn)行解析;步驟五,根據(jù)解析的數(shù)據(jù)類型對(duì)源數(shù)據(jù)進(jìn)行轉(zhuǎn)換,將轉(zhuǎn)換結(jié)果存儲(chǔ)到目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū)中。優(yōu)選地,如權(quán)利要求1所述的機(jī)載設(shè)備網(wǎng)絡(luò)數(shù)據(jù)傳輸通用的數(shù)據(jù)格式轉(zhuǎn)換方法,其特征在于,所述步驟ニ對(duì)源數(shù)據(jù)類型描述說(shuō)明的變量賦值即將其數(shù)據(jù)類型賦值為基本類型、數(shù)組類型或記錄類型中的ー種,元素個(gè)數(shù)賦值為X個(gè),X表示源數(shù)據(jù)自身包含的元素個(gè)數(shù),以及逐個(gè)說(shuō)明源數(shù)據(jù)組成元素的類型。優(yōu)選地,所述步驟三的目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū)是ー個(gè)已知的數(shù)據(jù)結(jié)構(gòu)體變量或是ー個(gè)字節(jié)數(shù)組。優(yōu)選地,所述步驟四和步驟五兩個(gè)步驟在數(shù)據(jù)轉(zhuǎn)換過(guò)程中是同時(shí)進(jìn)行的。優(yōu)選地,所述步驟五的轉(zhuǎn)換結(jié)果存儲(chǔ)到目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū)中是從目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū)的首地址開(kāi)始,根據(jù)解析源數(shù)據(jù)類型描述說(shuō)明的變量元素的循環(huán)次數(shù),移動(dòng)目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū)的地址指針找到對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)位置,然后把完成數(shù)據(jù)格式轉(zhuǎn)換的數(shù)據(jù)結(jié)果存儲(chǔ)到數(shù)據(jù)存儲(chǔ)區(qū)緩沖區(qū)對(duì)應(yīng)位置。本發(fā)明還提供ー種機(jī)載設(shè)備網(wǎng)絡(luò)數(shù)據(jù)傳輸通用的數(shù)據(jù)格式轉(zhuǎn)換系統(tǒng),其特征在于,其包括依次連接的結(jié)構(gòu)類型描述說(shuō)明定義模塊、初始化賦值模塊、緩沖區(qū)定義模塊、解析模塊、轉(zhuǎn)換模塊,結(jié)構(gòu)類型描述說(shuō)明定義模塊用于定義源數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類型描述說(shuō)明;初始化賦值模塊用于聲明源數(shù)據(jù)類型描述說(shuō)明的變量并對(duì)該源數(shù)據(jù)類型描述說(shuō)明的變量進(jìn)行初始化賦值;緩沖區(qū)定義模塊用于定義目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū);解析模塊對(duì)源數(shù)據(jù)類型描述說(shuō)明的變量進(jìn)行解析;轉(zhuǎn)換模塊根據(jù)解析的數(shù)據(jù)類型對(duì)源數(shù)據(jù)進(jìn)行轉(zhuǎn)換。本發(fā)明的積極進(jìn)步效果在干本發(fā)明實(shí)現(xiàn)目前存在的各種不同網(wǎng)絡(luò)數(shù)據(jù)格式轉(zhuǎn)換處理方法的統(tǒng)一,簡(jiǎn)化設(shè)計(jì)人員在網(wǎng)絡(luò)接ロ協(xié)議和程序設(shè)計(jì)期間的工作,提高航空機(jī)載設(shè)備之間數(shù)據(jù)傳輸?shù)男?,降低機(jī)載設(shè)備之間數(shù)據(jù)傳輸錯(cuò)誤的風(fēng)險(xiǎn)。另外,本發(fā)明可以對(duì)任意的數(shù)據(jù)類型,包括自定義的復(fù)雜結(jié)構(gòu)體數(shù)據(jù)進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換后可以保持?jǐn)?shù)據(jù)結(jié)構(gòu)體的完整性,而避免了一次轉(zhuǎn)換只能完成結(jié)構(gòu)體數(shù)據(jù)包含的某ー個(gè)數(shù)據(jù)的缺點(diǎn),極大的提高了轉(zhuǎn)換效率、減少了程序設(shè)計(jì)的難度和工作量,實(shí)現(xiàn)了數(shù)據(jù)格式轉(zhuǎn)換方法的統(tǒng)一,降低了數(shù)據(jù)傳輸錯(cuò)誤的風(fēng)險(xiǎn)。
圖1為大端字節(jié)序數(shù)據(jù)存儲(chǔ)示意圖。圖2為簡(jiǎn)單數(shù)組類型描述說(shuō)明的示意圖。圖3為簡(jiǎn)單記錄類型描述說(shuō)明的示意圖。
圖4為高級(jí)記錄類型描述說(shuō)明的示意圖。圖5為本發(fā)明機(jī)載設(shè)備網(wǎng)絡(luò)數(shù)據(jù)傳輸通用的數(shù)據(jù)格式轉(zhuǎn)換方法的流程圖。圖6為本發(fā)明中簡(jiǎn)單記錄數(shù)據(jù)格式解析、轉(zhuǎn)換的流程圖。圖7為本發(fā)明中通用網(wǎng)絡(luò)數(shù)據(jù)格式轉(zhuǎn)換的流程圖。圖8為本發(fā)明機(jī)載設(shè)備網(wǎng)絡(luò)數(shù)據(jù)傳輸通用的數(shù)據(jù)格式轉(zhuǎn)換系統(tǒng)的原理框圖。
具體實(shí)施方式
下面結(jié)合附圖給出本發(fā)明較佳實(shí)施例,以詳細(xì)說(shuō)明本發(fā)明的技術(shù)方案。本發(fā)明首先對(duì)網(wǎng)絡(luò)數(shù)據(jù)字節(jié)序、定義網(wǎng)絡(luò)數(shù)據(jù)的類型描述、定義網(wǎng)絡(luò)數(shù)據(jù)類型描述說(shuō)明層級(jí)、設(shè)計(jì)網(wǎng)絡(luò)數(shù)據(jù)格式轉(zhuǎn)換規(guī)則等進(jìn)行說(shuō)明,具體內(nèi)容如下(I)網(wǎng)絡(luò)數(shù)據(jù)字節(jié)序說(shuō)明網(wǎng)絡(luò)數(shù)據(jù)字節(jié)序是指數(shù)據(jù)的位(比持)、字節(jié)在計(jì)算機(jī)體系結(jié)構(gòu)中的存儲(chǔ)和傳輸機(jī)制。在ー個(gè)bit序列或ー個(gè)byte序列中對(duì)整個(gè)序列取值影響最大的那個(gè)bit/byte被稱為最重要的位或最重要的字節(jié)(MSB),在ー個(gè)bit序列或ー個(gè)byte序列中對(duì)整個(gè)序列取值影響最小的那個(gè)bit/byte被稱為最不重要的位或最不重要的字節(jié)(LSB)。大端字節(jié)序方式規(guī)定數(shù)據(jù)存儲(chǔ)時(shí)MSB存放在低地址,LSB存放在高地址;傳輸數(shù)據(jù)時(shí)MSB放在流的開(kāi)始,LSB放在流的末尾。小端字節(jié)序方式規(guī)定數(shù)據(jù)存儲(chǔ)時(shí)LSB存放在低地址,MSB存放在高地址;傳輸數(shù)據(jù)時(shí)LSB放在流的開(kāi)始,MSB放在流的末尾。大端字節(jié)序數(shù)據(jù)存儲(chǔ)示意圖如圖1所示。(2)定義網(wǎng)絡(luò)數(shù)據(jù)的類型描述說(shuō)明數(shù)據(jù)的種類可以分為數(shù)、數(shù)組或結(jié)構(gòu)體,也可以把結(jié)構(gòu)體稱作ー個(gè)記錄,因此網(wǎng)絡(luò)數(shù)據(jù)類型描述說(shuō)明定義可以分為多種不同的情況對(duì)單個(gè)多字節(jié)數(shù)據(jù)類型進(jìn)行描述;對(duì)元素為若干個(gè)多字節(jié)數(shù)據(jù)構(gòu)成的數(shù)組類型進(jìn)行描述;對(duì)元素為若干個(gè)多字節(jié)數(shù)據(jù)構(gòu)成的結(jié)構(gòu)體類型進(jìn)行描述;對(duì)元素為若干個(gè)結(jié)構(gòu)體數(shù)據(jù),且結(jié)構(gòu)體元素為若干個(gè)多字節(jié)數(shù)據(jù)構(gòu)成的數(shù)組類型進(jìn)行描述;對(duì)元素為若干個(gè)多字節(jié)數(shù)據(jù)和數(shù)組數(shù)據(jù),且數(shù)組元素為若干個(gè)多字節(jié)數(shù)據(jù)構(gòu)成的結(jié)構(gòu)體類型進(jìn)行描述;對(duì)元素為若干個(gè)結(jié)構(gòu)體數(shù)據(jù),且結(jié)構(gòu)體元素包含其它數(shù)組數(shù)據(jù)或結(jié)構(gòu)體數(shù)據(jù)構(gòu)成的數(shù)組類型,或者元素包括若干數(shù)組數(shù)據(jù)或結(jié)構(gòu)體數(shù)據(jù),且數(shù)組或結(jié)構(gòu)體元素又包括其它數(shù)組數(shù)據(jù)或結(jié)構(gòu)體數(shù)據(jù)構(gòu)成的結(jié)構(gòu)體數(shù)據(jù)進(jìn)行描述。a)定義單個(gè)多字節(jié)數(shù)據(jù)的類型描述說(shuō)明需要進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換的多字節(jié)數(shù)據(jù)類型為基本類型,包括unsigned shout、化しれ此し如油丨⑴它們分別為16位、32為或64位的基本數(shù)據(jù)類型,在存儲(chǔ)空間中分別占據(jù)2個(gè)字節(jié)、4個(gè)字節(jié)或8個(gè)字節(jié),它們對(duì)應(yīng)的大端和小端字節(jié)序格式都不相同。此外,還有ー個(gè)基本數(shù)據(jù)類型char為8位占I個(gè)字節(jié),其對(duì)應(yīng)的大端和小端字節(jié)序格式相同。對(duì)于這些基本數(shù)據(jù)的類型描述說(shuō)明分別定義為8位數(shù)據(jù)、16位數(shù)據(jù)、32位數(shù)據(jù)或64位數(shù)據(jù)。b)定義元素為若干個(gè)多字節(jié)數(shù)據(jù)構(gòu)成的數(shù)組的類型描述說(shuō)明
元素為若干個(gè)基本數(shù)據(jù)構(gòu)成的數(shù)組,其類型描述說(shuō)明比較容易,可以稱這種數(shù)組類型為簡(jiǎn)單數(shù)組類型。定義簡(jiǎn)単數(shù)組的類型描述說(shuō)明可分為三個(gè)步驟,首先應(yīng)該明確其數(shù)據(jù)類型為數(shù)組類型,然后確定數(shù)組包含的元素個(gè)數(shù),最后確定數(shù)組元素的數(shù)據(jù)類型描述說(shuō)明。綜合以上三個(gè)部分就完成了簡(jiǎn)單數(shù)組的類型描述說(shuō)明定義,其類型描述說(shuō)明定義如圖2所示。c)定義元素為若干個(gè)多字節(jié)數(shù)據(jù)構(gòu)成的結(jié)構(gòu)體的類型描述說(shuō)明元素為若干個(gè)基本數(shù)據(jù)構(gòu)成的結(jié)構(gòu)體,其類型描述說(shuō)明比較容易,可以稱這種結(jié)構(gòu)體類型為簡(jiǎn)單結(jié)構(gòu)體類型。定義簡(jiǎn)單結(jié)構(gòu)體的類型描述說(shuō)明與簡(jiǎn)單數(shù)組ー樣分為三個(gè)步驟,首先應(yīng)該明確其數(shù)據(jù)類型為記錄類型,然后確定結(jié)構(gòu)體包含的元素個(gè)數(shù),最后確定結(jié)構(gòu)體元素的數(shù)據(jù)類型描述說(shuō)明。綜合以上三個(gè)部分就完成了簡(jiǎn)單結(jié)構(gòu)體的類型描述說(shuō)明定義,其類型描述說(shuō)明定義如圖3所示。d)定義其他數(shù)據(jù)的類型描述說(shuō)明元素為若干個(gè)結(jié)構(gòu)體數(shù)據(jù),且結(jié)構(gòu)體元素為若干個(gè)基本數(shù)據(jù)構(gòu)成的數(shù)組類型可以稱為高級(jí)數(shù)組類型;元素為若干個(gè)基本數(shù)據(jù)和數(shù)組數(shù)據(jù),且數(shù)組元素為若干個(gè)基本數(shù)據(jù)構(gòu)成的結(jié)構(gòu)體類型可以稱為高級(jí)記錄類型。高級(jí)數(shù)組類型和高級(jí)記錄類型的類型描述說(shuō)明定義也分為三個(gè)步驟,它們的類型描述說(shuō)明定義與簡(jiǎn)單數(shù)組和簡(jiǎn)單記錄類型一祥,仍然是先明確其數(shù)據(jù)類型為數(shù)組或記錄,然后再確定該數(shù)組或記錄的元素個(gè)數(shù),最后確定元素的數(shù)據(jù)類型描述說(shuō)明。與簡(jiǎn)單數(shù)組或簡(jiǎn)單記錄不同的是,對(duì)高級(jí)數(shù)組或高級(jí)記錄的元素進(jìn)行數(shù)據(jù)類型描述時(shí)應(yīng)該注意其元素為簡(jiǎn)單數(shù)組或簡(jiǎn)單記錄,對(duì)這些元素進(jìn)行類型描述時(shí)應(yīng)該按照簡(jiǎn)單數(shù)組或記錄的方法。當(dāng)所有元素的類型描述完成以后才最終完成高級(jí)數(shù)組或高級(jí)記錄的類型描述說(shuō)明定義。高級(jí)記錄類型的數(shù)據(jù)類型描述說(shuō)明定義如圖4所示。元素為若干個(gè)結(jié)構(gòu)體數(shù)據(jù),且結(jié)構(gòu)體元素包含其它數(shù)組數(shù)據(jù)或結(jié)構(gòu)體數(shù)據(jù)構(gòu)成的數(shù)組類型,以及元素包括若干數(shù)組數(shù)據(jù)或結(jié)構(gòu)體數(shù)據(jù),且數(shù)組或結(jié)構(gòu)體元素又包括其它數(shù)組數(shù)據(jù)或結(jié)構(gòu)體數(shù)據(jù)構(gòu)成的結(jié)構(gòu)體數(shù)據(jù)統(tǒng)ー稱為復(fù)雜數(shù)據(jù)類型。定義復(fù)雜數(shù)據(jù)類型的類型描述說(shuō)明也與高級(jí)數(shù)組或記錄一祥,先明確其數(shù)據(jù)類型為數(shù)組或記錄,然后再確定該數(shù)組或記錄的元素個(gè)數(shù),最后確定元素的數(shù)據(jù)類型描述說(shuō)明,并且每ー個(gè)是數(shù)組或記錄的元素都應(yīng)該按照相同的方法繼續(xù)定義類型描述說(shuō)明。(3)定義網(wǎng)絡(luò)數(shù)據(jù)類型描述說(shuō)明層級(jí)網(wǎng)絡(luò)數(shù)據(jù)類型描述說(shuō)明層級(jí)的意思是判斷被轉(zhuǎn)換數(shù)據(jù)的類型描述說(shuō)明時(shí)需要深入到其它數(shù)據(jù)類型描述說(shuō)明的次數(shù)。對(duì)于ー個(gè)32位的基本數(shù)據(jù)類型而言,進(jìn)行字節(jié)序轉(zhuǎn)換時(shí)直接判斷其類型描述說(shuō)明為32位數(shù)據(jù),需要深入到其它數(shù)據(jù)類型描述說(shuō)明的次數(shù)為零次,因此,基本數(shù)據(jù)類型進(jìn)行字節(jié)序轉(zhuǎn)換的類型描述說(shuō)明層級(jí)為第零層。對(duì)于簡(jiǎn)単數(shù)組或簡(jiǎn)單記錄類型而言,進(jìn)行字節(jié)序轉(zhuǎn)換時(shí),首先需要判斷數(shù)組或結(jié)構(gòu)體的類型描述說(shuō)明為數(shù)組類型或記錄類型,此時(shí)需要深入到其它數(shù)據(jù)類型描述說(shuō)明的次數(shù)為零次,則稱當(dāng)前字節(jié)序轉(zhuǎn)換的類型描述說(shuō)明層級(jí)為第零層;當(dāng)對(duì)數(shù)組元素或結(jié)構(gòu)體元素進(jìn)行字節(jié)序轉(zhuǎn)換時(shí),判斷被轉(zhuǎn)換數(shù)據(jù)的類型描述說(shuō)明需要深入到簡(jiǎn)單數(shù)組或記錄的類型描述說(shuō)明中,即深入到其它類型描述說(shuō)明的次數(shù)為一次,則稱簡(jiǎn)單數(shù)組或記錄當(dāng)前元素進(jìn)行字節(jié)序轉(zhuǎn)換的類型描述說(shuō)明層級(jí)為第一層,其層級(jí)描述示意圖如圖2或圖3所示。對(duì)于高級(jí)數(shù)組或高級(jí)記錄類型而言,進(jìn)行字節(jié)序轉(zhuǎn)換時(shí),首先需要判斷數(shù)組或記錄的類型描述說(shuō)明為數(shù)組類型或記錄類型,此時(shí)需要深入到其它數(shù)據(jù)類型描述說(shuō)明的次數(shù)為零次,則稱當(dāng)前字節(jié)序轉(zhuǎn)換的類型描述說(shuō)明層級(jí)為第零層;然后,對(duì)高級(jí)數(shù)組或記錄的元素進(jìn)行字節(jié)序轉(zhuǎn)換時(shí),判斷被轉(zhuǎn)換數(shù)據(jù)的類型描述說(shuō)明需要深入到高級(jí)數(shù)組或記錄的類型描述說(shuō)明中,即深入到其它類型描述說(shuō)明的次數(shù)為一次,則稱高級(jí)數(shù)組或記錄當(dāng)前元素進(jìn)行字節(jié)序轉(zhuǎn)換的類型描述說(shuō)明層級(jí)為第一層;最后,對(duì)高級(jí)數(shù)組而言,其元素類型為簡(jiǎn)單記錄,需要再判斷簡(jiǎn)單記錄子元素的類型描述說(shuō)明,則再深入到其它數(shù)據(jù)類型描述說(shuō)明的次數(shù)為兩次,則稱高級(jí)數(shù)組元素——簡(jiǎn)單記錄的子元素進(jìn)行字節(jié)序轉(zhuǎn)換的類型描述說(shuō)明層級(jí)為第二層。對(duì)于高級(jí)記錄而言,其元素類型或?yàn)楹?jiǎn)單數(shù)組,或?yàn)榛緮?shù)據(jù)類型。若轉(zhuǎn)換的元素為基本數(shù)據(jù)類型,則稱高級(jí)記錄元素——基本數(shù)據(jù)類型進(jìn)行字節(jié)序轉(zhuǎn)換的類型描述說(shuō)明層級(jí)為第一層;若轉(zhuǎn)換的元素為簡(jiǎn)單數(shù)組類型,則需要再判斷簡(jiǎn)單數(shù)組子元素的類型描述說(shuō)明,則再深入到其它數(shù)據(jù)類型描述說(shuō)明的次數(shù)為兩次,則稱高級(jí)記錄元素——簡(jiǎn)單數(shù)組的子元素進(jìn)行字節(jié)序轉(zhuǎn)換的類型描述說(shuō)明層級(jí)為第二層。高級(jí)記錄類型的數(shù)據(jù)類型層級(jí)描述如圖4所示。(4)設(shè)計(jì)網(wǎng)絡(luò)數(shù)據(jù)格式轉(zhuǎn)換規(guī)則數(shù)據(jù)格式轉(zhuǎn)換規(guī)則與數(shù)據(jù)的類型描述說(shuō)明密切相關(guān)。無(wú)論是單個(gè)多字節(jié)的基本類型數(shù)據(jù)還是簡(jiǎn)單數(shù)組、簡(jiǎn)單記錄或者更復(fù)雜的結(jié)構(gòu)體數(shù)據(jù),每ー類數(shù)據(jù)的轉(zhuǎn)換都是從其類型描述說(shuō)明開(kāi)始,一層ー層地往下深入,直到最內(nèi)層的基本數(shù)據(jù)為止,然后把所有的基本數(shù)據(jù)按字節(jié)序進(jìn)行轉(zhuǎn)換。對(duì)于位序列也不相同的計(jì)算機(jī)體系結(jié)構(gòu),則在進(jìn)行字節(jié)序轉(zhuǎn)換前先轉(zhuǎn)換數(shù)據(jù)的位序列。深入到最內(nèi)層的基本數(shù)據(jù)后,數(shù)據(jù)的字節(jié)序或位序列轉(zhuǎn)換都類似,即根據(jù)大端存儲(chǔ)與小端存儲(chǔ)的區(qū)別交換相應(yīng)的字節(jié)或位,得到與計(jì)算機(jī)體系結(jié)構(gòu)對(duì)應(yīng)的序列排列,進(jìn)而得到正確的數(shù)值。高級(jí)數(shù)組或結(jié)構(gòu)體數(shù)據(jù)的類型描述說(shuō)明定義比較復(fù)雜,這些數(shù)據(jù)通常需要深入若干層才能達(dá)到最內(nèi)層的基本類型數(shù)據(jù),因此,字節(jié)序轉(zhuǎn)換時(shí)需要運(yùn)用遞歸的方法,一層ー層地解析高級(jí)數(shù)據(jù)的類型描述說(shuō)明定義,獲取每個(gè)子元素的數(shù)據(jù)類型、字節(jié)大小等信息,然后針對(duì)各元素進(jìn)行字節(jié)序或位序列轉(zhuǎn)換。開(kāi)始轉(zhuǎn)換時(shí)解析數(shù)據(jù)的類型描述說(shuō)明為第0層,在第0層轉(zhuǎn)換的數(shù)據(jù)個(gè)數(shù)始終只有ー個(gè)。如果被轉(zhuǎn)換數(shù)據(jù)的原始數(shù)據(jù)類型為基本的8位、16位或32位數(shù)據(jù),則直接進(jìn)行一次字節(jié)序或位序列交換即可完成;如果被轉(zhuǎn)換數(shù)據(jù)的原始數(shù)據(jù)類型為數(shù)組或結(jié)構(gòu)體數(shù)據(jù),則首先在第0層獲得數(shù)組或結(jié)構(gòu)體包含的元素個(gè)數(shù),然后再進(jìn)行遞歸循環(huán)轉(zhuǎn)換其包含元素的字節(jié)序或位序列,此時(shí)需要進(jìn)入到下ー層數(shù)據(jù)類型描述說(shuō)明,即在第I層開(kāi)始數(shù)據(jù)轉(zhuǎn)換。若在第I層中被轉(zhuǎn)換的數(shù)據(jù)為基本的8位、16位或32位數(shù)據(jù),此時(shí)進(jìn)行一次字節(jié)序或位序列交換即可完成轉(zhuǎn)換;若被轉(zhuǎn)換的數(shù)據(jù)也是數(shù)組或結(jié)構(gòu)體,同樣首先在該層獲得數(shù)組或結(jié)構(gòu)體包含的元素個(gè)數(shù),然后再進(jìn)行遞歸循環(huán)轉(zhuǎn)換其包含元素的字節(jié)序或位序列。若數(shù)組或結(jié)構(gòu)體的所有元素都轉(zhuǎn)換完成,則回到上ー層數(shù)據(jù)類型描述說(shuō)明,繼續(xù)解析數(shù)組或結(jié)構(gòu)體同層的后面數(shù)據(jù)的類型,依據(jù)相同的方法不斷進(jìn)行遞歸轉(zhuǎn)換,直到所有元素都轉(zhuǎn)換完成,并回到第0層即源數(shù)據(jù)所在為止,到此表示源數(shù)據(jù)完全轉(zhuǎn)換完畢,轉(zhuǎn)換得到的數(shù)據(jù)字節(jié)序或位序列與期望的計(jì)算機(jī)體系結(jié)構(gòu)一致,保證在進(jìn)行數(shù)值運(yùn)算和數(shù)據(jù)訪問(wèn)時(shí)提供正確的數(shù)值。如圖5所示,本發(fā)明機(jī)載設(shè)備網(wǎng)絡(luò)數(shù)據(jù)傳輸通用的數(shù)據(jù)格式轉(zhuǎn)換方法包括以下步驟步驟一,根據(jù)被轉(zhuǎn)換源數(shù)據(jù)的類型,定義源數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類型描述說(shuō)明;步驟ニ,聲明源數(shù)據(jù)類型描述說(shuō)明的變量,并對(duì)該變量進(jìn)行初始化賦值;步驟三,定義目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū);步驟四,按照數(shù)據(jù)格式轉(zhuǎn)換規(guī)則,對(duì)源數(shù)據(jù)類型描述說(shuō)明的變量進(jìn)行解析;步驟五,根據(jù)解析的數(shù)據(jù)類型對(duì)源數(shù)據(jù)進(jìn)行轉(zhuǎn)換,將轉(zhuǎn)換結(jié)果存儲(chǔ)到目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū)中。本發(fā)明機(jī)載設(shè)備網(wǎng)絡(luò)數(shù)據(jù)傳輸通用的數(shù)據(jù)格式轉(zhuǎn)換方法的具體描述如下步驟一,根據(jù)被轉(zhuǎn)換源數(shù)據(jù)的類型,定義源數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類型描述說(shuō)明,步驟ー的具體內(nèi)容如下當(dāng)目標(biāo)計(jì)算機(jī)接收到網(wǎng)絡(luò)發(fā)出的源數(shù)據(jù)時(shí),可以認(rèn)為接收到的源數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是已知的,因此首先根據(jù)源數(shù)據(jù)的結(jié)構(gòu)定義源數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類型描述說(shuō)明。正如前面所述,源數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類型描述說(shuō)明分為很多種情況,不同的數(shù)據(jù)結(jié)構(gòu)需要定義不同的數(shù)據(jù)類型描述說(shuō)明。仍然以源數(shù)據(jù)為簡(jiǎn)單結(jié)構(gòu)體記錄類型進(jìn)行說(shuō)明,如圖3所示,可以定義源數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)描述說(shuō)明定義,定義中包括數(shù)據(jù)類型、元素個(gè)數(shù),以及源數(shù)據(jù)中組成元素的類型。由此可見(jiàn),源數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類型描述說(shuō)明組成元素的個(gè)數(shù)比源數(shù)據(jù)自身組成元素的個(gè)數(shù)多兩個(gè)。但是,基本數(shù)據(jù)類型是ー個(gè)例外。對(duì)于源數(shù)據(jù)是基本數(shù)據(jù)類型的情況,其數(shù)據(jù)類型描述說(shuō)明組成元素仍然只有ー個(gè)。步驟ニ,聲明源數(shù)據(jù)類型描述說(shuō)明的變量,并對(duì)該變量進(jìn)行初始化賦值,步驟ニ的具體內(nèi)容如下定義了源數(shù)據(jù)的數(shù)據(jù)類型描述說(shuō)明后,接下來(lái)聲明一個(gè)該源數(shù)據(jù)類型描述說(shuō)明的變量,并對(duì)該變量進(jìn)行初始化賦值。如圖3所示,對(duì)源數(shù)據(jù)類型描述說(shuō)明的變量賦值即為其數(shù)據(jù)類型賦值為記錄類型、元素個(gè)數(shù)為X個(gè),X表示源數(shù)據(jù)自身包含的元素個(gè)數(shù),以及逐個(gè)說(shuō)明源數(shù)據(jù)組成元素的類型,例如第一個(gè)為32位數(shù)據(jù),第二個(gè)為8位數(shù)據(jù),最后ー個(gè)為16位數(shù)據(jù)等。步驟三,定義目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū),步驟三的具體內(nèi)容如下定義目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū)是為了存儲(chǔ)源數(shù)據(jù)轉(zhuǎn)換的結(jié)果,可以開(kāi)辟ー塊足夠大的內(nèi)存空間。目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū)可以是ー個(gè)已知的數(shù)據(jù)結(jié)構(gòu)體變量,也可以是ー個(gè)維數(shù)足夠大的字節(jié)數(shù)組。如果是對(duì)源數(shù)據(jù)自身進(jìn)行轉(zhuǎn)換,目標(biāo)數(shù)據(jù)緩沖區(qū)也可以是源數(shù)據(jù)本身。如圖3所示的記錄類型,若源數(shù)據(jù)的轉(zhuǎn)換結(jié)果需要另行存儲(chǔ),可以定義一個(gè)很大的字節(jié)數(shù)組作為目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū)。步驟四,按照數(shù)據(jù)格式轉(zhuǎn)換規(guī)則,對(duì)源數(shù)據(jù)類型描述說(shuō)明的變量進(jìn)行解析。步驟五,根據(jù)解析的數(shù)據(jù)類型對(duì)源數(shù)據(jù)進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換結(jié)果存儲(chǔ)到目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū)中,步驟五的具體內(nèi)容如下上述步驟四和步驟五兩個(gè)步驟在數(shù)據(jù)轉(zhuǎn)換過(guò)程中是同時(shí)進(jìn)行的,即對(duì)源數(shù)據(jù)類型描述說(shuō)明的變量解析的過(guò)程中完成對(duì)源數(shù)據(jù)包含的元素的格式轉(zhuǎn)換。對(duì)于圖3所示的簡(jiǎn)單記錄類型的數(shù)據(jù),根據(jù)轉(zhuǎn)換規(guī)則,源數(shù)據(jù)的具體數(shù)據(jù)格式解析、轉(zhuǎn)換過(guò)程如下,解析、轉(zhuǎn)換示意圖如圖6所示(a)獲取目標(biāo)數(shù)據(jù)存儲(chǔ)地址和源數(shù)據(jù)地址根據(jù)定義的目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū),如定義的字節(jié)數(shù)組,獲得目標(biāo)數(shù)據(jù)存儲(chǔ)地址為字節(jié)數(shù)組的首地址;源數(shù)據(jù)地址即為接收到的網(wǎng)絡(luò)源數(shù)據(jù)的首地址。獲取目標(biāo)數(shù)據(jù)存儲(chǔ)地址和源數(shù)據(jù)地址的用途是為了在轉(zhuǎn)換源數(shù)據(jù)和存儲(chǔ)轉(zhuǎn)換結(jié)果時(shí),準(zhǔn)確地對(duì)應(yīng)源數(shù)據(jù)的元素和目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū)的存儲(chǔ)位置。(b)解析源數(shù)據(jù)類型描述說(shuō)明的變量源數(shù)據(jù)類型描述說(shuō)明的變量包括X+2個(gè)元素,因此從第一個(gè)元素開(kāi)始解析。由第一個(gè)元素可知,源數(shù)據(jù)為一個(gè)記錄類型的數(shù)據(jù);由第二個(gè)元素可知,源數(shù)據(jù)包括X個(gè)元素,因此數(shù)據(jù)格式轉(zhuǎn)換需要深入到類型描述說(shuō)明的下一層級(jí)。此時(shí),從第三個(gè)元素開(kāi)始,需要對(duì)后續(xù)元素進(jìn)行循環(huán)解析,循環(huán)次數(shù)從I開(kāi)始,直到X次時(shí)結(jié)束。(c)對(duì)源數(shù)據(jù)的元素進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換每次循環(huán)解析一個(gè)源數(shù)據(jù)類型描述說(shuō)明的變量的元素,根據(jù)該元素的類型對(duì)源數(shù)據(jù)的對(duì)應(yīng)元素進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換,源數(shù)據(jù)的對(duì)應(yīng)元素通過(guò)把源數(shù)據(jù)地址指針按照循環(huán)次數(shù)進(jìn)行移動(dòng)獲得。如圖3所示,令當(dāng)前為第η次循環(huán)(η大于等于1,并小于等于X),則判斷類型描述說(shuō)明變量的第η+2個(gè)元 素的類型,根據(jù)該類型的數(shù)據(jù)格式轉(zhuǎn)換原則,移動(dòng)源數(shù)據(jù)地址指針到第η個(gè)元素的位置,交換第η個(gè)數(shù)據(jù)相應(yīng)的字節(jié)順序。例如,η為3時(shí),得知類型描述說(shuō)明變量的元素為32位的數(shù)據(jù),因此,移動(dòng)源數(shù)據(jù)地址指針到第3個(gè)元素的位置,按照32位數(shù)據(jù)的轉(zhuǎn)換原則交換相應(yīng)的字節(jié)順序。根據(jù)數(shù)據(jù)格式轉(zhuǎn)換規(guī)則,不同的數(shù)據(jù)類型對(duì)應(yīng)不同的數(shù)據(jù)格式轉(zhuǎn)換方法,因此數(shù)據(jù)格式轉(zhuǎn)換規(guī)則的偽代碼設(shè)計(jì)如下Begin數(shù)據(jù)格式轉(zhuǎn)換 {
讀取數(shù)據(jù)元素的個(gè)數(shù)
for (I = I· I <=數(shù)據(jù)元素的個(gè)數(shù);I++)
{
讀取被轉(zhuǎn)換數(shù)據(jù)當(dāng)前的類型描述說(shuō)明;
如果數(shù)據(jù)類型描述說(shuō)明是數(shù)組 {
讀取數(shù)組元素的個(gè)數(shù);
類型描述層級(jí)增加一層;
for (J = I J <=數(shù)組元素的個(gè)數(shù);J++)
{
開(kāi)始對(duì)數(shù)組元素進(jìn)行轉(zhuǎn)換;
}
數(shù)組所有元素轉(zhuǎn)換完成,類型描述層級(jí)減少一層;
}如果數(shù)據(jù)類型描述說(shuō)明是記錄
{類型描述層級(jí)增加一層;
開(kāi)始對(duì)記錄進(jìn)行轉(zhuǎn)換;
記錄轉(zhuǎn)換完成,類型描述層級(jí)減少一層;}
如果數(shù)據(jù)類型描述說(shuō)明是8位數(shù)據(jù){
進(jìn)行8位數(shù)據(jù)轉(zhuǎn)換;
}
如果數(shù)據(jù)類型描述說(shuō)明是16位數(shù)據(jù)
I
進(jìn)行16位數(shù)據(jù)轉(zhuǎn)換;
}
如果數(shù)據(jù)類型描述說(shuō)明是32位數(shù)據(jù){
進(jìn)行32位數(shù)據(jù)轉(zhuǎn)換;
}
如果數(shù)據(jù)類型描述說(shuō)明是64位數(shù)據(jù){
進(jìn)行64位數(shù)據(jù)轉(zhuǎn)換;
}
如果數(shù)據(jù)類型描述說(shuō)明是其他
}
設(shè)置轉(zhuǎn)換狀態(tài)失??;
}
}
}
End數(shù)據(jù)格式轉(zhuǎn)換
(d)把轉(zhuǎn)換結(jié)果存儲(chǔ)到目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū)從目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū)的首地址開(kāi)始,根據(jù)解析源數(shù)據(jù)類型描述說(shuō)明的變量元素的循環(huán)次數(shù),移動(dòng)目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū)的地址指針找到對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)位置,然后把上一步完成數(shù)據(jù)格式轉(zhuǎn)換的數(shù)據(jù)結(jié)果存儲(chǔ)到數(shù)據(jù)存儲(chǔ)區(qū)緩沖區(qū)對(duì)應(yīng)位置。循環(huán)次數(shù)增加一次,重復(fù)(b)、(C)和(d)的過(guò)程,直到循環(huán)X次時(shí)結(jié)束。為了使網(wǎng)絡(luò)數(shù)據(jù)格式轉(zhuǎn)換規(guī)則具有通用性,下面再以一個(gè)實(shí)例說(shuō)明數(shù)據(jù)轉(zhuǎn)換規(guī)則的通用實(shí)施流程。通用實(shí)施流程的初始兩個(gè)步驟與前面所述相同,但是,在源數(shù)據(jù)格式轉(zhuǎn)換時(shí)根據(jù)網(wǎng)絡(luò)計(jì)算機(jī)和目標(biāo)接收計(jì)算機(jī)體系結(jié)構(gòu)的區(qū)別,以及源數(shù)據(jù)地址與目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū)地址的不同,需要進(jìn)行更加全面的判斷。網(wǎng)絡(luò)數(shù)據(jù)格式轉(zhuǎn)換規(guī)則的通用實(shí)施流程如圖7所示。(I)根據(jù)被轉(zhuǎn)換源數(shù)據(jù)的類型,定義源數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類型描述說(shuō)明如圖4所示,以組成元素包括簡(jiǎn)單數(shù)組的高級(jí)記錄類型為例,定義源數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類型描述說(shuō)明。類型描述說(shuō)明包括數(shù)據(jù)類型、元素個(gè)數(shù),以及源數(shù)據(jù)中組成元素的類型。同樣,源數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類型描述說(shuō)明組成元素的個(gè)數(shù)應(yīng)該比源數(shù)據(jù)自身組成元素的個(gè)數(shù)多兩個(gè),為η+2個(gè),其中η表示源數(shù)據(jù)自身包含的元素個(gè)數(shù)。(2)聲明源數(shù)據(jù)類型描述說(shuō)明的變量,并對(duì)該變量進(jìn)行初始化賦值定義了源數(shù)據(jù)的數(shù)據(jù)類型描述說(shuō)明后,接下來(lái)聲明一個(gè)該源數(shù)據(jù)類型描述說(shuō)明的變量,并對(duì)該變量進(jìn)行初始化賦值。如圖4所示,對(duì)源數(shù)據(jù)類型描述說(shuō)明的變量賦值即為其數(shù)據(jù)類型賦值為記錄類型、元素個(gè)數(shù)為η個(gè),η表示源數(shù)據(jù)自身包含的元素個(gè)數(shù),以及逐個(gè)說(shuō)明源數(shù)據(jù)組成元素的類型。例如第一個(gè)為32位數(shù)據(jù),第二個(gè)為8位數(shù)據(jù),最后一個(gè)為16位數(shù)據(jù)等。對(duì)于源數(shù)據(jù)的組成元素為簡(jiǎn)單數(shù)組的,應(yīng)該按照簡(jiǎn)單數(shù)組的描述方法繼續(xù)展開(kāi)描述。例如源數(shù)據(jù)第三個(gè)元素為簡(jiǎn)單數(shù)組,因此該元素賦值為數(shù)組類型,且包括X個(gè)子元素,每個(gè)子元素類型為8位數(shù)據(jù)。(3)定義目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū)定義目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū)是為了存儲(chǔ)源數(shù)據(jù)轉(zhuǎn)換的結(jié)果,可以開(kāi)辟一塊足夠大的內(nèi)存空間。目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū)可以是一個(gè)已知的數(shù)據(jù)結(jié)構(gòu)體變量,也可以是一個(gè)維數(shù)足夠大字節(jié)數(shù)組。如果是對(duì)源數(shù)據(jù)自身進(jìn)行轉(zhuǎn)換,目標(biāo)數(shù)據(jù)緩沖區(qū)也可以是源數(shù)據(jù)本身。如圖5所示的記錄類型,若源數(shù)據(jù)的轉(zhuǎn)換結(jié)果需要另行存儲(chǔ),可以定義一個(gè)很大的字節(jié)數(shù)組作為目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū)。(4)對(duì)源數(shù)據(jù)類型描述說(shuō)明的變量進(jìn)行解析首先,獲取目標(biāo)數(shù)據(jù)存儲(chǔ)地址和源數(shù)據(jù)地址,判斷網(wǎng)絡(luò)計(jì)算機(jī)和目標(biāo)接收計(jì)算機(jī)的體系結(jié)構(gòu)是否一致,判斷計(jì)算機(jī)的體系結(jié)構(gòu)是為源數(shù)據(jù)的轉(zhuǎn)換做準(zhǔn)備,因?yàn)?,只有?dāng)網(wǎng)絡(luò)計(jì)算機(jī)和目標(biāo)接收計(jì)算機(jī)的體系結(jié)構(gòu)不相同時(shí),才需要對(duì)源數(shù)據(jù)進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換,否則不需要對(duì)源數(shù)據(jù)的數(shù)據(jù)格式進(jìn)行轉(zhuǎn)換。如果判斷網(wǎng)絡(luò)計(jì)算機(jī)和目標(biāo)接收計(jì)算機(jī)的體系結(jié)構(gòu)相同,則判斷目標(biāo)數(shù)據(jù)存儲(chǔ)地址和源數(shù)據(jù)地址是否指向相同的地址。如果兩者地址相同,則不需要進(jìn)行任何操作;如果兩者地址不同,則需要把源數(shù)據(jù)復(fù)制到目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū)中,到此源數(shù)據(jù)格式轉(zhuǎn)換全部結(jié)束。 如果判斷網(wǎng)絡(luò)計(jì)算機(jī)和目標(biāo)接收計(jì)算機(jī)的體系結(jié)構(gòu)不相同,則繼續(xù)進(jìn)行本步驟的操作。源數(shù)據(jù)類型描述說(shuō)明的變量包括η+2個(gè)元素,因此從第一個(gè)元素開(kāi)始解析。由第一個(gè)元素可知,源數(shù)據(jù)為一個(gè)記錄類型的數(shù)據(jù);由第二個(gè)元素可知,源數(shù)據(jù)包括η個(gè)元素,因此數(shù)據(jù)格式轉(zhuǎn)換需要深入到類型描述說(shuō)明的下一層級(jí)。此時(shí),從第三個(gè)元素開(kāi)始,需要對(duì)后續(xù)元素進(jìn)行循環(huán)解析,循環(huán)次數(shù)從I開(kāi)始,直到η次時(shí)結(jié)束。如圖4所示,當(dāng)解析的元素為數(shù)組類型時(shí),必須按照數(shù)組類型的解析方法深入到下一層級(jí)。例如,循環(huán)3次時(shí)元素為數(shù)組類型,因此深入到類型描述說(shuō)明變量的第2層級(jí),得知數(shù)組包括X個(gè)子元素,因此在第2層級(jí)對(duì)數(shù)組進(jìn)行新的循環(huán)解析,循環(huán)次數(shù)從I開(kāi)始,直到X次時(shí)結(jié)束。等到第2層級(jí)的循環(huán)結(jié)束后,在回到上一層級(jí)繼續(xù)后面的循環(huán)解析。(5)對(duì)源數(shù)據(jù)的元素進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換每次循環(huán)解析一個(gè)類型描述說(shuō)明變量的元素,根據(jù)該元素的類型對(duì)源數(shù)據(jù)的對(duì)應(yīng)元素進(jìn)行數(shù)據(jù)格式轉(zhuǎn)換,源數(shù)據(jù)的對(duì)應(yīng)元素通過(guò)把源數(shù)據(jù)地址指針按照循環(huán)次數(shù)進(jìn)行移動(dòng)獲得。如圖4所示,在第一層級(jí)的循環(huán)中,令當(dāng)前為第i次循環(huán)(i大于等于1,并小于等于n),則判斷類型描述說(shuō)明變量的第i+2個(gè)元素的類型,根據(jù)該類型的數(shù)據(jù)格式轉(zhuǎn)換原則,移動(dòng)源數(shù)據(jù)地址指針到第i個(gè)元素的位置,交換第i個(gè)數(shù)據(jù)相應(yīng)的字節(jié)順序。例如,i為I時(shí),得知類型描述說(shuō)明變量的元素為32位的數(shù)據(jù),因此,移動(dòng)源數(shù)據(jù)地址指針到第3個(gè)元素的位置,按照32位數(shù)據(jù)的轉(zhuǎn)換原則交換相應(yīng)的字節(jié)順序。如果進(jìn)入到第二層級(jí)循環(huán),則移動(dòng)源數(shù)據(jù)地址指針時(shí)應(yīng)該加上第二層級(jí)循環(huán)的次數(shù),例如把源數(shù)據(jù)地址指針移動(dòng)到i+k的位置,其中j為第二層級(jí)的循環(huán)次數(shù)。(6)把轉(zhuǎn)換結(jié)果存儲(chǔ)到目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū)從目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū)的首地址開(kāi)始,根據(jù)解析源數(shù)據(jù)類型描述說(shuō)明的變量元素的循環(huán)次數(shù),移動(dòng)目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū)的地址指針找到對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)位置,然后把上一步完成數(shù)據(jù)格式轉(zhuǎn)換的數(shù)據(jù)結(jié)果存儲(chǔ)到數(shù)據(jù)存儲(chǔ)區(qū)緩沖區(qū)對(duì)應(yīng)位置。移動(dòng)目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū)地址指針的原則與上一步移動(dòng)源數(shù)據(jù)地址指針的相同。循環(huán)次數(shù)增加一次,重復(fù)(4)、(5)和(6)的過(guò)程,直到循環(huán)η次時(shí)結(jié)束。如圖8所示,本發(fā)明機(jī)載設(shè)備網(wǎng)絡(luò)數(shù)據(jù)傳輸通用的數(shù)據(jù)格式轉(zhuǎn)換系統(tǒng)包括依次連接的結(jié)構(gòu)類型描述說(shuō)明定義模塊、初始化賦值模塊、緩沖區(qū)定義模塊、解析模塊、轉(zhuǎn)換模塊,結(jié)構(gòu)類型描述說(shuō)明定義模塊用于定義源數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類型描述說(shuō)明;初始化賦值模塊用于聲明源數(shù)據(jù)類型描述說(shuō)明的變量并對(duì)該源數(shù)據(jù)類型描述說(shuō)明的變量進(jìn)行初始化賦值;緩沖區(qū)定義模塊用于定義目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū);解析模塊對(duì)源數(shù)據(jù)類型描述說(shuō)明的變量進(jìn)行解析;轉(zhuǎn)換模塊根據(jù)解析的數(shù)據(jù)類型對(duì)源數(shù)據(jù)進(jìn)行轉(zhuǎn)換。本發(fā)明實(shí)現(xiàn)目前存在的各種不同網(wǎng)絡(luò)數(shù)據(jù)格式轉(zhuǎn)換處理方法的統(tǒng)一,簡(jiǎn)化設(shè)計(jì)人員在網(wǎng)絡(luò)接口協(xié)議和程序設(shè)計(jì)期間的工作,提高航空機(jī)載設(shè)備之間數(shù)據(jù)傳輸?shù)男?,降低機(jī)載設(shè)備之間數(shù)據(jù)傳輸錯(cuò)誤的風(fēng)險(xiǎn)。根據(jù)本發(fā)明機(jī)載設(shè)備網(wǎng)絡(luò)數(shù)據(jù)傳輸通用的數(shù)據(jù)格式轉(zhuǎn)換方法,工程設(shè)計(jì)人員可以不必再刻意地考慮航空機(jī)載設(shè)備計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)之間的區(qū)別。進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)傳輸時(shí),不同設(shè)備之間都采用相同的數(shù)據(jù)發(fā)送和接收方法。按照本方法進(jìn)行適當(dāng)?shù)挠?jì)算機(jī)系統(tǒng)結(jié)構(gòu)配置,即可保證不同機(jī)載設(shè)備之間網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)恼_性。另外,本發(fā)明可以對(duì)任意的數(shù)據(jù)類型,包括自定義的復(fù)雜結(jié)構(gòu)體數(shù)據(jù)進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換后可以保持?jǐn)?shù)據(jù)結(jié)構(gòu)體的完整性,而避免了一次轉(zhuǎn)換只能完成結(jié)構(gòu)體數(shù)據(jù)包含的某一個(gè)數(shù)據(jù)的缺點(diǎn),極大的提高了轉(zhuǎn)換效率、減少了程序設(shè)計(jì) 的難度和工作量,實(shí)現(xiàn)了數(shù)據(jù)格式轉(zhuǎn)換方法的統(tǒng)一,降低了數(shù)據(jù)傳輸錯(cuò)誤的風(fēng)險(xiǎn)。本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改型和改變。因此,本發(fā)明覆蓋了落入所附的權(quán)利要求書(shū)及其等同物的范圍內(nèi)的各種改型和改變。
權(quán)利要求
1.一種機(jī)載設(shè)備網(wǎng)絡(luò)數(shù)據(jù)傳輸通用的數(shù)據(jù)格式轉(zhuǎn)換方法,其特征在于,其包括以下步驟步驟一,根據(jù)被轉(zhuǎn)換源數(shù)據(jù)的類型,定義源數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類型描述說(shuō)明;步驟二,聲明源數(shù)據(jù)類型描述說(shuō)明的變量,并對(duì)該源數(shù)據(jù)類型描述說(shuō)明的變量進(jìn)行初始化賦值;步驟三,定義目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū);步驟四,按照數(shù)據(jù)格式轉(zhuǎn)換規(guī)則,對(duì)源數(shù)據(jù)類型描述說(shuō)明的變量進(jìn)行解析;步驟五,根據(jù)解析的數(shù)據(jù)類型對(duì)源數(shù)據(jù)進(jìn)行轉(zhuǎn)換,將轉(zhuǎn)換結(jié)果存儲(chǔ)到目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū)中。
2.如權(quán)利要求1所述的機(jī)載設(shè)備網(wǎng)絡(luò)數(shù)據(jù)傳輸通用的數(shù)據(jù)格式轉(zhuǎn)換方法,其特征在于,所述步驟二對(duì)源數(shù)據(jù)類型描述說(shuō)明的變量賦值即將其數(shù)據(jù)類型賦值為基本類型、數(shù)組類型或記錄類型中的一種,元素個(gè)數(shù)賦值為X個(gè),X表示源數(shù)據(jù)自身包含的元素個(gè)數(shù),以及逐個(gè)說(shuō)明源數(shù)據(jù)組成元素的類型。
3.如權(quán)利要求1所述的機(jī)載設(shè)備網(wǎng)絡(luò)數(shù)據(jù)傳輸通用的數(shù)據(jù)格式轉(zhuǎn)換方法,其特征在于,所述步驟三的目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū)是一個(gè)已知的數(shù)據(jù)結(jié)構(gòu)體變量或是一個(gè)字節(jié)數(shù)組。
4.如權(quán)利要求1所述的機(jī)載設(shè)備網(wǎng)絡(luò)數(shù)據(jù)傳輸通用的數(shù)據(jù)格式轉(zhuǎn)換方法,其特征在于,所述步驟四和步驟五兩個(gè)步驟在數(shù)據(jù)轉(zhuǎn)換過(guò)程中是同時(shí)進(jìn)行的。
5.如權(quán)利要求1所述的機(jī)載設(shè)備網(wǎng)絡(luò)數(shù)據(jù)傳輸通用的數(shù)據(jù)格式轉(zhuǎn)換方法,其特征在于,所述步驟五的轉(zhuǎn)換結(jié)果存儲(chǔ)到目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū)中是從目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū)的首地址開(kāi)始,根據(jù)解析源數(shù)據(jù)類型描述說(shuō)明的變量元素的循環(huán)次數(shù),移動(dòng)目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū)的地址指針找到對(duì)應(yīng)的數(shù)據(jù)存儲(chǔ)位置,然后把完成數(shù)據(jù)格式轉(zhuǎn)換的數(shù)據(jù)結(jié)果存儲(chǔ)到數(shù)據(jù)存儲(chǔ)區(qū)緩沖區(qū)對(duì)應(yīng)位置。
6.一種機(jī)載設(shè)備網(wǎng)絡(luò)數(shù)據(jù)傳輸通用的數(shù)據(jù)格式轉(zhuǎn)換系統(tǒng),其特征在于,其包括依次連接的結(jié)構(gòu)類型描述說(shuō)明定義模塊、初始化賦值模塊、緩沖區(qū)定義模塊、解析模塊、轉(zhuǎn)換模塊, 結(jié)構(gòu)類型描述說(shuō)明定義模塊用于定義源數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類型描述說(shuō)明;初始化賦值模塊用于聲明源數(shù)據(jù)類型描述說(shuō)明的變量并對(duì)該源數(shù)據(jù)類型描述說(shuō)明的變量進(jìn)行初始化賦值;緩沖區(qū)定義模塊用于定義目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū);解析模塊對(duì)源數(shù)據(jù)類型描述說(shuō)明的變量進(jìn)行解析;轉(zhuǎn)換模塊根據(jù)解析的數(shù)據(jù)類型對(duì)源數(shù)據(jù)進(jìn)行轉(zhuǎn)換。
全文摘要
本發(fā)明公開(kāi)了一種機(jī)載設(shè)備網(wǎng)絡(luò)數(shù)據(jù)傳輸通用的數(shù)據(jù)格式轉(zhuǎn)換方法及其系統(tǒng),其包括以下步驟步驟一,根據(jù)被轉(zhuǎn)換源數(shù)據(jù)的類型,定義源數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)類型描述說(shuō)明;步驟二,聲明源數(shù)據(jù)類型描述說(shuō)明的變量,并對(duì)該源數(shù)據(jù)類型描述說(shuō)明的變量進(jìn)行初始化賦值;步驟三,定義目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū);步驟四,按照數(shù)據(jù)格式轉(zhuǎn)換規(guī)則,對(duì)源數(shù)據(jù)類型描述說(shuō)明的變量進(jìn)行解析;步驟五,根據(jù)解析的數(shù)據(jù)類型對(duì)源數(shù)據(jù)進(jìn)行轉(zhuǎn)換,將轉(zhuǎn)換結(jié)果存儲(chǔ)到目標(biāo)數(shù)據(jù)存儲(chǔ)緩沖區(qū)中。本發(fā)明實(shí)現(xiàn)目前存在的各種不同網(wǎng)絡(luò)數(shù)據(jù)格式轉(zhuǎn)換處理方法的統(tǒng)一,簡(jiǎn)化設(shè)計(jì)人員在網(wǎng)絡(luò)接口協(xié)議和程序設(shè)計(jì)期間的工作,提高航空機(jī)載設(shè)備之間數(shù)據(jù)傳輸?shù)男?,降低機(jī)載設(shè)備之間數(shù)據(jù)傳輸錯(cuò)誤的風(fēng)險(xiǎn)。
文檔編號(hào)G06F9/44GK103034499SQ201210541430
公開(kāi)日2013年4月10日 申請(qǐng)日期2012年12月13日 優(yōu)先權(quán)日2012年12月13日
發(fā)明者尹彥清, 馬駿 申請(qǐng)人:中國(guó)航空無(wú)線電電子研究所