?? gps.h
字號:
/*-----------------------------------------
* Copyright (c) 2008 Eric Wong
* 本版緊供讀者參考,不得用于任何商業行為
*
* 文件名稱: GPS.h
* 文件標識:
* 摘要:用于封裝GPS通訊協議
*
* 當前版本: 1.0
* 作者: 汪兵 Eric Wong
* 完成日期: 2008年1月29日
*
* 取代版本:
* 原作者:
* 完成日期:
----------------------------------------*/
#pragma once
#include "CESeries.h"
//定義GPS數據接收顯示
#define WM_GPS_RECV_BUF WM_USER + 101
//定義GPS狀態改變消息
#define WM_GPS_STATE_CHANGE_MESSAGE WM_USER + 102
//定義收到正確的GPS位置信息
#define WM_GPS_RECV_VALID_LONGLAT WM_USER + 103
//定義GPS設備狀態常量
enum GPSDEV_STATE
{
GPS_VALID_DATA = 0, //獲取有效數據
GPS_INVALID_DATA,//獲取無效數據
GPS_DEV_NOTOPENED, //GPS串口未打開
GPS_DEV_OPENED, //GPS串口已打開
GPS_NODATA//GPS未收到數據
};
//GPS數據結構
typedef struct _GPSData
{
char date[11] ; //Gps數據日期
char time[9] ; //Gps數據時間
char latitude_type[2]; //緯度類型,北緯,南緯
char latitude[10] ; //緯度值
char longitude_type[2]; //經度類型,東經,西經
char longitude[11] ;//經度值
char speed[6];//速度
char starNum; //衛星數目
}GPSData,*PGPSData;
class CGPS
{
public:
CGPS(void);
~CGPS(void);
public:
//打開GPS設備
BOOL Open( CWnd *pWnd , /*擁有者窗口句柄*/
UINT portNo = 1, /*串口號*/
UINT baud = 9600, /*波特率*/
UINT parity = NOPARITY, /*奇偶校驗*/
UINT databits = 8, /*數據位*/
UINT stopbits = 0 );
//關閉GPS設備
void Close();
//獲取GPS設備狀態
GPSDEV_STATE GetGpsState();
//得到當前GPS數據
GPSData GetCurGpsData();
private:
//在緩沖區中查找子字符串
int Pos(LPCSTR subString , CByteArray * pArray,int iPos);
//判斷是否存在有效GPS數據
BOOL HaveValidGPSData(CByteArray * pArray,/*分析的緩沖區隊列*/
CString &outStr);
//解析GPS數據
PGPSData AnalyseGpsData(CString &aRecvStr);
private:
//串口接收數據回調函數
static void CALLBACK GpsOnSeriesRead(void* pOwner,BYTE* buf,DWORD dwBufLen);
private:
//GPS數據檢測線程函數
static DWORD WINAPI GpsCheckThreadFunc(LPVOID lparam);
private:
GPSDEV_STATE m_gpsDev_State; //GPS當前設備狀態
GPSData m_gpsCurData; // GPS當前數據
GPSData m_gpsLastData; //GPS上一次數據
CCESeries m_ceSeries; //GPS串口通訊類
CByteArray m_aRecvBuf ; //接收緩沖區
CWnd *m_pWnd; //存儲主窗體句柄
HANDLE m_hThreadQuitEvent; //線程退出事件
HANDLE m_hGpsThread; //GPS檢測線程句柄
DWORD m_dwGpsThreadID; //GPS檢測線程標識
};
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -