⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nmeastring.h

📁 Gpsapi 2.0(标准mobile接口)
💻 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 + -