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
{
///
/// Interaction logic for MainWindow.xaml
///
public partial class MainWindow : Window
{
private Queue messages = new Queue(101);
public MainWindow()
{
InitializeComponent();
var device = new NmeaParser.NmeaFileDevice("NmeaSampleData.txt");
device.MessageReceived += device_MessageReceived;
var _ = device.OpenAsync();
}
private void device_MessageReceived(object sender, NmeaParser.NmeaMessageReceivedEventArgs args)
{
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());
output.Select(output.Text.Length - 1, 0); //scroll to bottom
if(args.Message is NmeaParser.Nmea.Gps.Gpgsv)
{
var gpgsv = (NmeaParser.Nmea.Gps.Gpgsv)args.Message;
if(args.IsMultiPart && args.MessageParts != null)
satView.GpgsvMessages = args.MessageParts.OfType();
}
});
}
}
}