?? nmeastring.h
字號(hào):
/**************************************************************************/
/* */
/* Copyright (c) 2000-2008 YULONG Company */
/* 宇龍計(jì)算機(jī)通信科技(深圳)有限公司 版權(quán)所有 2000-2008 */
/* */
/* PROPRIETARY RIGHTS of YULONG Company are involved in the */
/* subject matter of this material. All manufacturing, reproduction, use,*/
/* and sales rights pertaining to this subject matter are governed by the */
/* license agreement. The recipient of this software implicitly accepts */
/* the terms of the license. */
/* 本軟件文檔資料是宇龍公司的資產(chǎn),任何人士閱讀和使用本資料必須獲得 */
/* 相應(yīng)的書(shū)面授權(quán),承擔(dān)保密責(zé)任和接受相應(yīng)的法律約束. */
/* */
/**************************************************************************/
#ifndef _NMEASTRING_H_
#define _NMEASTRING_H_
//#include "GpsDevice.h"
#include "Gpsapi.h"
////////////////////////////////////////////////////////////
//#define READ_DATA_FROM_FILE
//#define WRITE_GPS_DATA_TO_FILE
//#define _COMPLEX_KALMAN_FILTER_
///////////////////////////////////////////////////////////////////
//#define _DISABLE_8360_GPS_
#define _VER_8360_
#define DATA_FILE_PATH "\\SD\\gps.txt"
//#ifdef WRITE_GPS_DATA_TO_FILE
#define WRITE_FILE_PATH "\\SD\\gps.txt"
//#endif
/*
#ifdef _COMPLEX_KALMAN_FILTER_
#include "kalman.h"
#endif
*/
#define GPSDATA_ARRAY_LEN 3
#define DEFAULT_NEMASTRING_LEN 1024
#define MAX_STAR_NUM 12
//記錄GPS衛(wèi)星的時(shí)間
//typedef struct
//{
// unsigned int iYear:12;
// unsigned int iMonth:4;
// unsigned int iDay:9;
// unsigned int iHour:5;
// unsigned int iMinute:7;
// unsigned int iSeconds:7;
//}GPSTime;
typedef struct
{
double dLong; // 經(jīng)度 單位為秒
double dLat; // 緯度
double dSpeed; // 速度 公里/小時(shí)
double dAngle; //
int iQuality;
int iStarNum; //定位衛(wèi)星數(shù)
SYSTEMTIME gTime; //時(shí)間
}GPSData;
typedef struct
{
unsigned int iMode;
unsigned int iType;
double dPdop;
double dHdop;
double dVdop;
}GSAData;
typedef struct
{
unsigned int id :5;
unsigned int angleV:7;
unsigned int angleH:9;
unsigned int sar :7;
}STARData;
class NmeaString
{
public:
NmeaString();
~NmeaString();
//得到原始的GPS數(shù)據(jù)
GPSData* GetGPSData();
GPSData* GetLastGPSData();
//得到處理過(guò)后的GPS數(shù)據(jù)
GPSData* GetFiltedData();
//添加接收到GPS串口數(shù)據(jù)
BOOL AppendBuffer(char* str,int len);
//#ifdef READ_DATA_FROM_FILE
//測(cè)試接口
void SetTestMessage(HWND hWnd,DWORD message);
HWND m_hWnd;
DWORD m_message;
//#endif
//2007.11.20
void FreeBuf();
private:
//nmea frame parser
int ParserRMC(int istart);
int ParserGGA(int istart);
int ParserGSV(int istart);
int ParserGSA(int istart);
BOOL Checksum(int istart,int len);//checksum核實(shí)數(shù)據(jù)的有效性,有效返回TRUE,否則返回FALSE
//字符處理及工具
double GetDecimalDegrees(double dCoordinate);
double Distance(double nX1, double nY1, double nX2, double nY2);
double Str2Double(char* str);
char* StringTok(char* str, char seps);
int StringFind(char* str,char chr);
//improved kalman
void InitKalman();
void FiltData();
double ComputeKGain();
//private:
public:
char* m_pBuffer;
int m_size;
int m_lengh;
int m_pos;
GPSData m_gpsData[GPSDATA_ARRAY_LEN];
int m_vLen;
int m_pointer;
//kalman數(shù)據(jù)
GPSData m_gpsFiltedData[GPSDATA_ARRAY_LEN];
int m_iFilterPointer;
double m_kgain;
BOOL m_bFirst;
//#ifdef _COMPLEX_KALMAN_FILTER_
// CKalman kalman;
//#endif
//GPS數(shù)據(jù)
int m_iStarNum; //定位衛(wèi)星數(shù)
SYSTEMTIME m_gTime; //時(shí)間
double m_dHigh; //高程 米
//衛(wèi)星數(shù)據(jù)
int m_iStarNumCon; //有訊號(hào)衛(wèi)星總數(shù)
STARData m_sStarData[GPS_MAX_SATELLITES];
int m_iStarDataLen;
GSAData m_sGSAData;
//配置項(xiàng)
int m_bLogGpsData;
int m_bReadFromFile;
};
#endif
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -