📄 nmeastring.h
字号:
/**************************************************************************/
/* */
/* Copyright (c) 2000-2008 YULONG Company */
/* 宇龙计算机通信科技(深圳)有限公司 版权所有 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. */
/* 本软件文档资料是宇龙公司的资产,任何人士阅读和使用本资料必须获得 */
/* 相应的书面授权,承担保密责任和接受相应的法律约束. */
/* */
/**************************************************************************/
#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卫星的时间
//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; // 经度 单位为秒
double dLat; // 纬度
double dSpeed; // 速度 公里/小时
double dAngle; //
int iQuality;
int iStarNum; //定位卫星数
SYSTEMTIME gTime; //时间
}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数据
GPSData* GetGPSData();
GPSData* GetLastGPSData();
//得到处理过后的GPS数据
GPSData* GetFiltedData();
//添加接收到GPS串口数据
BOOL AppendBuffer(char* str,int len);
//#ifdef READ_DATA_FROM_FILE
//测试接口
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核实数据的有效性,有效返回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数据
GPSData m_gpsFiltedData[GPSDATA_ARRAY_LEN];
int m_iFilterPointer;
double m_kgain;
BOOL m_bFirst;
//#ifdef _COMPLEX_KALMAN_FILTER_
// CKalman kalman;
//#endif
//GPS数据
int m_iStarNum; //定位卫星数
SYSTEMTIME m_gTime; //时间
double m_dHigh; //高程 米
//卫星数据
int m_iStarNumCon; //有讯号卫星总数
STARData m_sStarData[GPS_MAX_SATELLITES];
int m_iStarDataLen;
GSAData m_sGSAData;
//配置项
int m_bLogGpsData;
int m_bReadFromFile;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -