using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace GpsClient2.NmeaMessages { public class GpvtgMessage : NmeaMessage { #region Description // $GPVTG,054.7,T,034.4,M,005.5,N,010.2,K*48 // where: // VTG Track made good and ground speed // 054.7,T True track made good(degrees) // 034.4,M Magnetic track made good // 005.5,N Ground speed, knots // 010.2,K Ground speed, Kilometers per hour // *48 Checksum #endregion #region Properties /// /// True track made good(degrees) /// public float TrackDegrees { get; set; } /// /// Magnetic track made good /// public float MagneticTrack { get; set; } /// /// Ground speed, knots /// public float GroundSpeetKnots { get; set; } /// /// Ground speed, Kilometers per hour /// public float GroundSpeed { get; set; } #endregion #region Message parsing public override void Parse(string[] messageParts) { //$GPVTG,054.7,T,034.4,M,005.5,N,010.2,K * 48 if (messageParts == null || messageParts.Length < 9) { throw new ArgumentException("Invalid GPVTG message"); } TrackDegrees = messageParts[1].ToFloat(); MagneticTrack = messageParts[3].ToFloat(); GroundSpeetKnots = messageParts[5].ToFloat(); GroundSpeed = messageParts[7].ToFloat(); } #endregion public override string ToString() { return $"Speed {GroundSpeed} - Track level {TrackDegrees}"; } } }