コード例 #1
0
ファイル: ParserTests.cs プロジェクト: DELTAJoSch/NmeaParser
        public void ParseGGA_WhenCalledMissingInfo_ParsesCorrectly()
        {
            Parser parser = new Parser();

            string      nmea     = "$GPGGA,091124.840,4813.990,N,01411.199,E,1,,1.0,0.0,M,0.0,M,10,*67";
            NmeaStorage storage  = new NmeaStorage();
            DateTime    dateTime = DateTime.Today;

            dateTime.AddHours(9);
            dateTime.AddMinutes(11);
            dateTime.AddSeconds(24);

            parser.ParseGGA(nmea, storage);

            Assert.AreEqual((float)4813.990, storage.Latitude);
            Assert.AreEqual('N', storage.NorthSouth);
            Assert.AreEqual((float)01411.199, storage.Longitude);
            Assert.AreEqual('E', storage.EastWest);
            Assert.AreEqual(1, storage.Quality);
            Assert.AreEqual(0, storage.SattelitesInUse);
            Assert.AreEqual((float)1.0, storage.HDOP);
            Assert.AreEqual((float)0.0, storage.Altitude);
            Assert.AreEqual((float)0.0, storage.GeoidSeparation);
            Assert.AreEqual(10, storage.Age);
            Assert.AreEqual(dateTime, storage.Time);
        }
コード例 #2
0
ファイル: FileIO.cs プロジェクト: DELTAJoSch/dip-cider
        private void GGA(string Nmea, DataProvider Data, bool First)
        {
            NmeaStorage storage = new NmeaStorage();
            Parser      parser  = new Parser();

            try
            {
                parser.ParseGGA(Nmea, storage);

                if (storage.NorthSouth != '\u0000' && storage.EastWest != '\u0000' && storage.SattelitesInUse > 2)
                {
                    double latitude;
                    double longitude;

                    string lat = storage.Latitude.ToString();
                    string lon = storage.Longitude.ToString();

                    latitude  = Convert.ToDouble(lat.Substring(0, 2)) + Convert.ToDouble(lat.Substring(2)) / 60;
                    longitude = Convert.ToDouble(lon.Substring(0, 2)) + Convert.ToDouble(lon.Substring(2)) / 60;

                    if (storage.NorthSouth == 'S')
                    {
                        latitude = -latitude;
                    }
                    if (storage.EastWest == 'W')
                    {
                        longitude = -longitude;
                    }
                    Data.Route.Add(new Location(latitude, longitude));
                }

                Data.AverageSattelitesInUse = storage.SattelitesInUse;

                if (DateTime.Today != storage.Time)
                {
                    Data.RouteEndTime = storage.Time;
                }

                if (First)
                {
                    Data.RouteStartTime = storage.Time;
                }
            }
            catch (Exception ex)
            {
                logger.Debug(ex, "Error whilst parsing");
                failedParses++;
            }
            finally
            {
                logger.Info("{0} parses failed.", failedParses);
            }
        }
コード例 #3
0
ファイル: ParserTests.cs プロジェクト: DELTAJoSch/NmeaParser
        public void ParseGGA_WhenCalledWrongFormat_ParserThrowsWrongFormatException()
        {
            Parser parser = new Parser();

            string      nmea    = "$GPGGA,091124.840,WRONG,N,01411.199,E,1,,1.0,0.0,M,0.0,M,10,*67";
            NmeaStorage storage = new NmeaStorage();

            try
            {
                parser.ParseGGA(nmea, storage);
            }
            catch (Exception ex)
            {
                if (ex.GetType() == typeof(ParserUnknownStringFormatException))
                {
                    Assert.Pass();
                }
                Assert.Fail();
            }
        }
コード例 #4
0
ファイル: ParserTests.cs プロジェクト: DELTAJoSch/NmeaParser
        public void ParseGGA_WhenCalledIncompleteString_ParserThrowsMissingInfoException()
        {
            Parser parser = new Parser();

            string      nmea    = "$GPGGA,091124.840,4813.990,N,01411.199,E,1,,1.0,0.0,M,0.0";
            NmeaStorage storage = new NmeaStorage();

            try
            {
                parser.ParseGGA(nmea, storage);
            }
            catch (Exception ex)
            {
                if (ex.GetType() == typeof(ParserIncompleteStringException))
                {
                    Assert.Pass();
                }
                Assert.Fail();
            }
        }
コード例 #5
0
ファイル: ParserTests.cs プロジェクト: DELTAJoSch/NmeaParser
        public void ParseGLL_WhenCalledWrongFormat_ParserThrowsWrongFormatException()
        {
            Parser parser = new Parser();

            string      nmea    = "$GPGLL,WRONG:FORMAT,N,12311.12,W,225444,A,*1D";
            NmeaStorage storage = new NmeaStorage();

            try
            {
                parser.ParseGLL(nmea, storage);
            }
            catch (Exception ex)
            {
                if (ex.GetType() == typeof(ParserUnknownStringFormatException))
                {
                    Assert.Pass();
                }
                Assert.Fail();
            }
        }
コード例 #6
0
ファイル: ParserTests.cs プロジェクト: DELTAJoSch/NmeaParser
        public void ParseGLL_WhenCalledIncompleteString_ParserThrowsMissingInfoException()
        {
            Parser parser = new Parser();

            string      nmea    = "$GPGLL,4916.45";
            NmeaStorage storage = new NmeaStorage();

            try
            {
                parser.ParseGLL(nmea, storage);
            }
            catch (Exception ex)
            {
                if (ex.GetType() == typeof(ParserIncompleteStringException))
                {
                    Assert.Pass();
                }
                Assert.Fail();
            }
        }
コード例 #7
0
ファイル: ParserTests.cs プロジェクト: DELTAJoSch/NmeaParser
        public void ParseGSA_WhenCalledWrongFormat_ParserThrowsWrongFormatException()
        {
            Parser parser = new Parser();

            string      nmea    = "$GPGSA,A,Wrooong,01,02,03,04,05,06,07,08,09,10,11,12,1.0,1.0,1.0*30";
            NmeaStorage storage = new NmeaStorage();

            try
            {
                parser.ParseGSA(nmea, storage);
            }
            catch (Exception ex)
            {
                if (ex.GetType() == typeof(ParserUnknownStringFormatException))
                {
                    Assert.Pass();
                }
                Assert.Fail();
            }
        }
コード例 #8
0
ファイル: ParserTests.cs プロジェクト: DELTAJoSch/NmeaParser
        public void ParseGSA_WhenCalledMissingInfo_ParsesCorrectly()
        {
            Parser parser = new Parser();

            string      nmea     = "$GPGSA,,,01,02,03,04,05,06,07,08,09,10,,12,1.0,1.0,*30";
            NmeaStorage storage  = new NmeaStorage();
            DateTime    dateTime = DateTime.Today;

            dateTime.AddHours(9);
            dateTime.AddMinutes(11);
            dateTime.AddSeconds(24);

            parser.ParseGSA(nmea, storage);

            Assert.AreEqual('\u0000', storage.Mode);
            Assert.AreEqual(0, storage.FixType);
            Assert.AreEqual((float)1.0, storage.PDOP);
            Assert.AreEqual((float)0.0, storage.VDOP);
            Assert.AreEqual((float)1.0, storage.HDOP);
        }
コード例 #9
0
ファイル: FileIO.cs プロジェクト: DELTAJoSch/dip-cider
        private void RMC(string Nmea, DataProvider Data, bool First)
        {
            NmeaStorage storage = new NmeaStorage();
            Parser      parser  = new Parser();

            try
            {
                parser.ParseRMC(Nmea, storage);

                Data.Velocity.Add(storage.SpeedOverGround);
                Data.DataPointsVelocity++;
            }
            catch (Exception ex)
            {
                logger.Debug(ex, "Error whilst parsing");
                failedParses++;
            }
            finally
            {
                logger.Info("{0} parses failed.", failedParses);
            }
        }
コード例 #10
0
ファイル: ParserTests.cs プロジェクト: DELTAJoSch/NmeaParser
        public void ParseGLL_WhenCalledMissingInfo_ParsesCorrectly()
        {
            Parser parser = new Parser();

            string      nmea     = "$GPGLL,4916.45,,12311.12,,225444,A,*1D";
            NmeaStorage storage  = new NmeaStorage();
            DateTime    dateTime = DateTime.Today;

            dateTime.AddHours(9);
            dateTime.AddMinutes(11);
            dateTime.AddSeconds(24);

            parser.ParseGLL(nmea, storage);

            Assert.AreEqual((float)4916.45, storage.Latitude);
            Assert.AreEqual((float)12311.12, storage.Longitude);
            Assert.AreEqual('\u0000', storage.NorthSouth);
            Assert.AreEqual('\u0000', storage.EastWest);
            Assert.AreEqual(dateTime, storage.Time);
            Assert.AreEqual('A', storage.Status);
            Assert.AreEqual('\u0000', storage.ModeIndicator);;
        }