999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于VC++6.0的GPS數(shù)據(jù)采集模塊的軟件實現(xiàn)

2014-04-29 00:44:03房蘭剛
電子世界 2014年15期

房蘭剛

【摘要】本論文介紹了遵循NMEA0183協(xié)議的GPS定位的數(shù)據(jù)格式,提出了利用API函數(shù)進(jìn)行GPS串口通訊的方法,設(shè)計了具體的軟件設(shè)計和實現(xiàn)。運行結(jié)果表明,所設(shè)計的系統(tǒng)運行穩(wěn)定、定位準(zhǔn)確、實時性強。為進(jìn)一步進(jìn)行車輛的導(dǎo)航定位提供了保障。

【關(guān)鍵詞】VC++6.0;GPS;NMEA0183協(xié)議;串口通信

一、前言

GPS是20世紀(jì)70年代由美國陸海空三軍聯(lián)合研制的新一代空間衛(wèi)星導(dǎo)航定位系統(tǒng)。為了實現(xiàn)GPS數(shù)據(jù)采集、接收與處理以及計算機與GPS接收機的串口通信,計算機的串行端口就為計算機和GPS 接收機提供了數(shù)據(jù)傳輸通道。Visual C++是一種可視化的語言,還提供ODBC類[2]。本系統(tǒng)的數(shù)據(jù)采集主要遵循NMEA0183協(xié)議,對之進(jìn)行處理后,通過ODBC接口將用戶位置、時間、速度和航向等信息保存到用戶建立的數(shù)據(jù)庫中,為數(shù)據(jù)處理提供定位信息。

二、GPS定位的數(shù)據(jù)格式――NMEA0183數(shù)據(jù)格式

NMEA0183協(xié)議是美國國家海洋電子協(xié)會(National Marine Electronics Association)制定的GPS接口協(xié)議標(biāo)準(zhǔn)[3]。在串口通訊模塊中,系統(tǒng)采用的GPS數(shù)據(jù)格式是RMC數(shù)據(jù)格式,通過判斷信號狀態(tài)來確認(rèn)是否為有效信號。采集的數(shù)據(jù)包括經(jīng)度、緯度、時間、狀態(tài)、航向角、速度等。

本文采用的是GPRMC定位語句,采集程序忽略其余的信息,GPRMC定位語句結(jié)構(gòu)如下:

$GPRMC,HHMMSS,A,AAAA.AAAA,N,LLLLL.LLLL,E,VVV.V,DDD.D,DDMMYY,MMM.M,W,A,..SS,CRLF

以下面的語句為例進(jìn)行說明語句的含義:

$GPRMC,013946.00,A,3202.1855,N,11849.0769,E,0.05,218.30,111106, 013.5,W,A*20..

在此列中各數(shù)據(jù)段通過逗號分開,其中:

◇“$GPRMC”為幀頭,表示這條語句為RMC格式語句

◇01 UTC時間,hhmmss.sss(時分秒.毫秒)格式。UTC時間為GPS系統(tǒng)所采用的時間系統(tǒng),以原子時(ATI-Atomic Time International)的秒長作為時間單位,時間起算原點UTC零時定義在1980年1月6日子夜零點。示例中時間01時39分46.00秒。

◇02 定位狀態(tài),A=有效定位,V=無效定位 。

◇03 緯度:格式為“ddmm.Mmmm”;示例中為“北緯(N)32度02.1855分”。

◇04 經(jīng)度:格式為“dddmm.Mmmm”;示例為“東經(jīng)(E)118度49.0769分”。

◇05 相對位移速度:0.05 knots。

◇06 表示方位角,即相對位移方向:從000.0°~359.9°示例為“218.30度”。

◇07 日期:111106為UTC標(biāo)準(zhǔn)日期,格式為“mm/dd/yy”11日11月06年

◇08 013.5——磁偏移量值。表示磁極變量值為13.5,單位是度。

◇09 W表示地磁變化方向,包括w或E。

◇10 E*6E——校驗碼,用來驗證語句中數(shù)據(jù)的完整性。

在這些數(shù)據(jù)中,本研究主要關(guān)心的是地理坐標(biāo)和時間,即緯度、經(jīng)度、定位狀態(tài)和UTC日期、時間信息。

三、GPS的串口通信的軟件設(shè)計

串口通信的軟件設(shè)計主要是針對GPS數(shù)據(jù)的實時接收、存儲和坐標(biāo)轉(zhuǎn)換,使其融為一體。其中主要用到了GPS串口的開發(fā)、數(shù)據(jù)庫處理以及坐標(biāo)轉(zhuǎn)換的相關(guān)編程。

根據(jù)GPS模塊數(shù)據(jù)傳輸機制,必須給串口設(shè)置如下的參數(shù):數(shù)據(jù)傳輸率9600bit/s,數(shù)據(jù)位8bit,停止位1bit,無奇偶校驗位,可以根據(jù)需要選擇不同的COM口。針對有些計算機上沒有留有COM口,也可以使用USB轉(zhuǎn)COM口工具,直接使用計算機上的USB接口。GPS信號輸出時間間隔通常在0~2s范圍內(nèi),在實時性跟蹤時,采用每隔1s采樣一次。本程序中每1s更新一次經(jīng)度、緯度、時間、速度和航向等數(shù)據(jù)。

在本系統(tǒng)中,串口通訊技術(shù)采用API(Appli-

cation Programming Interface)函數(shù)的方法,通過設(shè)置CSerialPortEx類為串口通信支持類和CConfigDlg類為串口參數(shù)配置類,先對串行口通信參數(shù)進(jìn)行選擇;然后在串口數(shù)據(jù)到達(dá)時,CSerialPortEx類將數(shù)據(jù)發(fā)送到程序主窗口;控制模塊每隔一段時間察看一次主窗口串口數(shù)據(jù)接收緩沖區(qū),并對符合要求的數(shù)據(jù)進(jìn)行處理后保存在一個數(shù)據(jù)文件中以供后續(xù)處理使用,同時請求顯示模塊更新數(shù)據(jù)。

其具體操作步驟如下:

1.添加SerialPort.h和SerialPort.cpp兩文件到本程序中。創(chuàng)建串口參數(shù)配置類CConfigDlg。

2.將這兩類的頭文件名添加到主程序中。定義CSerialPortEx類的變量m_Port;通過設(shè)定定時器OnTimer函數(shù)來響應(yīng)ON(開始接收)和OFF(停止接收)按鈕。程序如下:

void CGPSView::OnReceiveStart()//開始接收

{

m_Port.StartMonitoring();//打開線程,開始接收串口數(shù)據(jù)

m_nTimer=SetTimer(1,1000,0);//啟動定時接收器,每隔1s接收一次

}

void CGPSView::OnReceiveStop()//停止接收

{

m_Port.StopMonitoring();//關(guān)閉線程,停止接收串口數(shù)據(jù)

KillTimer(1);//關(guān)閉定時接收器

}

3.采用查詢方式:設(shè)置一個定時器,每隔一段時間察看一次串口數(shù)據(jù)接收緩沖區(qū),在定時器OnTimer函數(shù)中確定數(shù)據(jù)的提取方法。通過查找上一個GPS語句結(jié)束標(biāo)志LF和下一個CR結(jié)束標(biāo)志之間的一句GPS語句。依次按照GPGGA輸出數(shù)據(jù)格式查找獲取數(shù)據(jù),并分別給對話框中的變量中。如下所示:

void CGPSView::OnTimer(UINT nIDEvent)

{

if(nIDEvent!=1)

return;//若不是GPS定時處理事件,則返回

while((m_strReceived.Find(0x0d)!=-1)&&(m_strReceived.Find(0x0a)!=-1))

//循環(huán)讀取GPGGA定位語句

{

int startLF=m_strReceived.Find(0x0a);

//startLF:緩沖區(qū)中第一個GPS語句結(jié)束標(biāo)志LF的位置,即下一GPS語句開始標(biāo)志

int endCR=m_strReceived.Find(0x0d);

//endCR:緩沖區(qū)中第一個GPS語句結(jié)束標(biāo)志CR的位置。

//若endCR在startLF之前,則兩個結(jié)束標(biāo)志屬于同一GPS語句,需繼續(xù)搜索下一個LF標(biāo)志

if(startLF>endCR)

endCR=m_strReceived.Find(0x0d,startLF);

//復(fù)制這一句GPS語句,并從接收緩沖區(qū)中刪除從上一句結(jié)束標(biāo)志LF到本句結(jié)束標(biāo)志CR間的數(shù)據(jù)

CString msg=m_strReceived.Mid(startLF+1,

endCR-startLF-1);

m_strReceived.Delete(0,endCR+1);

//判斷是否GPGGA定位語句,若不是則跳過后續(xù)循環(huán),繼續(xù)處理下一句,否則刪除“$GPGGA”,繼續(xù)處理該句的其它部分。

if(msg.Left(6).Compare("$GPGGA")!=0)

continue;

msg.Delete(0,msg.Find(',')+1);

…………………………………………

}

}

運行結(jié)果如圖1所示,分別獲取了經(jīng)度、緯度、速度、航向、海拔高度等數(shù)值。

四、結(jié)束語

利用面向?qū)ο蟮目梢暬Z言VC++6.0封裝的API函數(shù)實現(xiàn)了計算機和GPS的串口通信,包括GPS串口的開發(fā)、數(shù)據(jù)庫處理以及坐標(biāo)轉(zhuǎn)換。實驗通過把GPS 接收機和電腦的串口相連,快速獲取了GPS 定位導(dǎo)航信息,運行結(jié)果證明系統(tǒng)運行穩(wěn)定、定位精度高、定位誤差小,實時性強,為進(jìn)一步研究GPS的定位導(dǎo)航提供了理論依據(jù)。

參考文獻(xiàn)

[1]羅鳴,曹沖,肖雄兵等.全球定位系統(tǒng)[M].北京:電子工業(yè)出版社,2008.

[2]Davis Chapman馱長樂譯.學(xué)用Visual C++6.0[M].北京清華大學(xué)出版社,2004.

[3]唐旭榮,唐斌,蔣德.衛(wèi)星導(dǎo)航軟件接收機原理與設(shè)計[M].北京:國防工業(yè)出版社,2008.

指導(dǎo)老師、通訊作者:吳延霞。

主站蜘蛛池模板: 欧美v在线| 国产在线一区二区视频| 国产精品七七在线播放| 亚洲an第二区国产精品| 国产麻豆91网在线看| 国产精品嫩草影院av| 97在线观看视频免费| 国产精品短篇二区| 玖玖精品视频在线观看| 久久亚洲国产视频| 日本人又色又爽的视频| 综合色区亚洲熟妇在线| 国产超碰一区二区三区| 亚洲,国产,日韩,综合一区| 国产人成乱码视频免费观看| 小说区 亚洲 自拍 另类| 试看120秒男女啪啪免费| 久久 午夜福利 张柏芝| 国产乱肥老妇精品视频| 精品无码视频在线观看| 精品夜恋影院亚洲欧洲| 日韩不卡高清视频| 欧美三级视频在线播放| 亚洲高清资源| 伊伊人成亚洲综合人网7777| 美女视频黄频a免费高清不卡| 九色视频线上播放| 成人午夜亚洲影视在线观看| 亚洲最大福利视频网| 国产精品毛片一区视频播| 欧美色99| 亚洲AV无码久久精品色欲| 国产99视频免费精品是看6| 九九久久精品免费观看| 91极品美女高潮叫床在线观看| 97视频免费在线观看| 国模在线视频一区二区三区| 午夜一级做a爰片久久毛片| 99精品在线看| 夜夜操国产| 国产伦片中文免费观看| 久久精品丝袜| 国产成人精品三级| 97久久人人超碰国产精品| 91午夜福利在线观看精品| 91亚洲免费| 欧洲精品视频在线观看| 内射人妻无套中出无码| 国产一区免费在线观看| 久久综合色播五月男人的天堂| 国产美女在线观看| 在线国产三级| 中文字幕日韩欧美| 无码免费视频| 99久久精品美女高潮喷水| 手机看片1024久久精品你懂的| 国产日韩欧美在线视频免费观看| 免费在线观看av| 日本免费新一区视频| 国产第一色| 91免费国产在线观看尤物| 91精品国产情侣高潮露脸| 超薄丝袜足j国产在线视频| 福利国产在线| 亚洲精品第1页| 亚洲国产精品一区二区第一页免| 亚洲第一在线播放| 毛片免费观看视频| 高清不卡毛片| 国产在线91在线电影| 亚洲天堂区| 三级欧美在线| 欧美成人区| 久久久噜噜噜久久中文字幕色伊伊| 天天爽免费视频| 国产菊爆视频在线观看| 麻豆精品在线| 欧美成人h精品网站| 福利小视频在线播放| 免费人欧美成又黄又爽的视频| 日本高清免费不卡视频| 国产精品55夜色66夜色|