From 83ed2fbeb462acb1639f686efc1d2824b407aeef Mon Sep 17 00:00:00 2001 From: Morten Nielsen Date: Tue, 28 Jul 2020 21:07:09 -0700 Subject: [PATCH] Try/catch start/stop of device --- src/SampleApp.WinDesktop/MainWindow.xaml.cs | 28 +++++++++++++++------ 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/src/SampleApp.WinDesktop/MainWindow.xaml.cs b/src/SampleApp.WinDesktop/MainWindow.xaml.cs index c05606c..fa5c453 100644 --- a/src/SampleApp.WinDesktop/MainWindow.xaml.cs +++ b/src/SampleApp.WinDesktop/MainWindow.xaml.cs @@ -37,14 +37,14 @@ namespace SampleApp.WinDesktop //Use a log file for playing back logged data var device = new NmeaParser.NmeaFileDevice("NmeaSampleData.txt") { EmulatedBaudRate = 9600, BurstRate = TimeSpan.FromSeconds(1d) }; - StartDevice(device); + _ = StartDevice(device); } /// /// Unloads the current device, and opens the next device /// /// - private async void StartDevice(NmeaParser.NmeaDevice device) + private async Task StartDevice(NmeaParser.NmeaDevice device) { //Clean up old device if (currentDevice != null) @@ -77,7 +77,7 @@ namespace SampleApp.WinDesktop ((NmeaParser.SerialPortDevice)device).Port.PortName, ((NmeaParser.SerialPortDevice)device).Port.BaudRate); } - _ = device.OpenAsync(); + await device.OpenAsync(); } private void device_MessageReceived(object sender, NmeaParser.NmeaMessageReceivedEventArgs args) @@ -121,26 +121,40 @@ namespace SampleApp.WinDesktop } //Browse to nmea file and create device from selected file - private void OpenNmeaLogButton_Click(object sender, RoutedEventArgs e) + private async void OpenNmeaLogButton_Click(object sender, RoutedEventArgs e) { var result = nmeaOpenFileDialog.ShowDialog(); if (result.HasValue && result.Value) { var file = nmeaOpenFileDialog.FileName; var device = new NmeaParser.NmeaFileDevice(file); - StartDevice(device); + try + { + await StartDevice(device); + } + catch(System.Exception ex) + { + MessageBox.Show("Failed to start device: " + ex.Message); + } } } //Creates a serial port device from the selected settings - private void ConnectToSerialButton_Click(object sender, RoutedEventArgs e) + private async void ConnectToSerialButton_Click(object sender, RoutedEventArgs e) { try { var portName = serialPorts.Text as string; var baudRate = int.Parse(baudRates.Text); var device = new NmeaParser.SerialPortDevice(new System.IO.Ports.SerialPort(portName, baudRate)); - StartDevice(device); + try + { + await StartDevice(device); + } + catch (System.Exception ex) + { + MessageBox.Show("Failed to start device: " + ex.Message); + } } catch(System.Exception ex) {