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();
        }