亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gps.txt

?? GPS
?? TXT
字號:
VC++實現GPS全球定位系統定位數據的提取 
引言 

  衛星導航技術的飛速發展已逐漸取代了無線電導航、天文導航等傳統導航技術,而成為一種普遍采用的導航定位技術,并在精度、實時性、全天候等方面取得了長足進步。現不僅應用于物理勘探、電離層測量和航天器導航等諸多民用領域,在軍事領域更是取得了廣泛的應用--在彈道導彈、野戰指揮系統、精確彈道測量以及軍用地圖快速測繪等領域均大量采用了衛星導航定位技術。有鑒于衛星導航技術在民用和軍事領域的重要意義,使其得到了許多國家的關注。我國也于2000年10月31日和12月21日成功發射了第一顆和第二顆導航定位試驗衛星并建立了我國第一代衛星導航定位系統--"北斗導航系統",但由于起步晚也沒有得到廣泛應用。目前在我國應用最多的還是美國的GPS系統。本文就針對當前比較普及的GPS系統,對其衛星定位信息的接收及其定位參數提取的實現方法予以介紹。 

  定位信息的接收 

  通常GPS定位信息接收系統主要由GPS接收天線、變頻器、信號通道、微處理器、存儲器以及電源等部分組成。由于GPS定位信息內容較少,因此多用RS-232串口將定位信息(NEMA0183語句)從GPS接收機傳送到計算機中進行信息提取處理。從串口讀取數據有多種方法,在此直接使用 Win32 API函數對其進行編程處理。在Windows下不允許直接對硬件端口進行控制操作,所有的端口均被視為"文件",因此在對串口進行偵聽之前需要通過打開文件來打開串口,并對其進行相關參數配置: 

m_hCom=CreateFile("COM1",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING, FILE_FLAG_OVERLAPPED,NULL); file://以異步方式打開COM1口 
SetCommMask (m_hCom, EV_RXCHAR ) ; file://添加或修改Windows所報告的事件列表 
SetupComm (m_hCom,READBUFLEN/*讀緩沖*/,WRITEBUFLEN/*寫緩沖*/); // 初始化通訊設備參數 
// 清除緩沖信息 
PurgeComm (m_hCom, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR) ; 
// 對異步I/O進行設置 
CommTimeOuts.ReadIntervalTimeout = MAXDWORD ; file://接收兩連續字節的最大時間間隔 
CommTimeOuts.ReadTotalTimeoutMultiplier =0; file://接收每字節的平均允許時間 
CommTimeOuts.ReadTotalTimeoutConstant = 0 ; file://接收時間常數 
SetCommTimeouts (m_hCom , &CommTimeOuts) ; 
file://獲取并設置串口 
GetCommState ( m_hCom, &dcb) ; 
dcb.BaudRate = CBR_4800; 
dcb.ByteSize = 8; 
dcb.Parity = ODDPARITY; 
dcb.StopBits = ONESTOPBIT ; 
SetCommState( m_hCom, &dcb);   

  在成功打開并設置通訊口后,可采取輪詢串口和事件觸發兩種方式對數據進行接收處理,本文在此采取效率比較高的事件觸發方式進行接收處理,通過等待EV_RXCHAR事件的發生來啟動ReadFile函數完成對GPS定位信息的接收: 

while(true){ 
 WaitCommEvent (m_hCom,&dwEvtMask,NULL); 
 if (dwEvtMask&EV_RXCHAR == EV_RXCHAR) 
  if(ComStat.cbInQue>0) 
   ReadFile(m_hCom,m_readbuf,ComStat.cbInQue,&nLength,&olRead); 
} 
 提取定位數據 

  GPS接收機只要處于工作狀態就會源源不斷地把接收并計算出的GPS導航定位信息通過串口傳送到計算機中。前面的代碼只負責從串口接收數據并將其放置于緩存,在沒有進一步處理之前緩存中是一長串字節流,這些信息在沒有經過分類提取之前是無法加以利用的。因此,必須通過程序將各個字段的信息從緩存字節流中提取出來,將其轉化成有實際意義的,可供高層決策使用的定位信息數據。同其他通訊協議類似,對GPS進行信息提取必須首先明確其幀結構,然后才能根據其結構完成對各定位信息的提取。對于本文所使用的GARMIN GPS天線板,其發送到計算機的數據主要由幀頭、幀尾和幀內數據組成,根據數據幀的不同,幀頭也不相同,主要有"$GPGGA"、"$GPGSA"、"$GPGSV"以及"$GPRMC"等。這些幀頭標識了后續幀內數據的組成結構,各幀均以回車符和換行符作為幀尾標識一幀的結束。對于通常的情況,我們所關心的定位數據如經緯度、速度、時間等均可以從"$GPRMC"幀中獲取得到,該幀的結構及各字段釋義如下: 

  $GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>*hh 

  <1> 當前位置的格林尼治時間,格式為hhmmss 

  <2> 狀態, A 為有效位置, V為非有效接收警告,即當前天線視野上方的衛星個數少于3顆。 

  <3> 緯度, 格式為ddmm.mmmm 

  <4> 標明南北半球, N 為北半球、S為南半球 

  <5> 徑度,格式為dddmm.mmmm 

  <6> 標明東西半球,E為東半球、W為西半球 

  <7> 地面上的速度,范圍為0.0到999.9 

  <8> 方位角,范圍為000.0到 359.9 度 

  <9> 日期, 格式為ddmmyy 

  <10> 地磁變化,從000.0到 180.0 度 

  <11> 地磁變化方向,為E 或 W 

  至于其他幾種幀格式,除了特殊用途外,平時并不常用,雖然接收機也在源源不斷地向主機發送各種數據幀,但在處理時一般先通過對幀頭的判斷而只對"$GPRMC"幀進行數據的提取處理。如果情況特殊,需要從其他幀獲取數據,處理方法與之也是完全類似的。由于幀內各數據段由逗號分割,因此在處理緩存數據時一般是通過搜尋ASCII碼"$"來判斷是否是幀頭,在對幀頭的類別進行識別后再通過對所經歷逗號個數的計數來判斷出當前正在處理的是哪一種定位導航參數,并作出相應的處理。下面就是對緩存Data中的數據進行解幀處理的主要代碼,本文在此只關心時間(日期和時間)和地理坐標(經、緯度): 

for(int i=0;i  if(Data=='$') file://幀頭,SectionID為逗號計數器 
  SectionID=0; 
  if(Data==10){ file://幀尾 
} 
 if(Data==',') file://逗號計數 
  SectionID++; 
 else { 
  switch(SectionID){ 
   case 1: file://提取出時間 
    m_sTime+=Data; 
    break; 
   case 2: file://判斷數據是否可信(當GPS天線能接收到有3顆GPS衛星時為A,可信) 
    if(Data=='A') 
     GPSParam[m_nNumber].m_bValid=true; 
     break; 
   case 3: file://提取出緯度 
     m_sPositionY+=Data; 
     break; 
   case 5: file://提取出經度 
     m_sPositionX+=Data; 
     break; 
   case 9: file://提取出日期 
     m_sDate+=Data; 
     break; 
     default: 
     break; 
  } 
 } 
} 

  現在已將所需信息提取到內存,即時間、日期以及經緯度分別保存在CString型變量 m_sTime、m_Data、m_sPositionY和m_sPositionX中。在實際應用中往往要根據需要對其做進一步的運算處理,比如從GPS接收機中獲得的時間信息為格林尼治時間,因此需要在獲取時間上加8小時才為我國標準時間。而且GPS使用的WGS-84坐標系也與我國采用的坐標系不同,有時也要對此加以變換。而這些變換運算必須通過數值運算完成,因此需要將前面獲取的字符型變量轉化為數值型變量,這部分工作可放在檢測到幀尾完成: 

::strcpy(buf,m_sTime); 
str.Format("%c%c",buf[0],buf[1]); 
GPSParam[m_nNumber].m_nHour=(atoi(str)+8)%24; file://提取出小時并轉化為24小時制北京時間 
file://buf第2、3字節為分鐘,4、5字節為秒,提取方法同上 
…… 
::strcpy(buf,m_sDate); 
str.Format("%c%c",buf[0],buf[1]); file://提取出月份 
file://buf第2、3字節為天,4、5字節為年,提取方法同上 
…… 
::strcpy(buf,m_sPositionY); 
str.Format("%c%c",buf[0],buf[1]); 
PositionValue=atoi(str); 
str.Format("%c%c%c%c%c%c%c",buf[2],buf[3],buf[4],buf[5],buf[6],buf[7],buf[8]); 
GPSParam[m_nNumber].m_dPositionY=PositionValue*60+atof(str); file://提取出緯度 
…… 
::strcpy(buf,m_sPositionX); 
if(m_sPositionX.GetLength()==10) file://經度超過90度(如東經125度) 
{ 
 str.Format("%c%c%c",buf[0],buf[1],buf[2]); 
 PositionValue=atoi(str); 
 str.Format("%c%c%c%c%c%c%c",buf[3],buf[4],buf[5],buf[6],buf[7],buf[8],buf[9]); 
 GPSParam[m_nNumber].m_dPositionX=PositionValue*60+atof(str); file://提取出經度(單位為分) 
} 
if(m_sPositionX.GetLength()==9) file://經度未超過90度(如東經89度) 
{ 
 file://處理方法同上,只是buf的第0、1字節為度數,2~9為分數。 
} 


  到此為止,已將時間和經緯度信息提取到GPS結構數組GPSParam中的各個變量中去,后續的處理和高層決策可根據該結構中存儲的數據作出相應的處理。 

  小結 

  本文結合主要的相關程序代碼對GPS全球定位系統的定位導航信息的接收和參數數據的提取進行了討論,同時也對串口的程序設計作了簡要的講述。通過本文的設計方法可以將GPS定位導航信息從GPS接收機完整接收,通過對定位參數的提取可將其應用于其他高層應用決策如各種GIS、RS系統等。本文程序在Windows 98下,由Microsoft Visual C++ 6.0編譯通過。 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
18成人在线观看| 国产精品欧美一区喷水| 97aⅴ精品视频一二三区| 国内精品久久久久影院薰衣草| 亚洲高清久久久| 亚洲成人av一区二区| 亚洲成人激情社区| 日韩电影在线看| 日本成人在线一区| 精彩视频一区二区三区| 精品一区二区在线看| 九色综合狠狠综合久久| 国产aⅴ综合色| 91亚洲午夜精品久久久久久| 97久久精品人人做人人爽50路| 99视频一区二区| 91久久精品一区二区三| 欧美另类一区二区三区| 日韩亚洲欧美一区二区三区| 精品少妇一区二区三区 | 成人一区二区视频| 不卡一区二区三区四区| 日本道在线观看一区二区| 欧美福利视频导航| 久久影院午夜论| 亚洲三级久久久| 日韩不卡一区二区三区| 久久成人av少妇免费| 成人午夜免费av| 在线观看国产精品网站| 日韩女优制服丝袜电影| 日本一区二区视频在线观看| 亚洲最大成人网4388xx| 国内精品国产三级国产a久久| 91在线播放网址| 日韩精品最新网址| 亚洲素人一区二区| 另类小说色综合网站| 色综合中文字幕国产 | 亚洲欧美日韩久久精品| 日韩中文字幕区一区有砖一区 | 亚瑟在线精品视频| 国产福利精品导航| 欧美浪妇xxxx高跟鞋交| 中文字幕av不卡| 日本欧洲一区二区| 色婷婷久久99综合精品jk白丝| 精品国产一区二区三区四区四| 自拍视频在线观看一区二区| 极品少妇一区二区三区精品视频| 色一情一乱一乱一91av| 国产亚洲成av人在线观看导航| 亚洲不卡av一区二区三区| 成人激情文学综合网| 日韩一区二区精品| 一区二区在线观看免费视频播放| 国产一区二区三区在线看麻豆| 欧美日韩一区 二区 三区 久久精品| 国产精品久久夜| 国产一区欧美日韩| 精品久久国产字幕高潮| 日韩高清不卡在线| 在线观看免费视频综合| 亚洲丝袜自拍清纯另类| 成人精品国产一区二区4080| 日韩女优av电影| 麻豆国产精品777777在线| 777久久久精品| 亚洲18色成人| 欧美美女视频在线观看| 亚洲乱码国产乱码精品精98午夜 | 蜜臀av一区二区| 717成人午夜免费福利电影| 亚洲国产一区二区三区 | 亚洲成人精品在线观看| 99re6这里只有精品视频在线观看| 国产精品日日摸夜夜摸av| 国产成人精品免费网站| 国产亚洲自拍一区| 国产精品一卡二卡| 国产精品区一区二区三区| 国产91在线|亚洲| 中文字幕一区二区在线播放| 成人亚洲精品久久久久软件| 国产精品美女久久久久久久久| 成人av在线影院| 日韩美女久久久| 欧美亚洲丝袜传媒另类| 亚洲国产aⅴ成人精品无吗| 欧美日韩二区三区| 日韩电影在线看| 26uuu精品一区二区| 成人精品视频.| 亚洲综合视频在线| 欧美一区二区三区不卡| 国产一区二区看久久| 国产精品美女www爽爽爽| 色婷婷综合久久久| 日韩精品成人一区二区三区 | 国产91丝袜在线播放九色| 国产精品日韩精品欧美在线| 91精彩视频在线观看| 美女视频免费一区| 国产视频一区二区三区在线观看| aaa国产一区| 日韩国产欧美在线播放| 久久九九久精品国产免费直播| 99久久精品免费精品国产| 亚洲成人免费影院| 国产欧美一区二区三区沐欲| 一本久久精品一区二区| 日本视频一区二区三区| 中文字幕精品在线不卡| 欧美精品一级二级三级| 国产宾馆实践打屁股91| 亚洲国产欧美一区二区三区丁香婷| 日韩亚洲欧美综合| 91久久精品一区二区三区| 精品一区二区三区视频| 一区二区三区精品视频| 精品国产乱码久久久久久久久| 91免费版pro下载短视频| 久久99国产精品久久99果冻传媒| 中文字幕高清一区| 日韩精品一区国产麻豆| 色综合久久久久久久久久久| 久久精品999| 亚洲一区二区三区中文字幕在线| 国产午夜精品久久| 日韩一区二区麻豆国产| 欧美亚男人的天堂| 粗大黑人巨茎大战欧美成人| 日本aⅴ精品一区二区三区| 一区二区三区中文在线观看| 久久噜噜亚洲综合| 日韩欧美专区在线| 欧美在线一区二区| 一本一道综合狠狠老| 国产电影一区在线| 精一区二区三区| 麻豆精品一区二区综合av| 亚洲视频一区二区在线观看| 国产午夜精品久久久久久免费视| 91精品午夜视频| 欧美老肥妇做.爰bbww视频| 在线欧美小视频| 91美女片黄在线| 懂色一区二区三区免费观看| 国产精品正在播放| 国内精品国产三级国产a久久| 美女mm1313爽爽久久久蜜臀| 五月激情综合网| 亚洲国产婷婷综合在线精品| 亚洲精品国产视频| 亚洲精品美国一| 亚洲精品国产a久久久久久| 国产精品亲子伦对白| 国产精品福利一区二区| 成人欧美一区二区三区1314| 成人欧美一区二区三区小说 | 日韩三级免费观看| 精品少妇一区二区三区免费观看 | 久久久亚洲精品石原莉奈| xnxx国产精品| 久久精品一区二区三区不卡| 国产日韩欧美高清| 亚洲色欲色欲www| 亚洲摸摸操操av| 亚洲午夜视频在线观看| 天堂va蜜桃一区二区三区 | 国产精品18久久久久| 懂色av一区二区三区免费观看| 成人福利视频网站| 色综合久久综合| 欧美高清视频不卡网| 精品免费日韩av| 国产精品久久777777| 亚洲成人在线观看视频| 蜜臀av一区二区| 成人aaaa免费全部观看| 欧美性受xxxx黑人xyx性爽| 91精品国产综合久久香蕉麻豆| 欧美成人艳星乳罩| 国产精品久久免费看| 性感美女极品91精品| 久久99国产精品免费网站| 成人精品免费网站| 4438x亚洲最大成人网| 国产日本欧洲亚洲| 午夜电影一区二区三区| 成人手机在线视频| 欧美日韩另类一区| 国产日韩精品一区二区浪潮av| 亚洲美女免费视频| 美女网站色91| 在线欧美一区二区| 欧美激情一区二区| 美女视频免费一区| 欧美综合亚洲图片综合区| 久久丝袜美腿综合|