private async Task PauseReceiving() { if (_serialIoManager == null || !_serialIoManager.IsOpen) { return; } try { _serialIoManager.Close(); await Task.Run(async() => { while (_serialIoManager != null && _serialIoManager.IsOpen) { await Task.Delay(200); } }); ToastService.ToastShortMessage(AppResources.Port_Closed); } catch (Exception) { ToastService.ToastShortMessage(AppResources.Port_Closed_Error); } finally { NotifyPropertyChanged(nameof(PortCommand)); NotifyPropertyChanged(nameof(PortStatus)); } }
private async Task SaveSettings() { try { await SETTINGS_STORE.SaveAsync(CurrentSettings); MessagingCenter.Send <object>(this, "SettingsUpdated"); ToastService.ToastShortMessage(AppResources.Save_Success); } catch (Exception) { ToastService.ToastShortMessage(AppResources.Save_Failed); } }
private void WriteData(byte[] data) { if (_serialIoManager.IsOpen) { try { _port.Write(data, UsbWriteDataTimeOut); } catch (Exception) { ToastService.ToastShortMessage(AppResources.Write_Failed); return; } _sentDataCount++; NotifyPropertyChanged(nameof(SentDataCount)); } }
private async void StartReceiving() { if (App.UsbManager == null || App.PortInfo == null) { ToastService.ToastShortMessage(AppResources.No_Device); return; } var driver = await FindDriversService.GetSpecificDriverAsync(App.UsbManager, App.PortInfo); if (driver != null) { _port = driver.Ports[App.PortInfo.PortNumber]; } else { ToastService.ToastShortMessage(AppResources.No_Driver); return; } CurrentDeviceName = _port.GetType().Name; NotifyPropertyChanged(nameof(CurrentDeviceName)); _serialIoManager = new SerialInputOutputManager(_port) { BaudRate = CurrentSettings.BaudRate, DataBits = CurrentSettings.DataBits, StopBits = CurrentSettings.StopBits, Parity = CurrentSettings.Parity }; _serialIoManager.DataReceived += (sender, e) => { Device.BeginInvokeOnMainThread(() => { UpdateReceivedData(e.Data); }); }; _serialIoManager.ErrorReceived += (sender, e) => { Device.BeginInvokeOnMainThread(() => { ToastService.ToastShortMessage(AppResources .Received_Error); }); }; ToastService.ToastShortMessage(AppResources.Port_Listening); try { _serialIoManager.Open(App.UsbManager); } catch (Exception) { ToastService.ToastShortMessage( $"{AppResources.Open_Failed}: {CurrentDeviceName}"); } finally { NotifyPropertyChanged(nameof(PortCommand)); NotifyPropertyChanged(nameof(PortStatus)); } }