Beispiel #1
0
 private void NmeaDevice_MessageReceived(object sender, NmeaMessageReceivedEventArgs e)
 {
     if (e.Message is Rmc rmc)
     {
         UpdateLocation(rmc.Latitude, rmc.Longitude, rmc.Course);
     }
 }
Beispiel #2
0
        private void DeviceOnMessageReceived(object sender, NmeaMessageReceivedEventArgs e)

        {
            switch (e.Message)
            {
            case Gpgsa gpgsa:
                Console.WriteLine(gpgsa.GpsMode);
                return;

            case Gpgll gpgll:
                Console.WriteLine(gpgll.FixTime);
                return;

            case Gprmc gprmc:
                Console.WriteLine(gprmc.Course);
                return;

            case Gpgga gpgga:
                Console.WriteLine(gpgga.Hdop);
                return;

            case Gpgsv gpgsv:
                Console.WriteLine(gpgsv.SVsInView);
                return;
            }

            var msg = e.Message;

            Console.WriteLine($"Type of : {msg.GetType()}");
            //Console.ReadKey();
        }
Beispiel #3
0
 static void OnNmeaMessageReceived(object sender, NmeaMessageReceivedEventArgs args)
 {
     if (args.Message is Rmc rmc)
     {
         Console.WriteLine($"Latitude::{rmc.Latitude}\tLongitude::{rmc.Longitude}");
     }
 }
Beispiel #4
0
 private static void OnNmeaMessageReceived(object sender, NmeaMessageReceivedEventArgs args)
 {
     // called when a message is received
     if (args.Message is NmeaParser.Messages.Rmc rmc)
     {
         Console.WriteLine($"Your current location is: {GpsCoordinatesFormatter.ParseLatitude(rmc.Latitude)} {GpsCoordinatesFormatter.ParseLongitude(rmc.Longitude)}");
     }
 }
        /// <summary>
        /// Event handler for the SerialGPS, parses the NMEA message and updates CurrentGeopoint.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void _serialGPSDevice_MessageReceived(object sender, NmeaMessageReceivedEventArgs e)
        {
            if (!_serialGPSDeviceFound)
            {
                _serialGPSDeviceFound = true;
            }

            double Latitude = 0.0, Longitude = 0.0;

            NMEAMessage = e.Message.ToString();

            //Parse all NMEA messages supported by BU353-s4.
            //Only GGA, RMC, and GLL support location
            switch (e.Message.MessageType)
            {
            case "GPGGA":
                Gpgga gga = (Gpgga)e.Message;
                Latitude  = gga.Latitude;
                Longitude = gga.Longitude;

                break;

            case "GPRMC":
                Gprmc rmc = (Gprmc)e.Message;
                Latitude  = rmc.Latitude;
                Longitude = rmc.Longitude;

                break;

            case "GPGLL":
                Gpgll gll = (Gpgll)e.Message;
                Latitude  = gll.Latitude;
                Longitude = gll.Longitude;

                break;

            case "GPGSA":
                Gpgsa gsa = (Gpgsa)e.Message;

                break;

            case "GPGSV":
                Gpgsv gsv = (Gpgsv)e.Message;
                break;
            }

            //make sure the delta-p is above a threshold
            if (Latitude != 0.0 && Longitude != 0.0)
            {
                double distance = Haversine(Latitude, Longitude, CurrentGeopoint.Position.Latitude, CurrentGeopoint.Position.Longitude);
                if (distance > 0) //2.5m is minimum accuracy of BU-353 S4 and WAAS/SBAS corrections
                {
                    CurrentGeopoint = CreateGeopoint(Latitude, Longitude);
                }
            }
        }
Beispiel #6
0
        private void NmeaStreamDevice_MessageReceived(object sender, NmeaMessageReceivedEventArgs e)
        {
            if (!messageStats.ContainsKey(e.Message.MessageType))
            {
                messageStats.Add(e.Message.MessageType, 0);
            }
            messageStats[e.Message.MessageType]++;

            switch (e.Message.MessageType)
            {
            case "GPGSV":
                Gpgsv gpgsv = (Gpgsv)e.Message;
                numSattelites = gpgsv.SVsInView;
                break;

            case "GPGLL":       //enthält GPS Daten
                Gpgll gpgll = (Gpgll)e.Message;
                if (gpgll.DataActive)
                {
                    lon            = gpgll.Longitude;
                    lat            = gpgll.Latitude;
                    validGpsSignal = true;
                    gpsLlTimestamp = DateTime.Now;
                }
                break;

            case "GPGSA":
                Gpgsa gpgsa = (Gpgsa)e.Message;
                fixMode = gpgsa.FixMode;
                break;

            case "GPRMC":       //enthält GPS Daten
                Gprmc gprmc = (Gprmc)e.Message;
                break;

            case "GPVTG":
                break;

            case "GPZDA":
                break;

            case "GPGGA":       //enthält GPS Daten
                Gpgga gpgga = (Gpgga)e.Message;
                altitude = gpgga.Altitude;
                break;

            default:
                lock (lockVictim)
                {
                    tourStreamWriter.WriteLine(String.Format("UNIMP_GPS;", e.Message.ToString()));
                }
                break;
            }
        }
Beispiel #7
0
        private void HandleNmeaMessage(object sender, NmeaMessageReceivedEventArgs eventArgs)
        {
            if (eventArgs.Message is NmeaParser.Messages.Rmc rmc)
            {
                this.Longitude = rmc.Longitude;
                this.Latitude  = rmc.Latitude;

                this.OnPositionDetected?.Invoke(new Position()
                {
                    latitude = (float)rmc.Latitude, longitude = (float)rmc.Longitude
                });
            }
        }