private void UpdateTelemetry(ITelemetry09 telemetry)
        {
            const int maxErrors = 3;

            if (telemetry == null && _errorCounts < maxErrors)
            {
                return;
            }

            Parameter01Vm.UpdateTelemetry(telemetry?.Status1);
            Parameter02Vm.UpdateTelemetry(_ainsCounter.SelectedAinsCount >= 2 ? telemetry?.Status2 : null);
            Parameter03Vm.UpdateTelemetry(_ainsCounter.SelectedAinsCount >= 3 ? telemetry?.Status3 : null);

            Parameter04Vm.CurrentValue = telemetry?.FaultState;
            Parameter05Vm.CurrentValue = telemetry?.Warning;
            Parameter06Vm.CurrentValue = telemetry?.ErrLinkAin;
            Parameter06Vm.CurrentValue = telemetry?.FollowStatus;
        }
        public void InCycleAction()
        {
            var waiter = new ManualResetEvent(false);
            var cmd    = new ReadTelemetry09Command();

            _commandSenderHost.Sender.SendCommandAsync(_targerAddressHost.TargetAddress,
                                                       cmd, TimeSpan.FromSeconds(0.1), 2,
                                                       (exception, bytes) =>
            {
                ITelemetry09 telemetry = null;
                try
                {
                    if (exception != null)
                    {
                        throw new Exception("Произошла ошибка во время обмена", exception);
                    }
                    var result   = cmd.GetResult(bytes);
                    _errorCounts = 0;
                    telemetry    = result;
                }
                catch (Exception ex)
                {
                    _errorCounts++;     // TODO: потенциально опасная ситуация (переполнение инта (примерно через 233 часа при опросе телеметрии раз в 50 милисекунд)
                    telemetry = null;
                    //_logger.Log("Ошибка: " + ex.Message);
                    //Console.WriteLine(ex);
                }
                finally
                {
                    _uiRoot.Notifier.Notify(() => { UpdateTelemetry(telemetry); });
                    waiter.Set();
                }
            });
            waiter.WaitOne();
            waiter.Reset();
        }