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