Exemplo n.º 1
0
        /// <summary>
        /// Initializes the NMEA Geographic position, Latitude and Longitude and parses an NMEA sentence
        /// </summary>
        /// <param name="NMEAsentence"></param>
        public GPGLL(string NMEAsentence)
        {
            try
            {
                //Split into an array of strings.
                string[] split = NMEAsentence.Split(new Char[] { ',' });

                try
                {
                    _position = new Coordinate(GPSHandler.GPSToDecimalDegrees(split[3], split[4]),
                                               GPSHandler.GPSToDecimalDegrees(split[1], split[2]));
                }
                catch { _position = null; }

                try
                {
                    _timeOfSolution = new TimeSpan(int.Parse(split[5].Substring(0, 2)),
                                                   int.Parse(split[5].Substring(2, 2)),
                                                   int.Parse(split[5].Substring(4)));
                }
                catch
                {
                    _timeOfSolution = null;                     // TimeSpan.Zero;
                }
                _dataValid = (split[6] == "A");
            }
            catch { }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Initializes the NMEA Global Positioning System Fix Data and parses an NMEA sentence
        /// </summary>
        /// <param name="NMEAsentence"></param>
        public GPGGA(string NMEAsentence)
        {
            try
            {
                if (NMEAsentence.IndexOf('*') > 0)
                {
                    NMEAsentence = NMEAsentence.Substring(0, NMEAsentence.IndexOf('*'));
                }
                //Split into an array of strings.
                string[] split = NMEAsentence.Split(new Char[] { ',' });
                if (split[1].Length >= 6)
                {
                    TimeSpan t = new TimeSpan(GPSHandler.intTryParse(split[1].Substring(0, 2)),
                                              GPSHandler.intTryParse(split[1].Substring(2, 2)), GPSHandler.intTryParse(split[1].Substring(4, 2)));
                    DateTime nowutc = DateTime.UtcNow;
                    nowutc     = nowutc.Add(-nowutc.TimeOfDay);
                    _timeOfFix = nowutc.Add(t);
                }

                _position = new Coordinate(GPSHandler.GPSToDecimalDegrees(split[4], split[5]),
                                           GPSHandler.GPSToDecimalDegrees(split[2], split[3]));
                if (split[6] == "1")
                {
                    _fixQuality = FixQualityEnum.GPS;
                }
                else if (split[6] == "2")
                {
                    _fixQuality = FixQualityEnum.DGPS;
                }
                else
                {
                    _fixQuality = FixQualityEnum.Invalid;
                }
                _noOfSats = Convert.ToByte(split[7]);
                GPSHandler.dblTryParse(split[8], out _dilution);
                GPSHandler.dblTryParse(split[9], out _altitude);
                _altitudeUnits = split[10][0];
                GPSHandler.dblTryParse(split[11], out _heightOfGeoid);
                GPSHandler.intTryParse(split[13], out _dGPSUpdate);
                _dGPSStationID = split[14];
            }
            catch { }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Initializes the NMEA Recommended minimum specific GPS/Transit data and parses an NMEA sentence
        /// </summary>
        /// <param name="NMEAsentence"></param>
        public GPRMC(string NMEAsentence)
        {
            try
            {
                //Split into an array of strings.
                string[] split = NMEAsentence.Split(new Char[] { ',' });

                //Extract date/time
                try
                {
                    string[] DateTimeFormats = { "ddMMyyHHmmss", "ddMMyy", "ddMMyyHHmmss.FFFFFF" };
                    if (split[9].Length >= 6)                       //Require at least the date to be present
                    {
                        string time = split[9] + split[1];          // +" 0";
                        _timeOfFix = DateTime.ParseExact(time, DateTimeFormats, GPSHandler.NumberFormatEnUs, System.Globalization.DateTimeStyles.AssumeUniversal);
                    }
                    else
                    {
                        _timeOfFix = new DateTime();
                    }
                }
                catch { _timeOfFix = new DateTime(); }

                if (split[2] == "A")
                {
                    _status = StatusEnum.OK;
                }
                else
                {
                    _status = StatusEnum.Warning;
                }

                _position = new Coordinate(GPSHandler.GPSToDecimalDegrees(split[5], split[6]),
                                           GPSHandler.GPSToDecimalDegrees(split[3], split[4]));

                GPSHandler.dblTryParse(split[7], out _speed);
                GPSHandler.dblTryParse(split[8], out _course);
                GPSHandler.dblTryParse(split[10], out _magneticVariation);
            }
            catch { }
        }