public void UpdateTelemetry(ICoolerTelemetry telemetry) { _telemetry = telemetry; RaisePropertyChanged(() => Diagnostic); RaisePropertyChanged(() => CoolingLiquidPressure); RaisePropertyChanged(() => FanSpeed); RaisePropertyChanged(() => CoolingLiquidTemperature); RaisePropertyChanged(() => Reserve1); RaisePropertyChanged(() => Reserve2); }
public CoolerTelemetryViewModel() { _telemetry = null; }
private void ReadCycle() { _logger.Log("Запуск циклического опроса телеметрии"); Cancel = false; _readingInProgress = true; _readCycleCommand.RaiseCanExecuteChanged(); _stopReadingCommand.RaiseCanExecuteChanged(); _backWorker.AddWork(() => { try { var w8er = new ManualResetEvent(false); while (!Cancel) { var cmd = new ReadCoolerTelemetryCommand(); _commandSenderHost.Sender.SendCommandAsync( 0x01, cmd, TimeSpan.FromSeconds(0.2), 2, (exception, bytes) => { ICoolerTelemetry coolerTelemetry = null; try { if (exception != null) { throw new Exception("Произошла ошибка во время обмена", exception); } var result = cmd.GetResult(bytes); coolerTelemetry = result; } catch (Exception ex) { // TODO: log exception, null values _logger.Log("Ошибка: " + ex.Message); Console.WriteLine(ex); } finally { _userInterfaceRoot.Notifier.Notify(() => CoolerTelemetryVm.UpdateTelemetry(coolerTelemetry)); w8er.Set(); } }); w8er.WaitOne(); w8er.Reset(); Thread.Sleep(300); // TODO: interval must be setted by user } } catch (Exception ex) { _logger.Log("Ошибка фонового потока очереди отправки: " + ex.Message); } finally { _logger.Log("Циклический опрос окончен"); _userInterfaceRoot.Notifier.Notify(() => { _readingInProgress = false; _readCycleCommand.RaiseCanExecuteChanged(); _stopReadingCommand.RaiseCanExecuteChanged(); }); } }); }