柯秋立,蘇凱雄
?。ǜV荽髮W(xué) 物理與信息工程學(xué)院,,福建 福州 350002)
摘要:為了對(duì)北斗衛(wèi)星無(wú)線電測(cè)定業(yè)務(wù)(Radio Determination Satellite Service,RDSS)報(bào)文與衛(wèi)星無(wú)線電導(dǎo)航業(yè)務(wù)(Radio Navigation Satellite Service,,RNSS)報(bào)文的控制實(shí)現(xiàn)功能集成,,設(shè)計(jì)一種針對(duì)北斗用戶終端模塊的軟件系統(tǒng)?;谇昂笈_(tái)分離的設(shè)計(jì)思想來(lái)構(gòu)架該軟件,,即后臺(tái)線程負(fù)責(zé)使用串口與用戶終端模塊通信,包括對(duì)RDSS/RNSS數(shù)據(jù)的接收解析和對(duì)RDSS數(shù)據(jù)的封裝發(fā)送;前臺(tái)用戶界面完成數(shù)據(jù)的可視化,,并實(shí)現(xiàn)靈活的人機(jī)交互,。前后臺(tái)線程之間采用并發(fā)技術(shù)實(shí)現(xiàn)通信數(shù)據(jù)的快速處理。
關(guān)鍵詞:RDSS,;RNSS,;集成; 控制
中圖分類號(hào):TN927+.2文獻(xiàn)標(biāo)識(shí)碼:ADOI: 10.19358/j.issn.1674-7720.2017.10.005
引用格式:柯秋立,蘇凱雄.北斗通信終端軟件的設(shè)計(jì)與實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,,2017,36(10):15-17,22.
0引言
北斗衛(wèi)星導(dǎo)航系統(tǒng)作為后起之秀,相關(guān)應(yīng)用等待挖掘,,具有很大的市場(chǎng)潛力,。鑒于GPS的應(yīng)用經(jīng)驗(yàn),在北斗一代系統(tǒng)導(dǎo)航終端的市場(chǎng)化過(guò)程中,,有北斗系統(tǒng)RDSS業(yè)務(wù)與GPS RNSS業(yè)務(wù)相結(jié)合的導(dǎo)航終端案例,,并且北斗二代系統(tǒng)也實(shí)現(xiàn)了與GPS類似的RNSS業(yè)務(wù)[1],因而結(jié)合了RDSS業(yè)務(wù)與RNSS業(yè)務(wù)的終端軟件將會(huì)在北斗導(dǎo)航系統(tǒng)的應(yīng)用過(guò)程中發(fā)揮出巨大作用,。
本文針對(duì)此需求,,設(shè)計(jì)一種控制軟件系統(tǒng),對(duì)北斗RDSS,、RNSS綜合業(yè)務(wù)進(jìn)行報(bào)文控制,,包括數(shù)據(jù)通信、授時(shí),、終端移動(dòng)數(shù)據(jù)獲取等功能,,并且具有較好的人機(jī)交互效果。
1北斗衛(wèi)星導(dǎo)航終端系統(tǒng)概述
如圖1所示,,一個(gè)完整的北斗衛(wèi)星導(dǎo)航終端系統(tǒng),,主要由北斗用戶終端模塊(該模塊同時(shí)具有北斗一代的RDSS業(yè)務(wù)功能與GPS、北斗二代的RNSS業(yè)務(wù)功能),、Windows平臺(tái),、后臺(tái)數(shù)據(jù)處理線程,、人機(jī)界面四個(gè)部分組成。整個(gè)北斗導(dǎo)航終端系統(tǒng)的功能主要是RDSS/RNSS數(shù)據(jù)幀的接收解析與封裝發(fā)送,。數(shù)據(jù)幀接收過(guò)程:北斗用戶終端首先將天線接收到的北斗信號(hào)經(jīng)過(guò)模塊內(nèi)部的信號(hào)處理,,轉(zhuǎn)換成串口數(shù)據(jù)并輸出到PC。串口數(shù)據(jù)進(jìn)入PC后由后臺(tái)線程根據(jù)幀協(xié)議解析,,得到用戶應(yīng)用數(shù)據(jù),。該應(yīng)用數(shù)據(jù)將被人機(jī)界面進(jìn)行可視化處理。數(shù)據(jù)幀發(fā)送過(guò)程:用戶在人機(jī)界面發(fā)送命令時(shí),,該命令對(duì)應(yīng)的應(yīng)用數(shù)據(jù)被后臺(tái)線程封裝成協(xié)議幀并輸出到串口,。北斗用戶終端將得到的串口數(shù)據(jù)經(jīng)過(guò)內(nèi)部信號(hào)處理后,通過(guò)天線發(fā)送出去,。
2軟件系統(tǒng)實(shí)現(xiàn)
軟件系統(tǒng)的設(shè)計(jì)主要由兩部分組成:后臺(tái)線程設(shè)計(jì)和用戶界面設(shè)計(jì),。下面針對(duì)這兩部分的具體實(shí)現(xiàn)做詳細(xì)闡述。
2.1后臺(tái)線程實(shí)現(xiàn)
后臺(tái)線程的設(shè)計(jì)主要涉及RDSS/RNSS協(xié)議幀的接收,、解析算法,,解析與顯示快速響應(yīng)算法。算法涉及RDSS/RNSS兩種報(bào)文,,基于兩種不同的協(xié)議規(guī)范,,一種是北斗用戶機(jī)接口協(xié)議(4.0),另一種是NMEA0183協(xié)議,。
2.1.1用戶接口協(xié)議
用戶接口協(xié)議規(guī)范了通信應(yīng)用數(shù)據(jù)幀的格式,。北斗一代接口數(shù)據(jù)傳輸協(xié)議(4.0)在該控制軟件中主要用于規(guī)范北斗通信數(shù)據(jù)和定位數(shù)據(jù),而NMEA0183協(xié)議主要用于規(guī)范衛(wèi)星的位置數(shù)據(jù)和終端設(shè)備的移動(dòng)數(shù)據(jù),。
北斗用戶機(jī)接口協(xié)議(4.0)如圖2所示,。“用戶地址”是指作為發(fā)送方的北斗卡號(hào)碼,,而接收方的北斗卡號(hào)碼被包含在“信息內(nèi)容”字段中,。
由北斗用戶機(jī)接口協(xié)議(4.0)可知,該協(xié)議數(shù)據(jù)幀是以字節(jié)為單位來(lái)表示信息,,所以要將該數(shù)據(jù)幀原有的字節(jié)類型轉(zhuǎn)換為方便計(jì)算機(jī)處理的基本數(shù)據(jù)類型[2],。
北斗用戶機(jī)接口協(xié)議(4.0)中,在北斗終端設(shè)備之間進(jìn)行數(shù)據(jù)通信的方式有“代碼”,、“漢字”兩種,。在北斗終端設(shè)備實(shí)際通信過(guò)程中,當(dāng)通信數(shù)據(jù)出現(xiàn)中英文數(shù)字混合的情況時(shí),,應(yīng)選擇“代碼”方式發(fā)送,;如果單純發(fā)送數(shù)字,由于數(shù)字的范圍是0~9,為了更有效地利用有限帶寬,,可以在“代碼”通信方式中進(jìn)行拓展,,用4 bit來(lái)表示一個(gè)數(shù)字,,而不是原來(lái)ASCII規(guī)范的1 B來(lái)表示一個(gè)數(shù)字。
NMEA0183協(xié)議(National Marine Electronics Association )是為海用電子設(shè)備制定的標(biāo)準(zhǔn)格式,,定義了接收機(jī)輸出信息的標(biāo)準(zhǔn),。該協(xié)議用逗點(diǎn)隔開(kāi)數(shù)據(jù)流,數(shù)據(jù)流長(zhǎng)度為30~100字符不等,,通常以每秒間隔選擇輸出[3],。常用的NMEA0183協(xié)議語(yǔ)句功能如表1所示。
2.1.2數(shù)據(jù)接收算法
數(shù)據(jù)幀接收模塊的輸入為字節(jié)數(shù)據(jù)流,,模塊通過(guò)不斷地讀取串口緩沖區(qū),,經(jīng)內(nèi)部處理,輸出完整的協(xié)議幀語(yǔ)句,。數(shù)據(jù)接收模塊的內(nèi)部流程圖如圖3所示,。
由于RNSS(北斗二代、GPS)數(shù)據(jù)幀采用NMEA0183協(xié)議規(guī)范,,RDSS(北斗一代)數(shù)據(jù)幀采用北斗用戶機(jī)接口協(xié)議(4.0)規(guī)范,,因而數(shù)據(jù)幀的接收需要適配兩種協(xié)議規(guī)范。
根據(jù)圖2北斗用戶機(jī)接口協(xié)議(4.0)規(guī)范,,該類數(shù)據(jù)幀的完整接收策略為:接收方先接收該幀的長(zhǎng)度數(shù)據(jù),,作為該幀數(shù)據(jù)量大小的標(biāo)準(zhǔn);然后,,接收幀體并計(jì)數(shù),,當(dāng)計(jì)數(shù)值與長(zhǎng)度數(shù)據(jù)相等時(shí)就表示該幀接收完整。
根據(jù)NMEA0183協(xié)議規(guī)范,,該類數(shù)據(jù)幀的完整接收策略為:接收到幀頭“$”時(shí)表示有效數(shù)據(jù)開(kāi)始,一直接收,,直到收到幀尾“\\r\\n”時(shí)表示一個(gè)數(shù)據(jù)幀結(jié)束,。
2.1.3數(shù)據(jù)解析算法
數(shù)據(jù)解析涉及北斗用戶機(jī)接口協(xié)議(4.0)和NMEA0183協(xié)議,而且由于兩類數(shù)據(jù)流都是由同一個(gè)串口來(lái)進(jìn)行數(shù)據(jù)通信,,因而數(shù)據(jù)解析時(shí),,算法必須適配兩種協(xié)議。
部分?jǐn)?shù)據(jù)解析的算法流程圖如圖4所示,。
解析即在數(shù)據(jù)幀里提取相應(yīng)字段的信息并顯示,。首先需要將數(shù)據(jù)幀從字節(jié)流形式通過(guò)ASCII規(guī)范轉(zhuǎn)換為字符串形式以便編程處理[4]。將數(shù)據(jù)幀轉(zhuǎn)換為字符串形式后,,利用編程語(yǔ)言的字符串分割方法便可以很容易地得到各個(gè)字段的應(yīng)用數(shù)據(jù)信息,。
對(duì)于通信信息“$TXXX”、時(shí)間信息“$SJXX”,、定位信息“$DWXX”,、移動(dòng)數(shù)據(jù)“$RMC”直接將應(yīng)用數(shù)據(jù)交付用戶界面,;對(duì)于有關(guān)可見(jiàn)衛(wèi)星編號(hào)、衛(wèi)星俯仰角,、信號(hào)載噪比的“$GSV”語(yǔ)句,,需要將衛(wèi)星編號(hào)與其俯仰角或載噪比等數(shù)據(jù)組合成鍵值對(duì)再交付用戶界面,以便于該數(shù)據(jù)在柱狀圖,、星座圖上顯示,。
2.1.4快速響應(yīng)方法
數(shù)據(jù)接收與數(shù)據(jù)解析,這兩個(gè)流程之間的同步形式直接決定了軟件響應(yīng)的速度,。該軟件將這兩個(gè)流程分別設(shè)計(jì)成兩個(gè)獨(dú)立的線程,,并且采用緩沖技術(shù),極大地提高了響應(yīng)速度,。
首先,,在內(nèi)存空間開(kāi)辟n個(gè)緩存區(qū)。
之后,,數(shù)據(jù)接收線程將完整的數(shù)據(jù)幀填入緩存區(qū)1,。緩存區(qū)1填完之后,數(shù)據(jù)接收線程將新的完整數(shù)據(jù)幀填入緩存區(qū)2,。重復(fù)這個(gè)過(guò)程直到最后一個(gè)緩存區(qū)n被填完,,又重新開(kāi)始填充緩存區(qū)1。數(shù)據(jù)接收線程將一直循環(huán)這樣的流程,。
與此同時(shí),,數(shù)據(jù)解析線程首先判斷緩存區(qū)1是否填滿,如果已經(jīng)填充完成,,那么就將該數(shù)據(jù)幀進(jìn)行解析,;如果還沒(méi)完成,那么等待,。緩存區(qū)1的數(shù)據(jù)幀解析完成之后,,立刻又對(duì)緩存區(qū)2的數(shù)據(jù)幀進(jìn)行解析。直到最后一個(gè)緩存區(qū)n的數(shù)據(jù)幀被解析完,,又重新從緩存區(qū)1開(kāi)始解析數(shù)據(jù)幀,。數(shù)據(jù)解析線程將一直重復(fù)這樣的流程。
2.2前臺(tái)界面設(shè)計(jì)
用戶界面的輸入主要有“定位申請(qǐng)”和“通信申請(qǐng)”命令,,而接收的信息主要有用戶通信信息,、用戶移動(dòng)數(shù)據(jù)(速度、經(jīng)緯度等)和衛(wèi)星數(shù)據(jù)(衛(wèi)星數(shù),、衛(wèi)星俯仰角等),。本次用戶界面設(shè)計(jì)采用Visual Studio 2010為開(kāi)發(fā)工具。利用Windows Form框架[5]將解析得到的應(yīng)用數(shù)據(jù)如衛(wèi)星信號(hào)載噪比數(shù)據(jù)、衛(wèi)星俯仰角數(shù)據(jù)在柱狀圖,、星座圖上進(jìn)行顯示,,而對(duì)于其他簡(jiǎn)單的應(yīng)用數(shù)據(jù),則使用文字顯示,。最終得到如圖5所示界面,。
3軟件系統(tǒng)測(cè)試
本次軟件設(shè)計(jì)的測(cè)試平臺(tái)是PC Windows操作系統(tǒng)環(huán)境,北斗終端用戶機(jī)采用FB3511,。該軟件將對(duì)用戶機(jī)的報(bào)文進(jìn)行控制處理,。運(yùn)行軟件,待鎖定北斗衛(wèi)星信號(hào)后開(kāi)始進(jìn)行測(cè)試,。
(1)定位功能功能測(cè)試
按下“單次定位”按鈕,,“北斗報(bào)文顯示”框給出經(jīng)緯度信息,如圖6,。輸出的經(jīng)緯度信息與測(cè)試地經(jīng)緯度一致,,表明RDSS定位報(bào)文控制功能正確實(shí)現(xiàn)。圖中,,“單次定位”命令未能及時(shí)響應(yīng),,這是由于該北斗卡限制報(bào)文發(fā)送頻度為60秒所致。
(2)通信功能測(cè)試
在“收方地址”填入本機(jī)卡號(hào)307577,,即發(fā)給本臺(tái)設(shè)備,。在信息發(fā)送框填入“你好,北斗 hello BD”,,在“北斗報(bào)文顯示”框里面就會(huì)收到該信息,,如圖7。收發(fā)信息一致,,表明RDSS收發(fā)報(bào)文功能正確實(shí)現(xiàn),。
(3)設(shè)備移動(dòng)信息功能測(cè)試
設(shè)備的移動(dòng)數(shù)據(jù)由北斗衛(wèi)星不斷地發(fā)送到用戶終端設(shè)備,如圖8,。授時(shí)時(shí)間符合北京時(shí)間,,定位衛(wèi)星數(shù)、視野衛(wèi)星數(shù)等與接收的報(bào)文數(shù)據(jù)一致,,設(shè)備移動(dòng)信息包括対地速度與航向與設(shè)備實(shí)際情況一致,表明RNSS報(bào)文解析功能正確實(shí)現(xiàn),?!?/p>
4結(jié)論
該軟件系統(tǒng)采用了Windows Form框架和多線程并發(fā)技術(shù)進(jìn)行軟件設(shè)計(jì),合理規(guī)劃各個(gè)數(shù)據(jù)處理流程的分工,,將數(shù)據(jù)處理的負(fù)荷合理分配到各個(gè)部分,。實(shí)際測(cè)試表明,該軟件能夠?qū)DSS/RNSS兩種協(xié)議報(bào)文進(jìn)行可靠、準(zhǔn)確的控制,,做到快速響應(yīng),,為后續(xù)的軟件應(yīng)用研究奠定基礎(chǔ)。
參考文獻(xiàn)
?。?] 黃建華.北斗RDSS機(jī)制下的導(dǎo)航地圖更新設(shè)想及實(shí)踐[J].測(cè)繪通報(bào),2012(5):44-46,49.
?。?] 文斌,寧志強(qiáng),陳愛(ài)萍.基于“北斗一代”的ZigBee無(wú)線網(wǎng)關(guān)設(shè)計(jì)[J].電訊技術(shù),2011,51(9):92-95.
[3] 朱炳瑜,肖純賢,陳永虎,等.智能車載系統(tǒng)的設(shè)計(jì)[J].南開(kāi)大學(xué)學(xué)報(bào)(自然科學(xué)版),2011,44(6):14-17.
?。?] 薛雅娟,陳維鋒,郭勇,等.C# .NET環(huán)境下GPS OEM板接收機(jī)數(shù)據(jù)的提?。跩].成都信息工程學(xué)院學(xué)報(bào),2006,21(5):645648.
[5] 林淑真,楊秀芝,蘇凱雄,等.基于Web的鋰電池組管理系統(tǒng)[J].微型機(jī)與應(yīng)用,2015,34(21): 21-23,33.