/// <summary> /// Called when the message is being loaded. /// </summary> /// <param name="message">The NMEA message values.</param> protected override void OnLoadMessage(string[] message) { if (message == null || message.Length < 14) { throw new ArgumentException("Invalid GPGGA", "message"); } int fixQuality; int numberOfSatellites; Latitude = NmeaMessage.StringToLatitude(message[1], message[2]); Longitude = NmeaMessage.StringToLongitude(message[3], message[4]); Quality = int.TryParse(message[5], NumberStyles.Integer, CultureInfo.InvariantCulture, out fixQuality) ? (FixQuality)fixQuality : FixQuality.Invalid; NumberOfSatellites = int.TryParse(message[6], NumberStyles.Integer, CultureInfo.InvariantCulture, out numberOfSatellites) ? numberOfSatellites : 0; Hdop = NmeaMessage.StringToDouble(message[7]); Altitude = NmeaMessage.StringToDouble(message[8]); AltitudeUnits = message[9]; HeightOfGeoid = NmeaMessage.StringToDouble(message[10]); HeightOfGeoidUnits = message[11]; TimeSinceLastDgpsUpdate = StringToTimeSpan(message[0]); if (message[13].Length > 0) { DgpsStationId = int.Parse(message[13], CultureInfo.InvariantCulture); } else { DgpsStationId = -1; } }
/// <summary> /// Called when the message is being loaded. /// </summary> /// <param name="message">The NMEA message values.</param> protected override void OnLoadMessage(string[] message) { if (message == null || message.Length < 14) { throw new ArgumentException("Invalid GPGGA", "message"); } FixTime = StringToTimeSpan(message[0]); Latitude = NmeaMessage.StringToLatitude(message[1], message[2]); Longitude = NmeaMessage.StringToLongitude(message[3], message[4]); Quality = (FixQuality)int.Parse(message[5], CultureInfo.InvariantCulture); NumberOfSatellites = int.Parse(message[6], CultureInfo.InvariantCulture); Hdop = NmeaMessage.StringToDouble(message[7]); Altitude = NmeaMessage.StringToDouble(message[8]); AltitudeUnits = message[9]; HeightOfGeoid = NmeaMessage.StringToDouble(message[10]); HeightOfGeoidUnits = message[11]; var timeInSeconds = StringToDouble(message[12]); if (!double.IsNaN(timeInSeconds)) { TimeSinceLastDgpsUpdate = TimeSpan.FromSeconds(timeInSeconds); } else { TimeSinceLastDgpsUpdate = TimeSpan.MaxValue; } if (message[13].Length > 0) { DgpsStationId = int.Parse(message[13], CultureInfo.InvariantCulture); } else { DgpsStationId = -1; } }
/// <summary> /// Called when the message is being loaded. /// </summary> /// <param name="message">The NMEA message values.</param> protected override void OnLoadMessage(string[] message) { if (message == null || message.Length < 11) { throw new ArgumentException("Invalid GPRMC", "message"); } if (message[8].Length == 6 && message[0].Length >= 6) { FixTime = new DateTime(int.Parse(message[8].Substring(4, 2), CultureInfo.InvariantCulture) + 2000, int.Parse(message[8].Substring(2, 2), CultureInfo.InvariantCulture), int.Parse(message[8].Substring(0, 2), CultureInfo.InvariantCulture), int.Parse(message[0].Substring(0, 2), CultureInfo.InvariantCulture), int.Parse(message[0].Substring(2, 2), CultureInfo.InvariantCulture), 0, DateTimeKind.Utc).AddSeconds(double.Parse(message[0].Substring(4), CultureInfo.InvariantCulture)); } Active = (message[1] == "A"); Latitude = NmeaMessage.StringToLatitude(message[2], message[3]); Longitude = NmeaMessage.StringToLongitude(message[4], message[5]); Speed = NmeaMessage.StringToDouble(message[6]); Course = NmeaMessage.StringToDouble(message[7]); MagneticVariation = NmeaMessage.StringToDouble(message[9]); if (!double.IsNaN(MagneticVariation) && message[10] == "W") { MagneticVariation *= -1; } }
/// <summary> /// Called when the message is being loaded. /// </summary> /// <param name="message">The NMEA message values.</param> protected override void OnLoadMessage(string[] message) { if (message == null || message.Length < 7) { throw new ArgumentException("Invalid Gpvtg", "message"); } TrueCourseOverGround = NmeaMessage.StringToDouble(message[0]); MagneticCourseOverGround = NmeaMessage.StringToDouble(message[2]); SpeedInKnots = NmeaMessage.StringToDouble(message[4]); SpeedInKph = NmeaMessage.StringToDouble(message[6]); }
/// <summary> /// Called when the message is being loaded. /// </summary> /// <param name="message">The NMEA message values.</param> protected override void OnLoadMessage(string[] message) { if (message == null || message.Length < 6) { throw new ArgumentException("Invalid PGRME", "message"); } HorizontalError = NmeaMessage.StringToDouble(message[0]); HorizontalErrorUnits = message[1]; VerticalError = NmeaMessage.StringToDouble(message[2]); VerticalErrorUnits = message[3]; SphericalError = NmeaMessage.StringToDouble(message[4]); SphericalErrorUnits = message[5]; }
/// <summary> /// Initializes a new instance of the <see cref="Pgrme"/> class. /// </summary> /// <param name="type">The message type</param> /// <param name="message">The NMEA message values.</param> public Pgrme(string type, string[] message) : base(type, message) { if (message == null || message.Length < 6) { throw new ArgumentException("Invalid PGRME", "message"); } HorizontalError = NmeaMessage.StringToDouble(message[0]); HorizontalErrorUnits = message[1]; VerticalError = NmeaMessage.StringToDouble(message[2]); VerticalErrorUnits = message[3]; SphericalError = NmeaMessage.StringToDouble(message[4]); SphericalErrorUnits = message[5]; }
/// <summary> /// Called when the message is being loaded. /// </summary> /// <param name="message">The NMEA message values.</param> protected override void OnLoadMessage(string[] message) { if (message == null || message.Length < 8) { throw new ArgumentException("Invalid GNGST", "message"); } FixTime = StringToTimeSpan(message[0]); Rms = NmeaMessage.StringToDouble(message[1]); SemiMajorError = NmeaMessage.StringToDouble(message[2]); SemiMinorError = NmeaMessage.StringToDouble(message[3]); ErrorOrientation = NmeaMessage.StringToDouble(message[4]); SigmaLatitudeError = NmeaMessage.StringToDouble(message[5]); SigmaLongitudeError = NmeaMessage.StringToDouble(message[6]); SigmaHeightError = NmeaMessage.StringToDouble(message[7]); }