Exemple #1
0
 private void ParseCoordinates(StringBuilder completeMessage, GpggaMessage parsedMessage)
 {
     this.Invoke((MethodInvoker) delegate
     {
         richTextBox.AppendText(completeMessage.ToString() + Environment.NewLine);
         textBoxSzerokosc.Text = Convert(parsedMessage.Latitude);
         textBoxDlugosc.Text   = Convert(parsedMessage.Longitude);
         textBoxSatelity.Text  = parsedMessage?.NumberOfSatellites.ToString();
         textBoxWysokosc.Text  = parsedMessage?.Altitude.ToString();
     });
 }
Exemple #2
0
        private static string NmeaSenteceToJson(List <NmeaMessage> messages, int offsetInSeconds, int speedMultipler)
        {
            if (messages.Count != 2)
            {
                return(null);
            }

            GpggaMessage gpgga = messages[0] as GpggaMessage;
            GprmcMessage rmc   = messages[1] as GprmcMessage;

            Int32 unixTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds + offsetInSeconds;

            // Longitude and Latitude needs to by formatted in the same way as for the project
            // Speed is in knots 1 knt = 1.852 km/h
            return(string.Format("{{\"quality\": 1, \"timestamp_us\": 0, \"timestamp\": {0}, \"altitude\": {1}, \"precision\": {2}, \"longitude\": {3}, \"latitude\": {4}, \"satellites\": {5}, \"speed\": {6}}}",
                                 unixTimestamp, gpgga.Altitude, gpgga.Hdop, gpgga.Longitude * 100, gpgga.Latitude * 100, gpgga.NumberOfSatellites, rmc.Speed * 1.852 * speedMultipler));
        }
Exemple #3
0
        private void Connect(IAsyncResult result)
        {
            if (result.IsCompleted)
            {
                var data = bluetoothClient.GetStream();
                while (true)
                {
                    if (data.CanRead)
                    {
                        GpggaMessage parsedMessage   = new GpggaMessage();
                        var          message         = new byte[256];
                        var          completeMessage = new StringBuilder();

                        do
                        {
                            var numberOfBytesRead = data.Read(message, 0, message.Length);
                            completeMessage.AppendFormat("{0}", Encoding.ASCII.GetString(message, 0, numberOfBytesRead));
                        }while (data.DataAvailable);
                        try
                        {
                            var nmeaParser = new NmeaParser();
                            var messages   = completeMessage.ToString();
                            parsedMessage = (GpggaMessage)nmeaParser.Parse(completeMessage.ToString());
                            if (parsedMessage != null)
                            {
                                ParseCoordinates(completeMessage, parsedMessage);
                            }
                        }
                        catch
                        {
                            ;
                        }
                    }
                }
            }
        }