姜華,王軍,姜志,杜博軍
(1.蘇州科技大學(xué)電子與信息工程學(xué)院,江蘇 蘇州 215009;2.中國白城兵器實(shí)驗(yàn)中心,吉林 白城 137001)
基于USB便攜式北斗/GPS導(dǎo)航授時(shí)系統(tǒng)設(shè)計(jì)
姜華1,王軍1,姜志2,杜博軍2
(1.蘇州科技大學(xué)電子與信息工程學(xué)院,江蘇蘇州215009;2.中國白城兵器實(shí)驗(yàn)中心,吉林白城137001)
針對便攜式計(jì)算機(jī)系統(tǒng)時(shí)間定位信息不準(zhǔn)問題,提出一種基于USB便攜式北斗/GPS雙模授時(shí)定位的系統(tǒng)設(shè)計(jì)。介紹了USB便攜式導(dǎo)航授時(shí)系統(tǒng)硬件設(shè)計(jì)和利用Visual Studio 2010軟件在Windows 10系統(tǒng)下的進(jìn)行軟件設(shè)計(jì),即串行通訊的初始化編譯和使用C++對衛(wèi)星導(dǎo)航數(shù)據(jù)的解碼,同時(shí)利用MFC的應(yīng)用程序開發(fā)功能設(shè)計(jì)解碼后對數(shù)據(jù)進(jìn)行顯示的窗口。實(shí)驗(yàn)證明:在Windows 10系統(tǒng)平臺(tái)下USB傳輸衛(wèi)星信息穩(wěn)定,數(shù)據(jù)顯示界面簡潔,且時(shí)間精度達(dá)到20 ns,定位信息精度為3m。
便攜;授時(shí)/定位;Visual Studio 2010;窗口設(shè)計(jì)
便攜式計(jì)算機(jī)提供的時(shí)間和位置信息是由網(wǎng)絡(luò)產(chǎn)生的,這種方式提供的數(shù)據(jù)精確度很低,并不能滿足工業(yè)領(lǐng)域要求。針對這種數(shù)據(jù)精度過低的問題,提出利用外部主控芯片對北斗/GPS接收到的衛(wèi)星導(dǎo)航數(shù)據(jù)進(jìn)行解碼,通過PCI總線接口給計(jì)算機(jī)提供可靠數(shù)據(jù)[1]。這種方法不足之處在于:對于現(xiàn)有的便攜式計(jì)算機(jī)已無PCI插槽,且過于依賴網(wǎng)絡(luò)存在。針對上述不足,現(xiàn)提出一種基于Windows 10操作系統(tǒng)下,使用USB協(xié)議傳輸北斗/GPS的衛(wèi)星導(dǎo)航數(shù)據(jù)的系統(tǒng)設(shè)計(jì),無需內(nèi)部插槽,利用計(jì)算機(jī)進(jìn)行數(shù)據(jù)解碼以及設(shè)計(jì)應(yīng)用軟件實(shí)時(shí)顯示解碼后的數(shù)據(jù)。
系統(tǒng)包括四個(gè)模塊:北斗/GPS衛(wèi)星導(dǎo)航數(shù)據(jù)接收模塊、通訊協(xié)議轉(zhuǎn)換模塊、計(jì)算機(jī)串口通訊模塊和數(shù)據(jù)解碼以及窗口設(shè)計(jì)模塊。北斗/GPS雙模授時(shí)的芯片連接天線接收衛(wèi)星導(dǎo)航信息,通過USB接口轉(zhuǎn)換模塊傳輸?shù)接?jì)算機(jī)的COM口,計(jì)算機(jī)CPU發(fā)送指令提取$GPRMC的碼流,利用VS 2010軟件編寫C++程序?qū)?GPRMC碼流的時(shí)間定位信息進(jìn)行提取,并設(shè)計(jì)窗口執(zhí)行軟件來接收顯示數(shù)據(jù),如圖1所示。
圖1 系統(tǒng)框架
北斗/GPS授時(shí)定位采用和芯星通有限公司的UM220芯片,是雙系統(tǒng)導(dǎo)航授時(shí)模塊,可同時(shí)支持北斗和
GPS的兩個(gè)頻點(diǎn),并且功耗僅有350mW,提供了3個(gè)TTL電平的串口通訊引腳(UART),多種波特率可供選擇,UM220的封裝是屬于緊湊型的,體積小、功耗低和成本低的優(yōu)越性讓其成為便攜式定位/授時(shí)的首選[2]。
USB接口是計(jì)算機(jī)通信的常用接口,而芯片的集成板上的接口屬于RS232類型,所以衛(wèi)星導(dǎo)航數(shù)據(jù)傳輸?shù)接?jì)算機(jī)之前要經(jīng)過接口轉(zhuǎn)換器PL2303,通過一個(gè)RS232的全雙工異步串行通信裝置與USB直接連接,其通信方式完全兼容USB2.0規(guī)范,可在多種不同的操作系統(tǒng)下安裝運(yùn)行它的驅(qū)動(dòng),系統(tǒng)硬件設(shè)計(jì)如圖2所示。
圖2 硬件連接圖
3.1通訊串口初始化設(shè)計(jì)
計(jì)算機(jī)接收衛(wèi)星導(dǎo)航數(shù)據(jù)之前需要對USB和計(jì)算機(jī)之間的串行通訊做初始化處理,串口讀取數(shù)據(jù)的方法有很多,串口的參數(shù)信息都被創(chuàng)建在文件下再打開。VS 2010在Windows 10系統(tǒng)下對串口的設(shè)置都可以調(diào)用指定函數(shù)[3]。運(yùn)用類函數(shù)庫中個(gè)函數(shù)指定初始端口為COM1,輸入數(shù)據(jù)模式為二進(jìn)制的形式,輸入緩存空間分配為1 024字節(jié),輸出緩存空間為512字節(jié),對執(zhí)行串口通訊的端口制定參數(shù)設(shè)置:波特率為9 600 bps、無校驗(yàn)位、8個(gè)數(shù)據(jù)位、1個(gè)停止位[3],初始化流程如圖3所示。
圖3 初始化函數(shù)類型
3.2時(shí)間位置信息解碼設(shè)計(jì)
3.2.1數(shù)據(jù)幀格式
數(shù)據(jù)主要是通過天線接收到的衛(wèi)星數(shù)據(jù),這種數(shù)據(jù)具有固定的幀結(jié)構(gòu),而且在不經(jīng)處理前這種數(shù)據(jù)都是通過字節(jié)流的方式傳輸?shù)接?jì)算機(jī)內(nèi),所以必須對北斗/GPS的數(shù)據(jù)幀結(jié)構(gòu)有所了解,才能對時(shí)間、位置等信息進(jìn)行提取。軟件系統(tǒng)主要提取的數(shù)據(jù)是GPRMC碼流,是導(dǎo)航衛(wèi)星的精簡數(shù)據(jù),一個(gè)數(shù)據(jù)幀共有17個(gè)字段[4]。數(shù)據(jù)幀都是以$加上數(shù)據(jù)格式名稱的大寫字母作為開頭,逗號做為不同字段之間的分隔符[5],這也是解碼過程中區(qū)分?jǐn)?shù)據(jù)的依據(jù),具體數(shù)據(jù)類型分布如表1。
表1 數(shù)據(jù)幀格式
3.2.2數(shù)據(jù)信息解碼方法
接收完數(shù)據(jù)后將數(shù)據(jù)進(jìn)行緩存,需要接收以$GPRMC為幀頭的數(shù)據(jù),檢測出$GPRMC的幀頭后直接對數(shù)據(jù)的導(dǎo)航參數(shù)作提取,逗號會(huì)將每種參數(shù)隔開,所以通過所記逗號的個(gè)數(shù)來做依據(jù)[6],逗號個(gè)數(shù)的變化就是數(shù)據(jù)類型的改變,當(dāng)計(jì)數(shù)到1時(shí),且此刻串口接收數(shù)組中對應(yīng)的數(shù)值不是ASCLL碼0x24,可確定時(shí)間數(shù)值被放在數(shù)組里面,定義一個(gè)CString類型的變量[7],用這個(gè)變量來存儲(chǔ)時(shí)間的數(shù)值,時(shí)間數(shù)值提取出來后需要對數(shù)值進(jìn)行分離,按小時(shí)、分鐘、秒的順序依次對數(shù)組進(jìn)行提取,如圖4所示,并將所得到的時(shí)間做變換,北斗/ GPS芯片內(nèi)部傳達(dá)的時(shí)間信息是格林尼治時(shí)區(qū)的時(shí)間,所以需要將格林尼治時(shí)間變?yōu)楸本r(shí)間,解碼后所得到的時(shí)間上再加上8個(gè)小時(shí)便可以得到準(zhǔn)確的北京時(shí)間[8]。
3.3數(shù)據(jù)顯示與窗口設(shè)計(jì)
在界面軟件設(shè)計(jì)中,采用VS 2010開發(fā)平臺(tái),將Microsoft Communications Control,version 6.0的控件添加到窗口中,使用類函數(shù)可以創(chuàng)建窗口中的圖標(biāo)大小和按鍵功能,也可用軟件中控制窗口里的按鈕樣式[9],雙擊按鈕來創(chuàng)建按鈕本身的響應(yīng)函數(shù),系統(tǒng)中使用了一個(gè)開始通訊的按鈕,具體執(zhí)行流程如圖5所示。
解碼后的數(shù)據(jù)以CString類型存放在各個(gè)對應(yīng)的變量中,實(shí)驗(yàn)中顯示數(shù)據(jù)是以靜態(tài)文本的形式,用靜態(tài)文本的控制變量對應(yīng)顯示,使用m_ctrlhour.Format()和m_ctrlCom.SetwindowText()來顯示被解碼后的數(shù)據(jù)[10]。
圖4 北斗/GPS數(shù)據(jù)解碼流程圖
圖5 按鈕響應(yīng)函數(shù)
基于USB便攜式導(dǎo)航授時(shí)系統(tǒng)的設(shè)計(jì),將天線接收到的衛(wèi)星導(dǎo)航數(shù)據(jù)經(jīng)過北斗/USB雙模授時(shí)芯片的處理,再將數(shù)據(jù)的傳輸協(xié)議轉(zhuǎn)換成USB協(xié)議后,通過串口傳輸?shù)接?jì)算機(jī)中,在計(jì)算機(jī)里面使用專用窗口對數(shù)據(jù)進(jìn)行顯示,實(shí)驗(yàn)傳輸系統(tǒng)如圖6所示。
圖6 硬件系統(tǒng)
實(shí)驗(yàn)使用的便攜式計(jì)算機(jī)的操作系統(tǒng)為Windows 10系統(tǒng),啟動(dòng)北斗/GPS定時(shí)導(dǎo)航系統(tǒng),定位時(shí)間僅需50 s,通過天線所接收到的時(shí)間、位置信息解碼后數(shù)值顯示穩(wěn)定,時(shí)間精確度可達(dá)到20 ns,定位精度達(dá)到3 m,根據(jù)需要可對數(shù)據(jù)進(jìn)行不同精度的解碼和顯示,經(jīng)實(shí)驗(yàn)證明該系統(tǒng)可執(zhí)行度高、穩(wěn)定性好、數(shù)值可靠,且程序可移植性較高,系統(tǒng)實(shí)驗(yàn)結(jié)果如圖7所示。
圖7 實(shí)驗(yàn)結(jié)果圖
USB便攜式授時(shí)定位系統(tǒng)通過北斗/GPS導(dǎo)航定位模塊為計(jì)算機(jī)提供可靠時(shí)間定位信息,在VS 2010的編譯環(huán)境下利用C++語言對北斗/GPS數(shù)據(jù)進(jìn)行解碼和串口初始化,并在計(jì)算機(jī)內(nèi)使用專用窗口對解碼數(shù)據(jù)進(jìn)行顯示的功能,為應(yīng)用層開發(fā)帶來便利。USB便攜式定位授時(shí)系統(tǒng)的便攜性、穩(wěn)定性、精確性等優(yōu)點(diǎn),滿足了目前授時(shí)定位工業(yè)領(lǐng)域的需求。
[1]楊會(huì)玲,唐彬.基于PCI-E的北斗/GPS雙模授時(shí)系統(tǒng)設(shè)計(jì)[J].蘇州科技學(xué)院學(xué)報(bào)(工程技術(shù)版),2014,27(1):68-70.
[2]張超,顧濟(jì)華.基于GPS/BDS的移動(dòng)目標(biāo)定位追蹤系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2015,38(17):121-123.
[3]趙素娟.基于MOXA多串口卡的多串口通信的VC++實(shí)現(xiàn)[J].計(jì)算機(jī)與現(xiàn)代化,2011(8):117-119.
[4]張波濤,閆錦麗,羅維.基于VC++6.0實(shí)現(xiàn)的串口通訊[J].通訊世界,2015(13):109.
[5]史小雨,程鵬飛,蔡艷輝,等.差分GPS數(shù)據(jù)通信格式RTCM3.1及其解碼算法的實(shí)現(xiàn)[J].測繪通報(bào),2012(6):4-6.
[6]陳磊,李康.基于ARM的GPS接收機(jī)解碼系統(tǒng)設(shè)計(jì)[J].科技信息,2013(19):90-91.
[7]劉斌,梁美美,李欣.基于NIOSH的GPS信息接收系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2013(6):105-108.
[8]李必凱.Visual C++編程獲取GPS觀測數(shù)據(jù)的探討[J].信息通信,2013(5):69-69.
[9]傅瑤,韓誠山.多媒體定時(shí)器方法中MFC跨線程傳遞窗口類消息的實(shí)現(xiàn)[J].微型電腦應(yīng)用,2014,30(6):5-6.
[10]衛(wèi)洪春,彭小利,蒲國林.MFC窗口創(chuàng)建過程的研究[J].現(xiàn)代電子技術(shù),2014,37(11):151-154.
Navigation timing system design based on portable UBSBeidou/GPS
JIANG Hua1,WANG Jun1,JIANG Zhi2,DU Bojun2
(1.School of Electronic and Information Engineering,SUST,Suzhou 215009,China;2.Bai Cheng Ordnance Test Center of China,Baicheng 137001,China)
As to the inaccurate time and position information of the portable computer system,this paper presents a system design based on portable USB and Beidou/GPS dual-mode positioning.The paper introduces the hardware design of USB portable positioning timing system and the software design under the windows system by the use of VS 2010,which is also the initialization of serial communication and the decode of the satellite navigation data by C++,and discusses the presentation of data after decoding by the application development function of MFC.Test results show that the information of USB is stable,the data display interface is simple,the time accuracy is 80 ns,and the accuracy of the positioning information is 5 m under theWindows 10 system platform.
portable;timing/location;VS 2010;window design
TP31
B
1672-0679(2016)03-0077-04
2015-11-02
江蘇省普通高校研究生科研創(chuàng)新計(jì)劃項(xiàng)目(SKCX16_044)
姜華(1993-),男,江蘇泰州人,碩士研究生。
通信聯(lián)系人:王軍(1976-),男,副教授,博士,主要從事光電信息處理研究,Email:281109685@qq.com。
(責(zé)任編輯:盧文君)