private void UpdateTelemetry(ITelemetry01 telemetry) { const int maxErrors = 1; if (telemetry == null && _errorCounts < maxErrors) { return; } Parameter01Vm.CurrentValue = telemetry?.We; Parameter02Vm.CurrentValue = telemetry?.Wm; Parameter03Vm.CurrentValue = telemetry?.WfbF; Parameter04Vm.CurrentValue = telemetry?.Isum; Parameter05Vm.CurrentValue = telemetry?.Uout; Parameter06Vm.CurrentValue = telemetry?.Udc; Parameter07Vm.CurrentValue = telemetry?.T1; Parameter08Vm.CurrentValue = _ainsCounter.SelectedAinsCount >= 2 ? telemetry?.T2 : null; Parameter09Vm.CurrentValue = _ainsCounter.SelectedAinsCount >= 3 ? telemetry?.T3 : null; Parameter10Vm.CurrentValue = telemetry?.Text1; Parameter11Vm.CurrentValue = _ainsCounter.SelectedAinsCount >= 2 ? telemetry?.Text2 : null; Parameter12Vm.CurrentValue = _ainsCounter.SelectedAinsCount >= 3 ? telemetry?.Text3 : null; Parameter13Vm.CurrentValue = telemetry?.Torq; Parameter14Vm.CurrentValue = telemetry?.TorqF; Parameter15Vm.CurrentValue = telemetry?.Mout; Parameter16Vm.CurrentValue = telemetry?.P; Parameter17Vm.CurrentValue = telemetry?.Din; Parameter18Vm.CurrentValue = telemetry?.Dout; Parameter19Vm.CurrentValue = telemetry?.SelTorq; }
public void InCycleAction() { var waiter = new ManualResetEvent(false); var cmd = new ReadTelemetry01Command(); _commandSenderHost.Sender.SendCommandAsync(_targerAddressHost.TargetAddress, cmd, TimeSpan.FromSeconds(0.1), 2, (exception, bytes) => { ITelemetry01 telemetry = null; try { if (exception != null) { throw new Exception("Произошла ошибка во время обмена", exception); } var result = cmd.GetResult(bytes); _errorCounts = 0; telemetry = result; } catch (Exception ex) { _errorCounts++; telemetry = null; //_logger.Log("Ошибка: " + ex.Message); //Console.WriteLine(ex); } finally { _uiRoot.Notifier.Notify(() => { // TODO: uipdate bu null if null obtains more than X times (3 for example) UpdateTelemetry(telemetry); }); waiter.Set(); } }); waiter.WaitOne(); waiter.Reset(); }