1 引 言 全球定位系統(tǒng)(GPS)是20世紀(jì)70年代由美國(guó)陸?杖娐(lián)合研制的空間衛(wèi)星導(dǎo)航定位系統(tǒng),其目的是為美國(guó)軍方提供實(shí)時(shí)精確的定位、導(dǎo)航和授時(shí)等服務(wù)。通常GPS系統(tǒng)由3個(gè)部份組成:空間部分:包括24顆GPS衛(wèi)星;地面控制部分:對(duì)GPS衛(wèi)星實(shí)施監(jiān)控;用戶(hù)部分:接收來(lái)自GPS衛(wèi)星的定位等信息,通常包括天線(xiàn)和接收機(jī)等設(shè)備。GPS系統(tǒng)在進(jìn)行定位時(shí),必須要確定用戶(hù)所在的位置(包括x,y,z三個(gè)坐標(biāo)),同時(shí)還要考慮到衛(wèi)星時(shí)鐘與接收機(jī)時(shí)鐘之間的誤差t,要解算4個(gè)未知量必須建立4個(gè)方程,通?梢酝ㄟ^(guò)測(cè)量衛(wèi)星與-用戶(hù)之間的偽距,來(lái)建立相應(yīng)的方程,因此需要同時(shí)觀測(cè)4顆衛(wèi)星,才能實(shí)現(xiàn)精確定位。隨著時(shí)代發(fā)展,GPS系統(tǒng)不再局限于美國(guó)軍方,已被廣泛應(yīng)用于社會(huì)生活的各個(gè)方面,從大地測(cè)繪到車(chē)輛導(dǎo)航都能找到其身影。鑒于衛(wèi)星導(dǎo)航技術(shù)在民用和軍事領(lǐng)域的重要意義,我國(guó)也建立了相應(yīng)的“北斗導(dǎo)航系統(tǒng)”,但目前我國(guó)應(yīng)用最為廣泛的還是GPS系統(tǒng)。本文針對(duì)GPS系統(tǒng),介紹了定位信息在GPS接收機(jī)與PC機(jī)之間的傳輸和提取方法。 2 定位信息的格式 要實(shí)現(xiàn)定位信息的提取和顯示,首先要實(shí)現(xiàn)定位信息的傳輸,即通過(guò)相應(yīng)的接口實(shí)現(xiàn)GPS接收機(jī)與PC機(jī)之間的通信。本文介紹的接收機(jī)采用SiRF Technology公司的GPS接收芯片,通過(guò)天線(xiàn)接收GPS衛(wèi)星信號(hào),并進(jìn)行相應(yīng)處理產(chǎn)生定位信息,再通過(guò)串口(RS 232)輸出。GPS通訊協(xié)議較多,本文采用應(yīng)用最為廣泛的NMEA—0183協(xié)議。在此協(xié)議中包括了“$GPGGA”、“$GPGSA”、“$GPGSV”和“$GPRMC”等格式,本文以最簡(jiǎn)格式“$GPRMC”語(yǔ)句為例介紹協(xié)議中各數(shù)據(jù)段的含義。例如:$GPRMC,161022.A,3212.875,N,11893.578,E,O.O,11O.4,140406,2.3,W,A*302。 在此列中各數(shù)據(jù)段通過(guò)逗號(hào)分開(kāi),其中: $GPRMC為幀頭,標(biāo)識(shí)后續(xù)幀內(nèi)數(shù)據(jù)組成結(jié)構(gòu);161022為UTC標(biāo)準(zhǔn)時(shí)間,格式為“hh/mm/ss”;A表示數(shù)據(jù)有效,如為V則表示可跟蹤衛(wèi)星小于3顆;3212.875為緯度值,格式為“ddmm.mmmm”;N表示北緯,如為S則表示南緯;11893.578為經(jīng)度值,格式為“dddmm.mmmm”;E表示東經(jīng),如為W則表示西經(jīng);0.0表示速度;110.4表示方位角,從000.0°~359.9°;140406為UTC標(biāo)準(zhǔn)日期,格式為“mm/dd/yy”;2.3表示地磁變化,從000.O°~180.0°;W表示地磁變化方向,包括w或E; 在這些數(shù)據(jù)中,本文主要關(guān)心的是地理坐標(biāo)和時(shí)間,即緯度、經(jīng)度和UTC日期、時(shí)間。 3 定位信息的傳輸和提取 定位信息的傳輸,即GPS接收機(jī)與PC機(jī)之間的通信,通常采用串口來(lái)實(shí)現(xiàn)。本文中采用VB提供的MSComm控件來(lái)編寫(xiě)串口程序達(dá)到通信的目的。MSComm控件被廣泛用來(lái)實(shí)現(xiàn)串口通信,對(duì)于他的介紹這里不再贅述。在本文中實(shí)現(xiàn)具體的串口通信時(shí),必須對(duì)MSComm控件的相關(guān)屬性進(jìn)行設(shè)置。在默認(rèn)設(shè)置基礎(chǔ)上需要進(jìn)行更改的設(shè)置包括下面3個(gè)部分: (1)考慮到GPS串口通信采用固定的參數(shù),因此要將MSComm控件中的Settings屬性設(shè)置為“4800,N,8,1”,即波特率為4 800 b/s,無(wú)奇偶校驗(yàn)位,數(shù)據(jù)位為8,停止位為1。 (2)根據(jù)所采用的接收機(jī)的不同,還需對(duì)MSComm控件中的inputMode屬性進(jìn)行設(shè)置,本文中采用“comInputMode Text”方式。 (3)根據(jù)所選擇的串口將MSComm控件中的Commport屬性設(shè)置為相應(yīng)的串口號(hào),本文中為“1”。 定位信息的提取,包括2個(gè)部分: (1)從“$GPRMC”數(shù)據(jù)列中提取經(jīng)緯度等信息; (2)將這些信息在文本框內(nèi)顯示。這一工作可以在MSComm控件中的OnComm事件中通過(guò)編程具體實(shí)現(xiàn)。流程圖如圖1所示。 部分代碼如下: 首先,將緩存中的“$GPRMC”格式的定位信息賦給字符串變量“GPRMC”,根據(jù)前面介紹過(guò)的“$GPRMC”的格式,通過(guò)相應(yīng)的語(yǔ)句從變量“GPRMC”中提取出所需的緯度、經(jīng)度、速度和時(shí)間日期等信息,并賦給相應(yīng)的變量。需要注意的是,在提取時(shí)間信息時(shí)需要將UTC時(shí)間轉(zhuǎn)換為北京時(shí)間,并對(duì)24進(jìn)行模運(yùn)算,以確保時(shí)間的準(zhǔn)確。然后,將提取出來(lái)的定位信息在預(yù)先設(shè)計(jì)的文本框中顯示出來(lái)。通過(guò)這些步驟即完成定位信息的提取工作,具體的效果如圖2所示。 4 結(jié)語(yǔ) 本文介紹了一種使用VB實(shí)現(xiàn)GPS定位信息提取的方法,具有簡(jiǎn)單、實(shí)用的特點(diǎn)。通過(guò)這一方法可以實(shí)現(xiàn)GPS接收機(jī)和PC機(jī)之間的數(shù)據(jù)通信,并能將所需的定位信息直觀地在相應(yīng)窗口顯示出來(lái)。 |