private void ConnectDisconnect() { if (_port != null && _port.IsOpen) { _port.Close(); _port.Dispose(); _nmea.Dispose(); _port = null; _nmea = null; ButtonText = "Connect"; StatusText = "Not Connected."; } else { try { _port = new SerialPort(Port, Baud); _port.Open(); _nmea = new StreamDevice(_port.BaseStream); _nmea.OpenAsync().Wait(); _nmea.MessageReceived += (sender, args) => { Received?.Invoke(sender, args); }; ButtonText = "Disconnect"; StatusText = $"Connected to {Port}"; } catch (Exception e) { StatusText = $"Not connected: {e.GetType()}"; _port = null; _nmea = null; } } }