石 峰
位控類時間指令的實時處理方法
石 峰
(中國西安衛(wèi)星測控中心 西安 710043)
針對火箭遙測實時處理軟件中不同位跳變指令處理代碼復用性差的問題,通過分析幾種典型的位跳變指令處理特點,抽象出位跳變指令處理的一般步驟,并從軟件角度給出了位跳變指令的定義。根據(jù)C++語言多態(tài)性原理,將位跳變指令的軟件實現(xiàn)劃分為抽象基類和實現(xiàn)子類兩個部分,規(guī)范了位跳變指令的處理邏輯、體現(xiàn)了不同種類位跳變指令處理特點。應用實踐表明,經(jīng)過重構(gòu)的處理方法代碼量顯著減少,程序處理流程更加清晰,軟件復用率有很大提高。
位跳變指令;實時處理;遙測
時間指令是反映運載火箭某一動作及控制行為是否發(fā)生及發(fā)生時刻的關(guān)鍵參數(shù),如火箭起飛觸點接通時間、爆炸螺栓起爆時間、發(fā)動機點火指令時間、星箭分離指令時間等,是主動段對火箭飛行狀態(tài)評估的重要信息來源。位跳變時間指令是時間指令應用最為廣泛的一種類型,文獻[1]對早期的位跳變時間指令的處理方法、實時處理時存在的不足及改進設(shè)想進行了一些探討。近年來,隨著新型號火箭相繼首飛[2],新的參數(shù)處理方法層出不窮,位跳變時間指令衍生出高精度型、遙測字型、總線型、電壓型等多種處理類型。關(guān)于此類指令的處理方法雖然設(shè)計思路大致相同,但是由于需求差異、人員安排等因素,其實現(xiàn)手段均有所不同,軟件復用性較差。
在每次火箭飛行試驗任務前,雖然型號研制部門都要發(fā)布一份關(guān)于飛行試驗任務遙測數(shù)據(jù)處理要求和方法的技術(shù)文件,但該文件僅給出了處理上的一些原則性要求,以及參數(shù)原碼與物理量之間的轉(zhuǎn)換公式,作為數(shù)據(jù)處理方法是遠遠不夠的。火箭遙測實時處理軟件在進行位跳變指令處理時還需要對遙測數(shù)據(jù)的連續(xù)性,時標修正的準確性,發(fā)生時刻的合法性等諸多方面進行綜合處理后,才能計算出時間指令發(fā)生的真實時間信息,軟件處理過程比較復雜。本文發(fā)揮C++語言“多態(tài)性”優(yōu)勢,采用虛函數(shù),研究了各類位跳變時間指令的處理邏輯,提出了位跳變時間指令的通用化處理方法,同時在國產(chǎn)麒麟系統(tǒng)上對現(xiàn)有的處理方法庫進行重構(gòu),增加了抽象化的處理基類,明確了位跳變時間指令的一般處理步驟,在繼承基類處理方法的基礎(chǔ)上實現(xiàn)了各類型處理子類,體現(xiàn)了不同類型位跳變指令的處理特點。
這類指令是用編碼信號中某一位由“0”變“1”(或“1”變“0”)表示指令出現(xiàn),連續(xù)保持3幀以上為有效,以其中第一次出現(xiàn)變化的時間為準,計算該指令的發(fā)生時刻[3]。由于該指令屬于緩變參數(shù),因此通常安排在緩變副幀中進行傳輸。以目前常見的火箭遙測全幀數(shù)據(jù)25 ms的發(fā)送周期計算,該類指令的采樣頻率為40幀/秒。
1.1.1 數(shù)據(jù)連續(xù)性判斷
數(shù)據(jù)的連續(xù)性是火箭遙測實時處理軟件必須考慮的重要指標。地面遙測設(shè)備接收火箭遙測數(shù)據(jù)時難免出現(xiàn)誤碼和中斷現(xiàn)象,表現(xiàn)在遙測數(shù)據(jù)中就是數(shù)據(jù)的不連續(xù)。位跳變指令是一類連續(xù)變化的參數(shù),其判斷邏輯必須依靠緩存的歷史數(shù)據(jù),如果數(shù)據(jù)不連續(xù)必然導致后續(xù)判斷過程無法進行或計算出錯誤的結(jié)果。目前,常用的連續(xù)性判斷方法是利用幀計數(shù)的連續(xù)計數(shù)機制。如某型火箭遙測數(shù)據(jù)的幀計數(shù)用兩個字節(jié)的無符號整數(shù)表示,其值的變化范圍是0~65535,如果接收到的遙測幀的幀計數(shù)值是在前一幀的基礎(chǔ)上加1,則認為目前遙測數(shù)據(jù)是連續(xù)的,否則是不連續(xù)的。
1.1.2 數(shù)據(jù)時標的計算
位跳變指令的每一個采樣點都對應一個準確的采樣時刻,這也是時間指令判斷的意義所在。當?shù)孛孢b測設(shè)備接收了一個完整的遙測幀時,將當前時刻作為幀時標編排在遙測數(shù)據(jù)中進行傳輸,該時標可以作為時標計算的依據(jù),一般用時標減去火箭起飛時間,即可得到時間指令的發(fā)生時間。
1.1.3 數(shù)據(jù)跳變的判斷
數(shù)據(jù)跳變的判斷可以概括為以下3個步驟:
步驟1:獲取初值。如某時間指令編碼信號某一位為“0”時表示事件沒有發(fā)生,當變?yōu)椤?”時表示事件發(fā)生,當處理軟件連續(xù)接收到3幀“0”即取到初值,如果沒有滿足條件則始終處于獲取初值狀態(tài)。
步驟2:判斷跳變。當處理軟件連續(xù)收到3幀“1”時任務跳變發(fā)生,取第一幀時間為跳變發(fā)生時間,如果沒有滿足條件則重新判斷跳變。
步驟3:判斷時間合法性。當步驟2完成跳變判斷并計算出發(fā)生時間時,對時間合法性進行判斷,如果發(fā)生時間在理論范圍內(nèi)則判斷完成,否則重新進入步驟1。
另外有一種高精度型位跳變指令,其處理方法與經(jīng)典型位跳變指令基本一致,只是采樣頻率更高,得到的時間指令發(fā)生時間更精確。
這類指令是用編碼信號中的四位由“0”變“1”(或“1”變“0”)表示指令出現(xiàn),主要用來表示時序參數(shù)。如某型火箭的關(guān)機時間有七次,時序參數(shù)對應的四位碼每改變一次狀態(tài),即從“0H”變?yōu)椤癋H”,或從“FH”變?yōu)椤?H”,表示一次關(guān)機事件的發(fā)生。
這類指令除了保持與經(jīng)典位跳變指令相似的處理邏輯外,還具有自身的處理特點。一是在判斷跳變的過程中,為了防止誤碼的發(fā)生,實時處理時僅要求四位編碼信號中的三位發(fā)生改變就可以判斷跳變發(fā)生。這需要對四位編碼信號分別比對,比經(jīng)典位跳變指令的跳變判斷過程略微復雜一些。二是在判斷時間合法性時,這類指令沒有固定的初值,并且同一波道表示多條指令,只能依靠理論時間判斷指令發(fā)生時間合法性;同時在前后兩條指令之間需要建立關(guān)聯(lián),形成依賴指令,當前一條指令正確判出后,后一條指令才能開始判斷。
這類指令通常由箭上的時序控制器采集,采用遙測字的方式傳輸編碼信號。如某型火箭每組遙測字長32位,遙測字由26~31位組成的特征碼及0~26位組成的若干參數(shù)構(gòu)成。由不同的特征碼表示不同的參數(shù),在一定周期內(nèi)循環(huán)傳送。
這類指令與經(jīng)典的位跳變指令的主要區(qū)別在取位方式和數(shù)據(jù)時標的計算上。當處理軟件接收到一組遙測字時,首先要判斷遙測字的特征碼是否與位跳變指令所對應的特征碼一致,如果滿足要求才能根據(jù)指令對應的位置取出編碼信號進行判斷。另外,編碼信號對應的采樣時間也在一組遙測字中傳輸,當指令判出后,以最近的遙測字傳輸?shù)臅r間為指令發(fā)生時間。
總線是近年來應用比較廣泛的數(shù)據(jù)傳輸協(xié)議。它將各類采編器產(chǎn)生的不同數(shù)據(jù)采用數(shù)據(jù)包的形式在總線上傳輸,可以在有限的波道資源上傳遞更多的數(shù)據(jù)。采編器產(chǎn)生的時間指令被封裝在各自的數(shù)據(jù)包中并通過不同的命令字加以區(qū)分。
這類指令的處理依賴于對總線協(xié)議的解碼,這類工作一般由單獨的處理軟件完成。當時間指令處理軟件接收到解碼后的包數(shù)據(jù),需要對數(shù)據(jù)包中的命令字進行判斷,如果與待處理的時間指令的命令字一致,則取出對應的編碼信號進行處理。同時,總線數(shù)據(jù)在進行傳輸時會定時發(fā)送時間戳,即包含時間的數(shù)據(jù)包,當指令判出后,如果所在包中不包含時標信息,可以以最近的時間戳作為指令的發(fā)送時間。
電壓型位跳變指令嚴格意義上說不能稱之為位跳變指令,因為它實際上是箭上測量設(shè)備輸出的一種脈沖信號。但我們?nèi)匀豢梢詫⒔?jīng)典的位跳變指令定義進行推廣,將電壓型位跳變指令歸入其中。這也是面向?qū)ο笏枷氲镊攘λ凇?/p>
這種指令在處理時首先要計算出遙測電壓值,然后根據(jù)變換器校準表進行差值計算,得出被測電壓值。如某型火箭理論輸出為28 V的寬脈沖信號,取20 V作為數(shù)據(jù)處理門檻,處理信號開始和結(jié)束時間。當指令未發(fā)生時,遙測電壓保持在0 V左右,指令處于類似經(jīng)典位跳變指令的“0”狀態(tài),當指令發(fā)生時,遙測電壓應大于20 V,指令處于類似經(jīng)典位跳變指令的“1”狀態(tài)。
1.6 小結(jié)
經(jīng)典位跳變指令等6種位跳變指令的概念和處理特點見表1,可以看出其判斷過程遵循比較一致的處理邏輯,即指令遙測值從一種狀態(tài)變化為另一種狀態(tài)表示指令發(fā)生。在對處理方法進行獨立開發(fā)時,由于處理邏輯的相似性必然會導致重復代碼的存在;又由于不同的開發(fā)人員設(shè)計思路不同,各種中間變量、命名方式不能做到集中統(tǒng)一,導致方法間無法進行代碼復用。
表1 位跳變指令的處理特點
多態(tài)性是面向?qū)ο缶幊痰奶卣髦?。多態(tài)性使程序具有“一個接口,多個版本”的特點,同時也體現(xiàn)了程序由“一般到個別”的特點。C++提供了兩種多態(tài)性,編譯時刻的靜態(tài)多態(tài)性和運行時刻的動態(tài)多態(tài)性。本文討論的是運行時刻的動態(tài)多態(tài)性。動態(tài)多態(tài)性與繼承相關(guān),有兩個方面:子類型關(guān)系所實現(xiàn)的類型多態(tài)性和虛函數(shù)所實現(xiàn)的行為多態(tài)性[4,5]。
繼承性是類之間的一種關(guān)系,表示一個比較抽象的類與一個比較具體的類之間的關(guān)系。在繼承性關(guān)系中,基類表示比較抽象的概念,擁有較少的內(nèi)涵,而具有較大的外延。派生類表示比較具體的概念,具有較多的內(nèi)涵,而具有較小的外延。派生類擁有基類描述的屬性,派生類的定義是基于基類存在的。派生類的對象也是基類的對象,當需要一個基類對象的地方,而實際提供了一個派生類對象,應該是無條件滿足要求的。
虛函數(shù)是用vitual關(guān)鍵字修飾的成員函數(shù)。一個類中的虛函數(shù)可以在其派生類中重新定義,這就是改寫(override)。所謂改寫就是派生類中對其基類中的虛函數(shù)按相同的基調(diào)(函數(shù)名和形參表)和返回值,進行重新定義。當通過基類的引用或指針來調(diào)用虛函數(shù)時,實際執(zhí)行的是派生類改寫后的虛函數(shù),而不是基類定義的虛函數(shù)。虛函數(shù)的核心思想是將行為規(guī)范與具體實現(xiàn)方案分離開來,將函數(shù)調(diào)用與具體執(zhí)行分離開來。規(guī)范是抽象的,由基類說明并提供默認實現(xiàn),而實現(xiàn)是具體的,派生類可以繼承也能改寫。這樣的好處是靈活性、適應性、可擴展性而不失規(guī)范性。在定義一個基類時,對于一個虛函數(shù)能確定其行為規(guī)范,但往往還不能提供一種具體實現(xiàn),其具體實現(xiàn)完全依賴派生類。這時可以把這個虛函數(shù)定義為純虛函數(shù)。純虛函數(shù)就是在類中只提供行為規(guī)范而沒有具體實現(xiàn)的虛函數(shù)。這時基類就成為了抽象類。
圖1 偽代碼
下面,通過一段偽代碼來說明虛函數(shù)的調(diào)用過程,如圖1所示。設(shè)計位跳變指令的處理基類CJFtmBitBase,其中包含一個采集時標的純虛函數(shù)save_time_mark()和一個用來存儲時標的浮點型變量time_mark。經(jīng)典位跳變指令處理子類CJFtmBitCls、總線型位跳變指令處理子類CJFtmBitBus繼承自基類CJFtmBitBase。在兩個子類中分別對純虛函數(shù)save_time_mark()進行改寫。在主函數(shù)main中,將子類對象地址分別賦予基類對象指針,并以基類對象指針調(diào)用采集時標的純虛函數(shù)save_time_mark()。運行此程序可得結(jié)果:
①經(jīng)典位跳變指令采集時標;
②總線型位跳變指令采集時標。
必須使用基類的指針或引用來調(diào)用虛函數(shù)才能實現(xiàn)動態(tài)多態(tài)性。當一個類中含有虛函數(shù)聲明時,編譯器就會為該類加上一個成員變量,是一個指向該類虛函數(shù)表的指針(VPTR)。而虛函數(shù)表是一個存放指向類中虛函數(shù)的函數(shù)指針的線性表。在子類中如果改寫了虛函數(shù),則表中的函數(shù)指針就會被改寫。這種在運行時根據(jù)不同的數(shù)據(jù)類型匹配正確的處理函數(shù)的能力在C++語言中稱之為運行時類型識別(RTTI)。對象的內(nèi)存布局如圖2所示。
圖2 對象的內(nèi)存布局
每一個對象開始的4個字節(jié),存放的是一個虛表指針,這個指針指向一個虛函數(shù)指針數(shù)組。子類CJFtmBitCls、CJFtmBitBus分別復制繼承了基類CJFtmBitBase的虛表,由于各子類重新定義了虛函數(shù)save_time_mark(),所以在虛表中對應函數(shù)的地址也相應地改為子類改寫后的虛函數(shù)地址。
目前,常見的幀格式有兩種:一種是原始跳點數(shù)據(jù)格式,如圖3所示,是一種定長數(shù)據(jù)。該格式將1秒內(nèi)收到的全幀數(shù)據(jù)根據(jù)跳點要求循環(huán)跳點并組幀發(fā)送。循環(huán)數(shù)據(jù)區(qū)長度和循環(huán)次數(shù)是固定的,每一幀帶有時標,循環(huán)數(shù)據(jù)區(qū)的采樣時間可以根據(jù)全幀周期計算出來,循環(huán)數(shù)據(jù)區(qū)的幀計數(shù)作為數(shù)據(jù)連續(xù)性的判斷依據(jù)。經(jīng)典型、四位跳變型、遙測字型、電壓型位跳變指令采用這種格式。另一種是總線包數(shù)據(jù)格式,如圖4所示,是一種變長數(shù)據(jù)。該格式將1秒內(nèi)解出的總線包按不同命令字分別組包,每幀數(shù)據(jù)包含的數(shù)據(jù)包由包個數(shù)表示。該數(shù)據(jù)幀頭不包含時標,時標包含在數(shù)據(jù)包內(nèi)。該數(shù)據(jù)幀也不包含幀計數(shù),因此在處理時對包數(shù)據(jù)的連續(xù)性判斷不作要求。
圖3 原始跳點數(shù)據(jù)格式
圖4 總線包數(shù)據(jù)格式
從圖3、圖4中可以看出,各類位跳變指令均處于所在幀的循環(huán)數(shù)據(jù)區(qū),因此,遍歷每個循環(huán)數(shù)據(jù)區(qū),對包含的位跳變指令進行處理,判斷出時間指令的發(fā)生時間是各類處理方法都要遵循的一般處理步驟。按照這個思路,以經(jīng)典型位跳變指令為模板,可以設(shè)計出位跳變指令的處理方法。將其他位跳變指令處理過程代入其中,對處理方法進行迭代,梳理出適應各類處理方法的一般處理步驟,如圖5、圖6所示。
圖5 函數(shù)流程圖1
圖6 函數(shù)流程圖2
根據(jù)位跳變指令的處理特點給出一般定義:位跳變指令包含兩個狀態(tài),當指令未發(fā)生時為初態(tài),指令發(fā)生時為終態(tài),當指令由初態(tài)變?yōu)榻K態(tài)時即表示指令發(fā)生,取當前時刻為時間指令的發(fā)生時間。為了描述方便,對待處理的遙測數(shù)據(jù)做如下假定:
①遙測數(shù)據(jù)頻率為1幀/秒,其中包含的指令波道按一定步長循環(huán)存儲;
②循環(huán)數(shù)據(jù)區(qū)的長度和循環(huán)次數(shù)是已知的或方便得到的;
③循環(huán)數(shù)據(jù)區(qū)包含幀計數(shù);
④遙測數(shù)據(jù)包含時標。
設(shè)計位跳變指令的抽象基類CJFtmBitBase。該基類包含非虛函數(shù)和虛函數(shù)兩個部分。其中非虛函數(shù)process()設(shè)置為public屬性,對外可見,是位跳變指令處理方法的調(diào)用接口。該函數(shù)是根據(jù)位跳變指令的定義,抽象出的一般處理步驟,各類位跳變指令都遵從相同的處理步驟,從而達到“一個接口”的目的。
為了保證程序代碼的邏輯清晰、層次清楚,將圖1中獲取初值、比較跳變、跳變時間合法性判斷等三個步驟提煉為非虛函數(shù)get_org_value()、cmp_org_value()、chk_time(),設(shè)置為private屬性,對外不可見。函數(shù)中封裝了對應步驟的具體實現(xiàn),流程圖如圖6所示。以上函數(shù)封裝了位跳變指令的一般處理邏輯,子類中不需要實現(xiàn)。
抽象基類CJFtmBitBase包含六個虛函數(shù),分別是:sav_frm_count(),對應于圖5的記錄幀計數(shù)步驟;chk_frm_count(),對應于圖6的幀計數(shù)是否連續(xù)步驟;sav_time_mark(),對應于圖5的記錄時標步驟;cal_time_bit(),對應于圖6的緩存跳變時間步驟;get_bit(),對應于圖6的取位步驟,chk_rely(),對應于圖5依賴指令是否發(fā)生步驟,該步驟僅針對波道復用的指令,如四位跳變型,其他類型直接返回即可。這六個虛函數(shù)屬性為protected,僅對子類可見,涵蓋了不同位跳變指令之間的差異部分,在基類設(shè)計時僅保留調(diào)用接口,具體的實現(xiàn)步驟由子類根據(jù)具體需求進行代碼編寫,從而體現(xiàn)了“多個版本”的特點。
子類的設(shè)計集中在對基類聲明的六個虛函數(shù)進行改寫上。每種位跳變指令可以根據(jù)自身的處理特點,在相應的虛函數(shù)中編寫處理方法,完成具體的處理任務。由于位跳變指令處理方法的設(shè)計是以經(jīng)典型位跳變指令為設(shè)計原型,考慮到大部分火箭實時遙測數(shù)據(jù)格式基本一致,因此在基類中保留了虛函數(shù)的默認實現(xiàn)方式,沒有改寫的虛函數(shù)調(diào)用基類提供的默認處理方法。以遙測字型位跳變指令為例,由于它與經(jīng)典位跳變指令僅在取位方式和數(shù)據(jù)時標計算上存在不同。因此需要改寫sav_time_mark()、cal_time_bit()、get_bit()三個函數(shù),其余函數(shù)繼承基類處理方法即可。從圖7中可以看出,經(jīng)典型、四位跳變型、電壓型的處理方法最為相似,僅在取位方法上有所不同,高精度型由于采樣精度更高,因此時標計算方法與其他的不同。遙測字型和總線型由于輸入數(shù)據(jù)的組合方式不同,與其他處理方法差異較大,需要改寫更多的處理方法。
圖7 類圖
在Linux服務器上,采用Magic C++開發(fā)環(huán)境,根據(jù)以上設(shè)計原則,對現(xiàn)有的六種位跳變指令方法庫重構(gòu)后的結(jié)果列于表2中。由于主要的處理方法被封裝在基類CJFtmBitBase中,各子類的代碼行數(shù)顯著減少。
表2 重構(gòu)前后代碼統(tǒng)計
代碼重構(gòu)前,對于位跳變時間指令的需求分析采用的是面向過程的編程思路,即將處理過程分為不同的處理步驟,然后對處理步驟進行細化形成不同處理方法,再進行代碼編寫。軟件編寫完成后要對所編寫的所有函數(shù)進行單元測試,最后還要對方法庫進行系統(tǒng)測試。整個過程費時、費力。采用面向?qū)ο蟮脑O(shè)計思想后,對需要開發(fā)的位跳變指令首先進行類型識別,即判斷處理需求是否滿足位跳變指令一般定義要求,如果確認此次開發(fā)是位跳變指令的一種相似處理方法,則只需識別出處理差異,并針對差異改寫相應的處理方法。采用這種方法,需求分析和代碼編寫測試階段工作量大大減輕,開發(fā)效率顯著提高。
采用面向?qū)ο箝_發(fā)方法后,從軟件實現(xiàn)角度對位跳變指令的處理方法提出了統(tǒng)一的處理定義。采用抽象基類的設(shè)計,對位跳變指令的處理流程進行了規(guī)范,并對不同的處理步驟提供了一致的調(diào)用接口,解決了由于開發(fā)人員不同,編碼風格差異,造成代碼維護困難的問題。同時由于采用了子類設(shè)計,位跳變指令的處理種類一目了然,方便從宏觀角度準確掌握現(xiàn)有處理方法底數(shù),對箭遙處理軟件的規(guī)范化管理和確定任務的繼承基線都有較大的幫助。
本文通過梳理幾種位跳變指令的處理方法,總結(jié)出位跳變指令的主要處理邏輯,給出了位跳變指令的一般化處理定義,設(shè)計了位跳變指令抽象基類及實現(xiàn)子類。采用基類指針作為位跳變指令處理方法的調(diào)用接口,保證了處理方法的規(guī)范統(tǒng)一,同時使軟件具有較好的可擴展性。通過虛函數(shù)機制在實現(xiàn)子類中改寫指定函數(shù)的實現(xiàn)代碼,體現(xiàn)了不同指令類型的處理特點。使用該編碼方法使處理流程更加清晰,方便不同開發(fā)人員熟悉掌握,同時較好的代碼復用使開發(fā)工作量大幅減少,提高了編碼效率和規(guī)范性。
[1] 茅永興, 朱偉康, 劉冰, 等. 箭遙時間指令參數(shù)實時處理方法研究[J]. 遙測遙控, 2013, 34(3):72–75.
MAO Yongxing, ZHU Weikang, LIU Bing, et al. A fusion method of real-time and delay telemetry data[J]. Journal of Telemetry,Tracking and Command, 2013, 34(3): 72–75.
[2] 周彬, 郭亮杰, 田鴻瀛, 等. 我國箭載遙測傳輸設(shè)備發(fā)展現(xiàn)狀及展望[J]. 遙測遙控, 2017, 38(6):7–9.
ZHOU Bin, GUO Liangjie, TIAN Hongying, et al. Development status and prospect of chinese telemetry transmission equipments on rockets[J]. Journal of Telemetry,Tracking and Command, 2017, 38(6): 7–9.
[3] 陳以恩, 張俊剛, 袁嗣杰, 等 .遙測數(shù)據(jù)處理[M]. . 北京: 國防工業(yè)出版社, 2002年.
[4] 羅糧. C++中通過VTABLE實現(xiàn)多態(tài)性機制的分析[J]. 電腦編程技巧與維護, 2014(11): 46–47, 93.
LUO Liang. Analysis of polymorphism mechanism through VTABLE in C++[J]. Computer Programming Skills and Maintenance, 2014(11): 46–47, 93.
[5] 謝云博.多態(tài)性實現(xiàn)機制在C++與JAVA中的比較分析[J]. 軟件導刊, 2014, 13(6): 47–49.
XIE Yunbo. Comparative analysis of polymorphism implementation mechanism in C++ and Java[J]. Software Guide, 2014, 13(6): 47–49.
Real-time processing method of bit control instruction
SHI Feng
(Xi’an Satellite Control Center, Xi’an 710043, China)
In aiming at the problem of poor reusing of different bit control instruction processing codes in rocket telemetry real-time processing software, the general steps of bit control instruction processing are abstracted by analyzing the processing characteristics of several typical bit control instructions, and the definition of bit control instruction is given from the point of view of software. According to the principle of C++ language polymorphism, the software implementation of the bit control instruction is divided into abstract base class and implementation subclass, the processing logic of the bit control instruction is standardized, and the processing characteristics of different bit control instructions are presented. The application practice shows that the amount of code is significantly reduced, the process flow is more clearer, and the software reuse rate is greatly improved.
Bit conversion instruction; Real-time processing; Telemetry
TP311.1
A
CN11-1780(2022)01-0082-09
10.12347/j.ycyk.20210606001
石峰.位跳變時間指令的實時處理方法[J]. 遙測遙控, 2022, 43(1): 82–90.
DOI:10.12347/j.ycyk.20210606001
: SHI Feng. Real-time processing method of bit control instruction[J]. Journal of Telemetry, Tracking and Command, 2022, 43(1): 82–90.
石 峰 1977年生,本科,高級工程師,主要研究方向為火箭遙測實時處理。
2021-06-06
2021-07-08
Website: ycyk.brit.com.cn Email: ycyk704@163.com
(本文編輯:潘三英)