diff --git a/src/NmeaParser/Nmea/Gga.cs b/src/NmeaParser/Nmea/Gga.cs index b191bd9..c0d32f4 100644 --- a/src/NmeaParser/Nmea/Gga.cs +++ b/src/NmeaParser/Nmea/Gga.cs @@ -41,7 +41,8 @@ namespace NmeaParser.Messages Latitude = NmeaMessage.StringToLatitude(message[1], message[2]); Longitude = NmeaMessage.StringToLongitude(message[3], message[4]); Quality = (Gga.FixQuality)int.Parse(message[5], CultureInfo.InvariantCulture); - NumberOfSatellites = int.Parse(message[6], CultureInfo.InvariantCulture); + if (!string.IsNullOrEmpty(message[6])) + NumberOfSatellites = int.Parse(message[6], CultureInfo.InvariantCulture); Hdop = NmeaMessage.StringToDouble(message[7]); Altitude = NmeaMessage.StringToDouble(message[8]); AltitudeUnits = message[9]; diff --git a/src/UnitTests/NmeaParser.Tests/NmeaMessages.cs b/src/UnitTests/NmeaParser.Tests/NmeaMessages.cs index 7119721..5c60c32 100644 --- a/src/UnitTests/NmeaParser.Tests/NmeaMessages.cs +++ b/src/UnitTests/NmeaParser.Tests/NmeaMessages.cs @@ -251,6 +251,16 @@ namespace NmeaParser.Tests Assert.AreEqual(TimeSpan.FromSeconds(1), gga.TimeSinceLastDgpsUpdate); } + [TestMethod] + public void TestGPGGA_NoSats() + { + string input = "$GPGGA,181651.98,3403.47163804,N,11711.80926595,W,0,,,,M,,M,,*6E"; + var msg = NmeaMessage.Parse(input); + Assert.IsInstanceOfType(msg, typeof(Gga)); + Gga gga = (Gga)msg; + Assert.AreEqual(0, gga.NumberOfSatellites); + } + [TestMethod] public void TestPtlna() {