public void AddMessage(NmeaParser.Nmea.NmeaMessage message) { messages.Enqueue(message.MessageType + ": " + message.ToString()); if (messages.Count > 100) { messages.Dequeue(); //Keep message queue at 100 } output.Text = string.Join("\n", messages.ToArray()); output.Select(output.Text.Length - 1, 0); //scroll to bottom }
public void AddMessage(NmeaParser.Nmea.NmeaMessage message) { messages.Enqueue($"{DateTime.Now.ToString("hh:mm:ss.fff")}: {message}"); if (messages.Count > 100) { messages.Dequeue(); //Keep message queue at 100 } output.Text = string.Join("\n", messages.ToArray()); output.Select(output.Text.Length - 1, 0); //scroll to bottom }
public void ParseMessage(NmeaParser.Nmea.NmeaMessage message) { bool isNewFix = false; bool lostFix = false; double lat = 0; double lon = 0; if (message is NmeaParser.Nmea.Gps.Garmin.Pgrme) { m_Accuracy = ((NmeaParser.Nmea.Gps.Garmin.Pgrme)message).HorizontalError; } else if (message is NmeaParser.Nmea.Gst) { Gst = ((NmeaParser.Nmea.Gst)message); m_Accuracy = Math.Sqrt(Gst.SigmaLatitudeError * Gst.SigmaLatitudeError + Gst.SigmaLongitudeError * Gst.SigmaLongitudeError); } else if (message is NmeaParser.Nmea.Gga) { Gga = ((NmeaParser.Nmea.Gga)message); isNewFix = Gga.Quality != NmeaParser.Nmea.Gps.Gpgga.FixQuality.Invalid; lostFix = !isNewFix; m_altitude = Gga.Altitude; lat = Gga.Latitude; lon = Gga.Longitude; } else if (message is NmeaParser.Nmea.Rmc) { Rmc = (NmeaParser.Nmea.Rmc)message; if (Rmc.Active) { isNewFix = true; m_speed = Rmc.Speed; m_course = Rmc.Course; lat = Rmc.Latitude; lon = Rmc.Longitude; } else { lostFix = true; } } else if (message is NmeaParser.Nmea.Gsa) { Gsa = (NmeaParser.Nmea.Gsa)message; } if (isNewFix) { base.UpdateLocation(new Esri.ArcGISRuntime.Location.Location(new MapPoint(lon, lat, m_altitude, SpatialReferences.Wgs84), m_Accuracy, m_speed, m_course, false)); } else if (lostFix) { } }