Example #1
0
        public async void OptionCheckedAsync(BoolOption newOption)
        {
            using (_isBusy.BusyMode)
            {
                // Because i dont want user to shift between two options till 'Yes' will be pressed...
                if (newOption != _lastFallbackedOption)
                {
                    var doChange = await UserInteracting.RequestAcknowledgementAsync("Смена длительности импульса", "Данные предыдущих замеров будут стерты.-NL-NLПродолжить?");

                    if (doChange)
                    {
                        _calibrator.DiscardShockCalibration();
                        _lastFallbackedOption = null;
                    }
                    else
                    {
                        newOption.IsChecked              = false;
                        _lastFallbackedOption            = _previousCheckedOption;
                        _previousCheckedOption.IsChecked = true; // this line triggers method to run again, so it should be the last
                    }

                    _previousCheckedOption = ImpulseDurations.Single(o => o.IsChecked);
                }
            }
        }
Example #2
0
        public async Task OnReadAsync(AsyncOperationInfo operationInfo)
        {
            if (_dump != null && !await UserInteracting.RequestAcknowledgementAsync("Начать загрузку дампа Flash-памяти", "Предыдущий дамп будет стерт из памяти программы-NL-NLПродолжить?"))
            {
                return;
            }

            operationInfo.Progress.Report(0);
            var formats = new Dictionary <RUSDeviceId, IEnumerable <IDataEntity> >();

            switch (formatSource)
            {
            case FormatSource.MODULE:
            {
                var format = await _device.ReadAsync(Command.DATA_PACKET_CONFIGURATION_FILE, DeviceOperationScope.DEFAULT, operationInfo);

                if (format.Status != ReadStatus.OK)
                {
                    Logger.LogErrorEverywhere("Не удалось получить формат данных");

                    return;
                }
                formats.Add(_device.Id, format.Entities);
            }
            break;

            case FormatSource.DEVICES:
            {
                foreach (var device in _device.Children.Concat(_device))
                {
                    var format = await device.ReadAsync(Command.FLASH_DATA_PACKET_CONFIGURATION, DeviceOperationScope.DEFAULT, operationInfo);

                    if (format.Status == ReadStatus.OK)
                    {
                        formats.Add(device.Id, format.Entities);
                    }
                    else
                    {
                        Logger.LogWarningEverywhere($"Не удалось получить формат данных для устройства: {device.Id}");
                    }
                }
            }
            break;

            default:
                throw new NotSupportedException();
            }

            if (formats.Count == 0)
            {
                Logger.LogErrorEverywhere($"Ни один из требуемых форматов не был получен");

                return;
            }

            var reader = await FlashStreamReader.CreateAsync(_device.Id, formats, _parserFactory, operationInfo);

            var result = await _device.ReadAsync(Command.DOWNLOAD_FLASH, reader.FlashReadOperationScope, operationInfo);

            if (result.Status == ReadStatus.OK)
            {
                await reader.FinishAsync(operationInfo);

                _dump = reader;
            }
        }