📄 gpsdecode.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 + -