GPS定位信息提取及應(yīng)用
3 GPS定位信息提取與解析
3.1 GPS讀取MID串口數(shù)據(jù)流程圖
首先創(chuàng)建串口的讀線(xiàn)程,然后進(jìn)行串口的監(jiān)聽(tīng),等待指定瀆事件的發(fā)生。如果有可讀數(shù)據(jù)則讀串口,對(duì)接收到的事件進(jìn)行數(shù)據(jù)處理。數(shù)據(jù)讀取流程圖如圖2所示。本文引用地址:http://www.2s4d.com/article/154038.htm
3.2 串行端口數(shù)據(jù)通信
1)打開(kāi)串行端口
通過(guò)調(diào)用CreateFile函數(shù)打開(kāi)串行端口
m_hComm=CreateFile (Port,GENERIC_READ1GENERIC_WRITE,0,0,OPEN_EXISTING,0,0)。這個(gè)函數(shù)的返回值是已打開(kāi)串行端口的句柄值。
2)串行端口通信配置
串口打開(kāi)后.需對(duì)串口進(jìn)行配置。用GetCommState函數(shù)獲得當(dāng)前打開(kāi)的串口參數(shù),然后根據(jù)需要修改DCB的成員變量,用SetCommState函數(shù)來(lái)設(shè)置新的串口參數(shù)。
3)設(shè)置狀態(tài)參數(shù)
SetCommMask(m_hComm,EV_RXCHAR);
4)設(shè)置超時(shí)參數(shù)
為防止程序陷入循環(huán)狀態(tài),需要設(shè)置超時(shí)值。
5)讀寫(xiě)串口通信
fReadState=ReadFiie(m_hComm,data,length,dwLength,NULL)://從串口讀取數(shù)據(jù)
fWriteState=WriteFile(m_hComm,buf,dwCharToWrite*sizeof(char),dwBytesWritten,NULL);//向串口寫(xiě)入數(shù)據(jù)
6)通信結(jié)束關(guān)閉串口
函數(shù)CloseHandle(m_hComm)用來(lái)關(guān)閉串口。當(dāng)串口獲取GPS接收機(jī)數(shù)據(jù)信號(hào)后,需要根據(jù)NMEA-0183通信協(xié)議解析GPS數(shù)據(jù),獲取移動(dòng)目標(biāo)當(dāng)前的格林尼治時(shí)間和位置,而我國(guó)的標(biāo)準(zhǔn)時(shí)間需在格林尼治時(shí)間上加上8小時(shí)。
GPS使用的坐標(biāo)系為WGS_84坐標(biāo)系,而我國(guó)通常使用的是國(guó)家坐標(biāo)系,如北京54國(guó)家坐標(biāo)系,因此需要進(jìn)行坐標(biāo)轉(zhuǎn)換。GPS在與MID通信過(guò)程中可通過(guò)串口每秒發(fā)送10條數(shù)據(jù)。實(shí)際應(yīng)用中可根據(jù)需要解析所需定位數(shù)據(jù)。
評(píng)論