📄 nmea.h
字号:
#ifndef NMEA_H#define NMEA_H/* #define SIM_MODE **/#define MAX_NMEA_FIELD 25#define MAX_NMEA_BUFFER 300#define MAX_NMEA_SENTENCE 82/** * Sentence strings. **/#define NMEA_SENTENCE_START "$"#define NMEA_SENTENCE_COMMA ","#define NMEA_SENTENCE_CR '0D'#define NMEA_SENTENCE_LF '0A'#define NMEA_SENTENCE_ASTERISK "*"#define NMEA_SENTENCE_DGPS_STATION_ID "0000"#define NMEA_SENTENCE_DUMMY_CHECK_SUM "00"#define NMEA_SENTENCE_NORTH "N"#define NMEA_SENTENCE_SOUTH "S"#define NMEA_SENTENCE_EAST "E"#define NMEA_SENTENCE_WEST "W"#define NMEA_UNITS_METERS "M"typedef enum _NMEA_E_W_N_S{ NMEA_EAST, NMEA_WEST, NMEA_NORTH, NMEA_SOUTH} NMEA_E_W_N_S;#define NMEA_SENTENCE_GPGGA "GPGGA"#define NMEA_SENTENCE_GPGSV "GPGSV"#define NMEA_SENTENCE_GPGSA "GPGSA"#define NMEA_SENTENCE_GPVTG "GPVTG"#define NMEA_SENTENCE_GPRMC "GPRMC"#define NMEA_SENTENCE_GPZDA "GPZDA"typedef enum _NMEA_STATUS{ NMEA_SUCCESS, NMEA_FAILED} NMEA_STATUS;typedef enum _NMEA_FIX_QUALITY{ NMEA_FIX_QUALITY_INVALID, NMEA_FIX_QUALITY_SPS} NMEA_FIX_QUALITY;typedef struct _NMEA_GGA_DATA{ double TimeOfFixUTC; /* 0 */ double Lat; /* 1 */ int NorthSouth; /* 2 */ double Long; /* 3 */ int EastWest; /* 4 */ int FixQuality; /* 5 */ int NumberOfTrackingSV; /* 6 */ int HDOP; /* 7 */ double Altitude; /* 8 */ int AltitudeUnits; /* 9 */ double HeightOfGeoid; /* 10 Height of geoid above WGS84 ellipsoid */ int GeoidUnits; /* 11 */ int TimeSinceLastDGPSFix; /* 12 */ int DGPSID; /* 13 */} NMEA_GGA_DATA, *pNMEA_GGA_DATA;typedef struct _SV_VIEW_DATA{ int Valid; /* Does it contain data */ int SatellitePRN; /* Satellite PRN */ int Elevation; /* Elevation, degrees */ int Azimuth; /* Azimuth */ int SNR; } SV_VIEW_DATA, *pSV_VIEW_DATA;#define MAX_NMEA_SATELLITES_IN_VIEW 12typedef struct _NMEA_GSV_DATA{ int NumberOfSentences; /* 0 Number of sentences for full data */ int SequenceNumber; /* 1 */ int NumberOfSatellites; /* 2 */ SV_VIEW_DATA SvViewData[MAX_NMEA_SATELLITES_IN_VIEW];} NMEA_GSV_DATA, *pNMEA_GSV_DATA;#define NMEA_TRUE_HEADING "T"#define NMEA_MAG_HEADING "M"#define NMEA_KNOTS "N"#define NMEA_KILOS "K"typedef struct _NMEA_VTG_DATA{ double TrueHeading; double MagHeading; double GroundSpeedKnots; double GroundSpeedKilos;} NMEA_VTG_DATA, *pNMEA_VTG_DATA;#define NMEA_FIX_MODE_NO_FIX 1#define NMEA_FIX_MODE_2D_FIX 2#define NMEA_FIX_MODE_3D_FIX 3#define NMEA_MODE_A_STR "A"#define NMEA_MODE_M_STR "M"#define NMEA_MODE_A 1#define NMEA_MODE_M 2typedef struct _NMEA_GSA_DATA{ /* Field 0 "A" = Auto selection "M" = Force 2D/3D fix (M = manual) */ int Mode; int FixMode; /* Field 1 1 = No Fix 2 = 2D Fix 3 = 3D Fix */ int PRNs[12]; float PDOP; float HDOP; float VDOP;} NMEA_GSA_DATA, *pNMEA_GSA_DATA;#define NMEA_ACTIVE_STR "A"#define NMEA_VOID_STR "V"#define NMEA_ACTIVE 1#define NMEA_VOID 2typedef struct _NMEA_RMC_DATA{ double TimeOfFixUTC; int Status; double Lat; int NorthSouth; double Long; int EastWest; double GroundSpeedKnots; double TrueHeading; unsigned long DateOfFix; int MagVar; int MagEastWest;} NMEA_RMC_DATA, *pNMEA_RMC_DATA;typedef struct _NMEA_ZDA_DATA{ double HrMinSecUTC; int Day; int Month; int Year; int LocalTimeZoneHr; int LocalTimeZoneMin;} NMEA_ZDA_DATA, *pNMEA_ZDA_DATA;void SendNMEA (void);NMEA_STATUS NMEASendGPGGA (void);NMEA_STATUS NMEAGetGPGGAData (pNMEA_GGA_DATA pNmeaData);NMEA_STATUS NMEASendGPGSV (void);NMEA_STATUS NMEAGetGPGSVData (pNMEA_GSV_DATA pNmeaGSVData);NMEA_STATUS NMEASendGPGSA (void);NMEA_STATUS NMEAGetGPGSAData (pNMEA_GSA_DATA pNmeaGSAData);NMEA_STATUS NMEASendGPVTG (void);NMEA_STATUS NMEAGetGPVTGData (pNMEA_VTG_DATA pNmeaVTGData);NMEA_STATUS NMEASendGPRMC (void);NMEA_STATUS NMEAGetGPRMCData (pNMEA_RMC_DATA pNmeaRMCData);NMEA_STATUS NMEASendGPZDA (void);NMEA_STATUS NMEAGetGPRZDAata (pNMEA_ZDA_DATA pNmeaZDAData);void ftoa (float value, char *strFloat);void ftod (double value, char *strDouble);void ftod4 (double value, char *strDouble);void ftodPrecision1 (double value, char *strDouble);#endif /* NMEA_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -