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

📄 gpsdecode.h

📁 gps、电子罗盘测试,主要针对GPS1050和TCM3
💻 H
字号:
#ifndef __GPSDECODE_H__
#define __GPSDECODE_H__
//GPS1150 包含 GPGGA GPGSA GPRMC GPGSV
struct GPGGA 
{
	char   MessageId[6];      //GGA 包头
	double UTCTime;           //hhmmss.sss  hh: 小时, mm: 分钟, ss: 秒
	double Latitude;          //ddmm.mmmm dd: 度, mm.mmmm: 分
	char   N_S;               //N: 北纬, S: 南纬
	double Longitude;         //ddmm.mmmm dd: 度, mm.mmmm: 分
	char   E_W;               //E: 东经, W: 西经
	char   PosFixIndict;      //0: Fix not available or invalid, 
	                          //1: GPS SPS Mode, fix valid, 
	                          //2: Differential GPS, SPS Mode, fix valid, 
	                          //3~5: Not supported, 
	                          //6: Dead Reckoning Mode, fix valid 
	char   SatUsed;           //Number of satellites used in positioning calculation (0 to 12)
	float  HDOP;              //Horizontal Dilution of Precision
	double MSLAlt;            //绝对高度
	char   AltUnit;           //米
	double GeoSepa;           //地平面高度
	char   GeoUnit;           //米
	double AgeOfDif;          //DGPS未使用的时间
	WORD   DifRefStationID;   //
	BYTE   CheckSum;          //校验
};

struct GPGLL 
{
	char   MessageId[6];      //GLL 包头
	double Latitude;          //ddmm.mmmm dd: 度, mm.mmmm: 分
	char   N_S;               //N: 北纬, S: 南纬
	double Longitude;         //ddmm.mmmm dd: 度, mm.mmmm: 分
	char   E_W;               //E: 东经, W: 西经
	double UTCTime;           //hhmmss.sss  hh: 小时, mm: 分钟, ss: 秒
	char   Status;            //A: 数据有效, V: 数据无效
	char   ModeIndict;        //A: Autonomous, D: DGPS, E: DR
	BYTE   CheckSum;          //校验
};

struct GPGSA 
{
	char   MessageId[6];      // GSA包头
	char   Mode1;             //M: Manual—forced to operate in 2D or 3D mode
							  //A: 2D Automatic—allowed to automatically switch 2D/3D
	char   Mode2;             //1: Fix not available
							  //2: 2D (<4 SVs used)
							  //3: 3D (> 3 SVs used)
	char   SatInChnl[12];     //Sv on Channel 1~12
	float  PDOP;              //位置误差
	float  HDOP;              //水平误差
	float  VDOP;              //垂直误差
	BYTE   CheckSum;	      //校验
};

struct GPGSV 
{
	char   MessageId[6];      //GSV包头
	char   MsgNum;            //1~3   
	char   Msg;               //1~3
	char   SatInView;         //可见卫星数
	char   SatID;             //卫星通道
	char   Elevation;         //仰角 Elevation angle of satellite as seen from receiver channel 1 (00 to 90)
	char   Azimuth;           //方位角 Satellite azimuth as seen from receiver channel 1 (000 to 359)
	char   SNR;               //信噪比 
	BYTE   CheckSum;	      //校验
};

struct GPRMC 
{
	char   MessageId[6];      //RMC包头
	double UTCTime;           //hhmmss.sss  hh: 小时, mm: 分钟, ss: 秒
	char   Status;            //A: 数据有效, V: 数据无效
	double Latitude;          //ddmm.mmmm dd: 度, mm.mmmm: 分
	char   N_S;               //N: 北纬, S: 南纬
	double Longitude;         //ddmm.mmmm dd: 度, mm.mmmm: 分
	char   E_W;               //E: 东经, W: 西经
	double SpeedGND;          //本机行进速度
	double CrsGND;            //本机行进方向,真北顺时针角度
    DWORD  Date;              //日期ddmmyy dd: 日, mm: 月, yy: 年
	char   MagBias[2];        //rsv
	char   ModeIndict;        //A: Autonomous, D: DGPS, E: DR
	BYTE   CheckSum;	      //校验
};

struct GPVTG 
{ 
	char   MessageId[6];      //VTG包头
	double CrsGND_T;          //本机行进方向,真北顺时针角度
	char   Ref_T;             //真北T
	double CrsGND_M;          //本机行进方向,磁北顺时针角度
	char   Ref_M;             //磁北M
	double SpeedGND_N;        //水平速度
	char   Unit_N;            //N
	double SpeedGND_K;        //水平速度
	char   Unit_K;            //K
	char   ModeIndict;        //A: Autonomous, D: DGPS, E: DR
	BYTE   CheckSum;	      //校验
};

struct GPZDA 
{
	char   MessageId[6];      //ZDA包头
	DWORD  UTCTime_Sec;       //Either using valid IONO/UTC or estimated from default leap seconds
	char   Day;               //Day according to UTC time (01 to 31)
	char   month;             //Month according to UTC time (01 to 12)
	int    year;              //Year according to UTC time (1980 to 2079)
	char   LocalZoneHour;     //Offset from UTC (set to 00)
	char   LocalZonemin;      //Offset from UTC (set to 00)
	BYTE   CheckSum;          //校验	
};
void Decode(char *pString);
void GPGGADecode(char *pString,GPGGA & gp);
void GPGLLDecode(char *pString,GPGLL & gp);
void GPGSADecode(char *pString,GPGSA & gp);
void GPGSVDecode(char *pString,GPGSV & gp);
void GPRMCDecode(char *pString,GPRMC & gp);
void GPVTGDecode(char *pString,GPVTG & gp);
void GPZDADecode(char *pString,GPZDA & gp);

#endif __GPSDECODE_H__


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -