NmeaParser/src/SampleApp.WinDesktop/MainWindow.xaml.cs

69 lines
2.4 KiB
C#
Raw Normal View History

2014-07-25 21:21:07 +02:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace SampleApp.WinDesktop
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private Queue<string> messages = new Queue<string>(101);
2014-07-25 21:21:07 +02:00
public MainWindow()
{
InitializeComponent();
2014-11-15 09:10:24 +01:00
// Use serial port:
//var comPort = System.IO.Ports.SerialPort.GetPortNames().First();
//var port = new System.IO.Ports.SerialPort(comPort, 4800);
//var device = new NmeaParser.SerialPortDevice(port);
//Use a log file for playing back logged data
2014-07-25 21:21:07 +02:00
var device = new NmeaParser.NmeaFileDevice("NmeaSampleData.txt");
device.MessageReceived += device_MessageReceived;
2014-07-29 01:38:45 +02:00
var _ = device.OpenAsync();
2014-07-25 21:21:07 +02:00
}
private void device_MessageReceived(object sender, NmeaParser.NmeaMessageReceivedEventArgs args)
2014-07-25 21:21:07 +02:00
{
Dispatcher.BeginInvoke((Action) delegate()
{
messages.Enqueue(args.Message.MessageType + ": " + args.Message.ToString());
if (messages.Count > 100) messages.Dequeue(); //Keep message queue at 100
output.Text = string.Join("\n", messages.ToArray());
2014-07-29 01:38:45 +02:00
output.Select(output.Text.Length - 1, 0); //scroll to bottom
if(args.Message is NmeaParser.Nmea.Gps.Gpgsv)
2014-07-29 01:38:45 +02:00
{
var gpgsv = (NmeaParser.Nmea.Gps.Gpgsv)args.Message;
if(args.IsMultipart && args.MessageParts != null)
satView.GpgsvMessages = args.MessageParts.OfType<NmeaParser.Nmea.Gps.Gpgsv>();
2014-07-29 01:38:45 +02:00
}
2014-11-15 09:10:24 +01:00
if (args.Message is NmeaParser.Nmea.Gps.Gprmc)
gprmcView.Message = args.Message as NmeaParser.Nmea.Gps.Gprmc;
else if (args.Message is NmeaParser.Nmea.Gps.Gpgga)
gpggaView.Message = args.Message as NmeaParser.Nmea.Gps.Gpgga;
else if (args.Message is NmeaParser.Nmea.Gps.Gpgsa)
gpgsaView.Message = args.Message as NmeaParser.Nmea.Gps.Gpgsa;
else if (args.Message is NmeaParser.Nmea.Gps.Gpgll)
gpgllView.Message = args.Message as NmeaParser.Nmea.Gps.Gpgll;
else if (args.Message is NmeaParser.Nmea.Gps.Garmin.Pgrme)
pgrmeView.Message = args.Message as NmeaParser.Nmea.Gps.Garmin.Pgrme;
2014-07-25 21:21:07 +02:00
});
}
}
}