public AinTelemetriesViewModel(ICommandSenderHost commandSenderHost, ITargetAddressHost targerAddressHost,
                                       IUserInterfaceRoot userInterfaceRoot, ILogger logger, IWindowSystem windowSystem,
                                       IDebugInformationShower debugInformationShower, TelemetryCommonViewModel externalTelemetryVm,
                                       AinTelemetryViewModel ain1TelemetyVm, AinTelemetryViewModel ain2TelemetyVm,
                                       AinTelemetryViewModel ain3TelemetyVm)
        {
            _commandSenderHost      = commandSenderHost;
            _targerAddressHost      = targerAddressHost;
            _userInterfaceRoot      = userInterfaceRoot;
            _logger                 = logger;
            _windowSystem           = windowSystem;
            _debugInformationShower = debugInformationShower;

            CommonTelemetryVm = externalTelemetryVm;

            _readCycleCommand   = new RelayCommand(ReadCycle, () => !_readingInProgress); // TODO: check port opened
            _stopReadingCommand = new RelayCommand(StopReading, () => _readingInProgress);

            _ainTelemetryVms = new List <AinTelemetryExpandedViewModel>
            {
                new AinTelemetryExpandedViewModel("АИН №1", ain1TelemetyVm),
                new AinTelemetryExpandedViewModel("АИН №2", ain2TelemetyVm),
                new AinTelemetryExpandedViewModel("АИН №3", ain3TelemetyVm)
            };


            //_backWorker = new SingleThreadedRelayQueueWorker<Action>("AinTelemetryBackWorker", a => a(), ThreadPriority.BelowNormal, true, null, new RelayActionLogger(Console.WriteLine, new ChainedFormatter(new List<ITextFormatter> {new PreffixTextFormatter("TelemetryBackWorker > "), new DateTimeFormatter(" > ")})));
            _syncCancel        = new object();
            _cancel            = true;
            _readingInProgress = false;
        }
        public BsEthernetNominalsViewModel(ICommandSenderHost commandSenderHost, ITargetAddressHost targerAddressHost,
                                           IUserInterfaceRoot userInterfaceRoot, ILogger logger, IWindowSystem windowSystem,
                                           INotifySendingEnabled sendingEnabledControl)
        {
            _commandSenderHost     = commandSenderHost;
            _targerAddressHost     = targerAddressHost;
            _userInterfaceRoot     = userInterfaceRoot;
            _logger                = logger;
            _windowSystem          = windowSystem;
            _sendingEnabledControl = sendingEnabledControl;

            _readNominalsCommand  = new RelayCommand(ReadNominals, () => _sendingEnabledControl.IsSendingEnabled);
            _writeNominalsCommand = new RelayCommand(WriteNominals, () => _sendingEnabledControl.IsSendingEnabled);

            ImportNominalsCommand = new RelayCommand(ImportNominals);
            ExportNominalsCommand = new RelayCommand(ExportNominals);

            _ratedRotationFriquencyCalculated = 0;
            _ratedPwmModulationCoefficient    = 0;
            _ratedMomentumCurrentSetting      = 0;
            _ratedRadiatorTemperature         = 0;
            _ratedDcBusVoltage = 0;
            _ratedAllPhasesCurrentAmplitudeEnvelopeCurve = 0;
            _ratedRegulatorCurrentDoutput          = 0;
            _ratedRegulatorCurrentQoutput          = 0;
            _ratedFriquencyIntensitySetpointOutput = 0;
            _ratedFlowSetting    = 0;
            _ratedMeasuredMoment = 0;
            _ratedSpeedRegulatorOutputOrMomentSetting = 0;
            _ratedMeasuredFlow             = 0;
            _ratedSettingExcitationCurrent = 0;

            _sendingEnabledControl.SendingEnabledChanged += SendingEnabledControlOnSendingEnabledChanged;
        }
Пример #3
0
        public Group26SettingsViewModel(IUserInterfaceRoot uiRoot, ILogger logger,
                                        IAinSettingsReaderWriter readerWriter, IAinSettingsReadNotify ainSettingsReadNotify,
                                        IAinSettingsStorage storage, IAinSettingsStorageUpdatedNotify storageUpdatedNotify,
                                        IAinsCounter ainsCounter)
        {
            _uiRoot                = uiRoot;
            _logger                = logger;
            _readerWriter          = readerWriter;
            _ainSettingsReadNotify = ainSettingsReadNotify;
            _storage               = storage;
            _storageUpdatedNotify  = storageUpdatedNotify;
            _ainsCounter           = ainsCounter;

            Parameter01Vm = new ParameterDecimalEditCheckViewModel("26.01. Режим работы", "f0", -10000, 10000);

            ReadSettingsCmd  = new RelayCommand(ReadSettings, () => true); // TODO: read only when connected to COM
            WriteSettingsCmd =
                new RelayCommand(WriteSettings, () => IsWriteEnabled);     // TODO: read only when connected to COM

            _ainSettingsReadNotify.AinSettingsReadComplete += AinSettingsReadNotifyOnAinSettingsReadComplete;
            _storageUpdatedNotify.AinSettingsUpdated       += (zbAinNuber, settings) =>
            {
                _uiRoot.Notifier.Notify(() => WriteSettingsCmd.RaiseCanExecuteChanged());
            };
        }
Пример #4
0
        public TelemetryViewModel(IUserInterfaceRoot userInterfaceRoot, ICommandSenderHost commanSenderHost,
                                  ITargetAddressHost targetAddressHost, ILogger logger, ICycleThreadHolder cycleThreadHolder,
                                  IAinsCounter ainsCounter, IParameterLogger parameterLogger, INotifySendingEnabled notifySendingEnabled)
        {
            Group01ParametersVm = new Group01ParametersViewModel(commanSenderHost, targetAddressHost, userInterfaceRoot,
                                                                 logger, ainsCounter, parameterLogger);
            cycleThreadHolder.RegisterAsCyclePart(Group01ParametersVm);

            Group02ParametersVm = new Group02ParametersViewModel(commanSenderHost, targetAddressHost, userInterfaceRoot,
                                                                 logger, parameterLogger);
            cycleThreadHolder.RegisterAsCyclePart(Group02ParametersVm);

            Group03ParametersVm = new Group03ParametersViewModel(commanSenderHost, targetAddressHost, userInterfaceRoot,
                                                                 logger, parameterLogger);
            cycleThreadHolder.RegisterAsCyclePart(Group03ParametersVm);

            Group04ParametersVm = new Group04ParametersViewModel(commanSenderHost, targetAddressHost, userInterfaceRoot,
                                                                 logger, notifySendingEnabled);

            Group07ParametersVm = new Group07ParametersViewModel(commanSenderHost, targetAddressHost, userInterfaceRoot,
                                                                 logger, parameterLogger);
            cycleThreadHolder.RegisterAsCyclePart(Group07ParametersVm);

            Group08ParametersVm = new Group08ParametersViewModel(commanSenderHost, targetAddressHost, userInterfaceRoot,
                                                                 logger, parameterLogger);
            cycleThreadHolder.RegisterAsCyclePart(Group08ParametersVm);

            Group09ParametersVm = new Group09ParametersViewModel(commanSenderHost, targetAddressHost, userInterfaceRoot,
                                                                 logger, ainsCounter, parameterLogger);
            cycleThreadHolder.RegisterAsCyclePart(Group09ParametersVm);
        }
Пример #5
0
        public Group107SettingsViewModel(IUserInterfaceRoot uiRoot, ILogger logger,
                                         IAinSettingsReaderWriter readerWriter, IAinSettingsStorage storage,
                                         IAinSettingsStorageUpdatedNotify storageUpdatedNotify, IAinsCounter ainsCounter)
        {
            _uiRoot               = uiRoot;
            _logger               = logger;
            _readerWriter         = readerWriter;
            _storage              = storage;
            _storageUpdatedNotify = storageUpdatedNotify;
            _ainsCounter          = ainsCounter;

            Parameter01Vm =
                new ParameterDecimalEditCheckViewModel("107.01. Мин. напряжение в режиме чоппера", "f0", -10000, 10000);
            Parameter02Vm =
                new ParameterDecimalEditCheckViewModel("107.02. Макс. напряжение в режиме чоппера", "f0", -10000,
                                                       10000);

            ReadSettingsCmd  = new RelayCommand(ReadSettings, () => true); // TODO: read only when connected to COM
            WriteSettingsCmd =
                new RelayCommand(WriteSettings, () => IsWriteEnabled);     // TODO: read only when connected to COM

            //_ainSettingsReadNotify.AinSettingsReadComplete += AinSettingsReadNotifyOnAinSettingsReadComplete;
            _storageUpdatedNotify.AinSettingsUpdated += (zbAinNuber, settings) =>
            {
                _uiRoot.Notifier.Notify(() => WriteSettingsCmd.RaiseCanExecuteChanged());
                AinSettingsReadNotifyOnAinSettingsReadComplete(zbAinNuber,
                                                               settings == null ? new Exception("Настройки недоступны") : null, settings);
            };
        }
Пример #6
0
        public Group22SettingsViewModel(IUserInterfaceRoot uiRoot, ILogger logger,
                                        IAinSettingsReaderWriter readerWriter, IAinSettingsReadNotify ainSettingsReadNotify,
                                        IAinSettingsStorage storage, IAinSettingsStorageUpdatedNotify storageUpdatedNotify,
                                        IAinsCounter ainsCounter)
        {
            _uiRoot                = uiRoot;
            _logger                = logger;
            _readerWriter          = readerWriter;
            _ainSettingsReadNotify = ainSettingsReadNotify;
            _storage               = storage;
            _storageUpdatedNotify  = storageUpdatedNotify;
            _ainsCounter           = ainsCounter;

            Parameter01Vm =
                new ParameterDecimalEditCheckViewModel("22.01. Темп нарастания частоты задатчика интенсивности [Гц/с]",
                                                       "f1", -3276.7m, 3276.7m);
            Parameter02Vm =
                new ParameterDecimalEditCheckViewModel("22.02. Темп спада частоты задатчика интенсивности [Гц/с]", "f1",
                                                       -3276.8m, 3276.7m);
            Parameter03Vm = new ParameterDecimalEditCheckViewModel(
                "22.03. Темп спада частоты при аварийном останове привода [Гц/с]", "f1", -3276.8m, 3276.7m);

            ReadSettingsCmd  = new RelayCommand(ReadSettings, () => true); // TODO: read only when connected to COM
            WriteSettingsCmd =
                new RelayCommand(WriteSettings, () => IsWriteEnabled);     // TODO: read only when connected to COM

            _ainSettingsReadNotify.AinSettingsReadComplete += AinSettingsReadNotifyOnAinSettingsReadComplete;
            _storageUpdatedNotify.AinSettingsUpdated       += (zbAinNuber, settings) =>
            {
                _uiRoot.Notifier.Notify(() => WriteSettingsCmd.RaiseCanExecuteChanged());
            };
        }
Пример #7
0
        public EngineSettingsViewModel(ICommandSenderHost commandSenderHost, ITargetAddressHost targerAddressHost,
                                       IUserInterfaceRoot userInterfaceRoot, ILogger logger, IWindowSystem windowSystem,
                                       INotifySendingEnabled sendingEnabledControl)
        {
            _commandSenderHost     = commandSenderHost;
            _targerAddressHost     = targerAddressHost;
            _userInterfaceRoot     = userInterfaceRoot;
            _logger                = logger;
            _windowSystem          = windowSystem;
            _sendingEnabledControl = sendingEnabledControl;

            _readSettingsCommand  = new RelayCommand(ReadSettings, () => _sendingEnabledControl.IsSendingEnabled);
            _writeSettingsCommand = new RelayCommand(WriteSettings, () => _sendingEnabledControl.IsSendingEnabled);

            ImportSettingsCommand = new RelayCommand(ImportSettings);
            ExportSettingsCommand = new RelayCommand(ExportSettings);


            _inom   = null;
            _nnom   = null;
            _nmax   = null;
            _pnom   = null;
            _cosFi  = null;
            _eff    = null;
            _mass   = null;
            _mmM    = null;
            _height = null;

            _i2Tmax      = null;
            _icontinious = null;
            _zeroF       = null;

            _sendingEnabledControl.SendingEnabledChanged += SendingEnabledControlOnSendingEnabledChanged;
        }
Пример #8
0
        public AinCommandAndCommonTelemetryViewModel(
            AinCommandAndMinimalCommonTelemetryViewModel ainCommandAndMinimalCommonTelemetryViewModel,
            TelemetryCommonViewModel commonTelemetryVm, ICommandSenderHost commandSenderHost,
            ITargetAddressHost targerAddressHost, IUserInterfaceRoot uiRoot, INotifySendingEnabled notifySendingEnabled)
        {
            _commandSenderHost    = commandSenderHost;
            _targerAddressHost    = targerAddressHost;
            _uiRoot               = uiRoot;
            _notifySendingEnabled = notifySendingEnabled;
            AinCommandAndMinimalCommonTelemetryVm = ainCommandAndMinimalCommonTelemetryViewModel;
            CommonTelemetryVm = commonTelemetryVm;

            _syncCancel = new object();

            _cancel = !_notifySendingEnabled.IsSendingEnabled; // TODO: possible state loss between lines
            _notifySendingEnabled.SendingEnabledChanged += isSendingEnabled =>
            {
                Cancel = !isSendingEnabled;
            }; // TODO: unsubscribe on exit

            Ain1LinkError = null;
            Ain2LinkError = null;
            Ain3LinkError = null;
            _errorCounts  = 0;
        }
Пример #9
0
        public Group08ParametersViewModel(ICommandSenderHost commandSenderHost, ITargetAddressHost targerAddressHost,
                                          IUserInterfaceRoot uiRoot, ILogger logger, IParameterLogger parameterLogger)
        {
            _commandSenderHost = commandSenderHost;
            _targerAddressHost = targerAddressHost;
            _uiRoot            = uiRoot;
            _logger            = logger;

            Parameter01Vm = new MswParameterViewModel(parameterLogger);
            Parameter02Vm = new AswParameterViewModel(parameterLogger);
            Parameter03Vm = new ParameterDoubleReadonlyViewModel("08.03 Этап работы с частотным приводом.", "f0", null,
                                                                 parameterLogger);
            Parameter04Vm =
                new ParameterDoubleReadonlyViewModel("08.04 MSW Ведомого привода.", "f0", null, parameterLogger);
            Parameter05Vm =
                new ParameterDoubleReadonlyViewModel("08.05 ASW Ведомого привода.", "f0", null, parameterLogger);
            Parameter06Vm =
                new ParameterDoubleReadonlyViewModel("08.06 (Ведомый привод) Этап работы с частотным приводом.", "f0",
                                                     null, parameterLogger);


            ReadCycleCmd     = new RelayCommand(ReadCycleFunc, () => !_readingInProgress); // TODO: check port opened
            StopReadCycleCmd = new RelayCommand(StopReadingFunc, () => _readingInProgress);

            _syncCancel        = new object();
            _cancel            = true;
            _readingInProgress = false;
        }
Пример #10
0
        public RectifierTelemetriesViewModel(ICommandSenderHost commandSenderHost, ITargetAddressHost targerAddressHost,
                                             IUserInterfaceRoot userInterfaceRoot, ILogger logger, IWindowSystem windowSystem)
        {
            _commandSenderHost = commandSenderHost;
            _targerAddressHost = targerAddressHost;
            _userInterfaceRoot = userInterfaceRoot;
            _logger            = logger;
            _windowSystem      = windowSystem;

            _readCycleCommand   = new RelayCommand(ReadCycle, () => !_readingInProgress);
            _stopReadingCommand = new RelayCommand(StopReading, () => _readingInProgress);

            _rectifierTelemetryVms = new List <RectifierTelemetryViewModel>
            {
                new RectifierTelemetryViewModel("Выпрямитель 1"),
                new RectifierTelemetryViewModel("Выпрямитель 2"),
                new RectifierTelemetryViewModel("Выпрямитель 3"),
                new RectifierTelemetryViewModel("Выпрямитель 4"),
                new RectifierTelemetryViewModel("Выпрямитель 5"),
                new RectifierTelemetryViewModel("Выпрямитель 6")
            };

            _syncCancel        = new object();
            _cancel            = true;
            _readingInProgress = false;
        }
        public Group104SettingsViewModel(IUserInterfaceRoot uiRoot, ILogger logger,
                                         IAinSettingsReaderWriter readerWriter, IAinSettingsReadNotify ainSettingsReadNotify,
                                         IAinSettingsStorage storage, IAinSettingsStorageUpdatedNotify storageUpdatedNotify,
                                         IAinsCounter ainsCounter)
        {
            _uiRoot                = uiRoot;
            _logger                = logger;
            _readerWriter          = readerWriter;
            _ainSettingsReadNotify = ainSettingsReadNotify;
            _storage               = storage;
            _storageUpdatedNotify  = storageUpdatedNotify;
            _ainsCounter           = ainsCounter;

            //Parameter01Vm = new ParameterDoubleEditCheckViewModel("104.01. Максимально возможная компенсация потока", "f3", -10000, 10000, null) {Increment = 0.1};
            //Parameter02Vm = new ParameterDoubleEditCheckViewModel("104.02. Минимальный возможный поток (в % от номинала)", "f0", -10000, 10000, null);
            //Parameter03Vm = new ParameterDoubleEditCheckViewModel("104.03. Постоянная времени регулятора компенсации напр-я, мс", "f4", -3.2768, 3.2767, null) { Increment = 0.0001 };
            //Parameter04Vm = new ParameterDoubleEditCheckViewModel("104.04. Порог компенсации напряжения DC за счет потока", "f3", -10000, 10000, null) { Increment = 0.1 };

            ReadSettingsCmd  = new RelayCommand(ReadSettings, () => true); // TODO: read only when connected to COM
            WriteSettingsCmd =
                new RelayCommand(WriteSettings, () => IsWriteEnabled);     // TODO: read only when connected to COM

            _ainSettingsReadNotify.AinSettingsReadComplete += AinSettingsReadNotifyOnAinSettingsReadComplete;
            _storageUpdatedNotify.AinSettingsUpdated       += (zbAinNuber, settings) =>
            {
                _uiRoot.Notifier.Notify(() => WriteSettingsCmd.RaiseCanExecuteChanged());
            };
        }
        public BsEthernetSettingsViewModel(ICommandSenderHost commandSenderHost, ITargetAddressHost targerAddressHost,
                                           IUserInterfaceRoot userInterfaceRoot, ILogger logger, IWindowSystem windowSystem,
                                           INotifySendingEnabled sendingEnabledControl)
        {
            _commandSenderHost     = commandSenderHost;
            _targerAddressHost     = targerAddressHost;
            _userInterfaceRoot     = userInterfaceRoot;
            _logger                = logger;
            _windowSystem          = windowSystem;
            _sendingEnabledControl = sendingEnabledControl;

            _ipAddress     = string.Empty;
            _mask          = string.Empty;
            _gateway       = string.Empty;
            _dnsServer     = string.Empty;
            _macAddress    = string.Empty;
            _modbusAddress = 1;
            _driveNumber   = 0;
            _addressCan    = 0;
            _ftRoles       = new List <FtRoleViewModel>
            {
                new FtRoleViewModel(FriquencyTransformerRole.Single),
                new FtRoleViewModel(FriquencyTransformerRole.Master),
                new FtRoleViewModel(FriquencyTransformerRole.Slave)
            };
            _selectedFtRole = _ftRoles.First();

            _readSettingsCommand  = new RelayCommand(ReadSettings, () => _sendingEnabledControl.IsSendingEnabled);
            _writeSettingsCommand = new RelayCommand(WriteSettings, () => _sendingEnabledControl.IsSendingEnabled);

            ImportSettingCommand = new RelayCommand(ImportSettings);
            ExportSettingCommand = new RelayCommand(ExportSettings);

            _sendingEnabledControl.SendingEnabledChanged += SendingEnabledControlOnSendingEnabledChanged;
        }
Пример #13
0
        public ProgramLogViewModel(IUserInterfaceRoot userInterfaceRoot)
        {
            _userInterfaceRoot = userInterfaceRoot;
            _logLines          = new ObservableCollection <ILogLine>();

            ClearLogCmd        = new RelayCommand(ClearLog);
            _scrollAutomaticly = true;
            _isEnabled         = false;
        }
        public Group105SettingsViewModel(IUserInterfaceRoot uiRoot, ILogger logger,
                                         IAinSettingsReaderWriter readerWriter, /*IAinSettingsReadNotify ainSettingsReadNotify,*/
                                         IAinSettingsStorage storage, IAinSettingsStorageUpdatedNotify storageUpdatedNotify,
                                         IAinsCounter ainsCounter)
        {
            _uiRoot       = uiRoot;
            _logger       = logger;
            _readerWriter = readerWriter;
            //_ainSettingsReadNotify = ainSettingsReadNotify;
            _storage = storage;
            _storageUpdatedNotify = storageUpdatedNotify;
            _ainsCounter          = ainsCounter;

            Parameter01Vm =
                new ParameterDecimalEditCheckViewModel("105.01. Калибровка нуля тока фазы A", "f0", -10000, 10000);
            Parameter02Vm =
                new ParameterDecimalEditCheckViewModel("105.02. Калибровка нуля тока фазы B", "f0", -10000, 10000);
            Parameter03Vm =
                new ParameterDecimalEditCheckViewModel("105.03. Калибровка нуля тока фазы C", "f0", -10000, 10000);
            Parameter04Vm =
                new ParameterDecimalEditCheckViewModel("105.04. Калибровка нуля напряжения шины DC", "f0", -10000,
                                                       10000);

            Parameter101Vm =
                new ParameterDecimalEditCheckViewModel("105.01. Калибровка нуля тока фазы A", "f0", -10000, 10000);
            Parameter102Vm =
                new ParameterDecimalEditCheckViewModel("105.02. Калибровка нуля тока фазы B", "f0", -10000, 10000);
            Parameter103Vm =
                new ParameterDecimalEditCheckViewModel("105.03. Калибровка нуля тока фазы C", "f0", -10000, 10000);
            Parameter104Vm =
                new ParameterDecimalEditCheckViewModel("105.04. Калибровка нуля напряжения шины DC", "f0", -10000,
                                                       10000);

            Parameter201Vm =
                new ParameterDecimalEditCheckViewModel("105.01. Калибровка нуля тока фазы A", "f0", -10000, 10000);
            Parameter202Vm =
                new ParameterDecimalEditCheckViewModel("105.02. Калибровка нуля тока фазы B", "f0", -10000, 10000);
            Parameter203Vm =
                new ParameterDecimalEditCheckViewModel("105.03. Калибровка нуля тока фазы C", "f0", -10000, 10000);
            Parameter204Vm =
                new ParameterDecimalEditCheckViewModel("105.04. Калибровка нуля напряжения шины DC", "f0", -10000,
                                                       10000);

            ReadSettingsCmd  = new RelayCommand(ReadSettings, () => true); // TODO: read only when connected to COM
            WriteSettingsCmd =
                new RelayCommand(WriteSettings, () => IsWriteEnabled);     // TODO: read only when connected to COM

            //_ainSettingsReadNotify.AinSettingsReadComplete += AinSettingsReadNotifyOnAinSettingsReadComplete;
            _storageUpdatedNotify.AinSettingsUpdated += (zbAinNuber, settings) =>
            {
                _uiRoot.Notifier.Notify(() => WriteSettingsCmd.RaiseCanExecuteChanged());
                AinSettingsReadNotifyOnAinSettingsReadComplete(zbAinNuber,
                                                               settings == null ? new Exception("Настройки недоступны") : null, settings);
            };
        }
        public ProgramLogViewModel(IUserInterfaceRoot userInterfaceRoot, IMultiLoggerWithStackTrace <int> debugLogger,
                                   ITextFormatter formatter)
        {
            _userInterfaceRoot = userInterfaceRoot;
            _debugLogger       = debugLogger;
            _formatter         = formatter;
            LogLines           = new ObservableCollection <ILogLine>();

            ClearLogCmd       = new RelayCommand(ClearLog);
            ScrollAutomaticly = true;
        }
 public AinTelemetryViewModel(ICommonAinTelemetryVm commonAinTelemetryVm, byte zeroBasedAinNumber,
                              ICommandSenderHost commandSenderHost, ILogger logger, IUserInterfaceRoot userInterfaceRoot)
 {
     _commonAinTelemetryVm = commonAinTelemetryVm;
     _zeroBasedAinNumber   = zeroBasedAinNumber;
     _commandSenderHost    = commandSenderHost;
     _logger            = logger;
     _userInterfaceRoot = userInterfaceRoot;
     _telemetry         = null;
     _syncCancel        = new object();
     _cancel            = true;
 }
Пример #17
0
        public Group100SettingsViewModel(IUserInterfaceRoot uiRoot, ILogger logger,
                                         IAinSettingsReaderWriter readerWriter, IAinSettingsReadNotify ainSettingsReadNotify,
                                         IAinSettingsStorage storage, IAinSettingsStorageUpdatedNotify storageUpdatedNotify,
                                         IAinsCounter ainsCounter)
        {
            _uiRoot                = uiRoot;
            _logger                = logger;
            _readerWriter          = readerWriter;
            _ainSettingsReadNotify = ainSettingsReadNotify;
            _storage               = storage;
            _storageUpdatedNotify  = storageUpdatedNotify;
            _ainsCounter           = ainsCounter;

            Parameter01Vm =
                new ParameterDecimalEditCheckViewModel("100.01. Пропорциональный коэф. регулятора тока D , ID Kp", "f8",
                                                       -128.0m, 127.99609375m)
            {
                Increment = 0.00390625m
            };
            Parameter02Vm =
                new ParameterDecimalEditCheckViewModel("100.02. Интегральный коэф. регулятора тока D , ID Ki", "f6",
                                                       -128.0m, 128.0m)
            {
                Increment = 0.000001m
            };                                                // min step = 1 / 16777216.0 = 0,000000059604644775390625

            Parameter03Vm =
                new ParameterDecimalEditCheckViewModel("100.03. Пропорциональный коэф. регулятора тока Q , IQ Kp", "f8",
                                                       -128.0m, 127.99609375m)
            {
                Increment = 0.00390625m
            };
            Parameter04Vm =
                new ParameterDecimalEditCheckViewModel("100.04. Интегральный коэф. регулятора тока Q , IQ Ki", "f6",
                                                       -128.0m, 128.0m)
            {
                Increment = 0.000001m
            };                                                // min step = 1 / 16777216.0 = 0,000000059604644775390625


            ReadSettingsCmd  = new RelayCommand(ReadSettings, () => true); // TODO: read only when connected to COM
            WriteSettingsCmd =
                new RelayCommand(WriteSettings, () => IsWriteEnabled);     // TODO: read only when connected to COM

            _ainSettingsReadNotify.AinSettingsReadComplete += AinSettingsReadNotifyOnAinSettingsReadComplete;
            _storageUpdatedNotify.AinSettingsUpdated       += (zbAinNuber, settings) =>
            {
                _uiRoot.Notifier.Notify(() => WriteSettingsCmd.RaiseCanExecuteChanged());
            };
        }
Пример #18
0
        public Group103SettingsViewModel(IUserInterfaceRoot uiRoot, ILogger logger,
                                         IAinSettingsReaderWriter readerWriter, IAinSettingsReadNotify ainSettingsReadNotify,
                                         IAinSettingsStorage storage, IAinSettingsStorageUpdatedNotify storageUpdatedNotify,
                                         IAinsCounter ainsCounter)
        {
            _uiRoot                = uiRoot;
            _logger                = logger;
            _readerWriter          = readerWriter;
            _ainSettingsReadNotify = ainSettingsReadNotify;
            _storage               = storage;
            _storageUpdatedNotify  = storageUpdatedNotify;
            _ainsCounter           = ainsCounter;

            Parameter01Vm =
                new ParameterDecimalEditCheckViewModel("103.01. Постоянная времени фильтра ОС вычислителя момента [мс]",
                                                       "f4", -3.2768m, 3.2767m)
            {
                Increment = 0.0001m
            };
            Parameter02Vm =
                new ParameterDecimalEditCheckViewModel(
                    "103.02. Постоянная времени фильтра ОС измеренной/вычисленной частоты [мс]", "f4", -3.2768m,
                    3.2767m)
            {
                Increment = 0.0001m
            };
            Parameter03Vm =
                new ParameterDecimalEditCheckViewModel("103.03. Постоянная времени фильтра ОС вычислителя потока [мс]",
                                                       "f4", -3.2768m, 3.2767m)
            {
                Increment = 0.0001m
            };
            Parameter04Vm =
                new ParameterDecimalEditCheckViewModel("103.04. Постоянная времени фильтра канала задания частоты [мс]",
                                                       "f4", -3.2768m, 3.2767m)
            {
                Increment = 0.0001m
            };

            ReadSettingsCmd  = new RelayCommand(ReadSettings, () => true); // TODO: read only when connected to COM
            WriteSettingsCmd =
                new RelayCommand(WriteSettings, () => IsWriteEnabled);     // TODO: read only when connected to COM

            _ainSettingsReadNotify.AinSettingsReadComplete += AinSettingsReadNotifyOnAinSettingsReadComplete;
            _storageUpdatedNotify.AinSettingsUpdated       += (zbAinNuber, settings) =>
            {
                _uiRoot.Notifier.Notify(() => WriteSettingsCmd.RaiseCanExecuteChanged());
            };
        }
Пример #19
0
        public ArchiveViewModel(ICommandSenderHost commandSenderHost, ITargetAddressHost targerAddressHost,
                                IUserInterfaceRoot userInterfaceRoot, ILogger logger, INotifySendingEnabled sendingEnabledControl,
                                byte zeroBasedArchiveNumber)
        {
            _commandSenderHost     = commandSenderHost;
            _targerAddressHost     = targerAddressHost;
            _userInterfaceRoot     = userInterfaceRoot;
            _logger                = logger;
            _sendingEnabledControl = sendingEnabledControl;

            _zeroBasedArchiveNumber = zeroBasedArchiveNumber;

            _readArchive = new RelayCommand(DoReadArchive, () => _sendingEnabledControl.IsSendingEnabled);

            _sendingEnabledControl.SendingEnabledChanged += SendingEnabledControlOnSendingEnabledChanged;
        }
        public EngineAutoSetupViewModel(TableViewModel leftTable, TableViewModel rightTable,
                                        INotifySendingEnabled notifySendingEnabled,
                                        IAinSettingsReader ainSettingsReader, IAinSettingsReadNotify ainSettingsReadNotify,
                                        IAinSettingsWriter ainSettingsWriter,
                                        IUserInterfaceRoot uiRoot, ILogger logger, ICommandSenderHost commandSenderHost,
                                        ITargetAddressHost targetAddressHost, ReadCycleModel bsEthernetReadCycleModel)
        {
            LeftTable              = leftTable;
            RightTable             = rightTable;
            _notifySendingEnabled  = notifySendingEnabled;
            _ainSettingsReader     = ainSettingsReader;
            _ainSettingsReadNotify = ainSettingsReadNotify;
            _ainSettingsWriter     = ainSettingsWriter;
            _uiRoot                   = uiRoot;
            _logger                   = logger;
            _commandSenderHost        = commandSenderHost;
            _targetAddressHost        = targetAddressHost;
            _bsEthernetReadCycleModel = bsEthernetReadCycleModel;

            _needToUpdateLeftTable = true; // on app start we have no settings:

            _isDcTestChecked       = false;
            _isTrTestChecked       = false;
            _isLeakTestChecked     = false;
            _isXxTestChecked       = false;
            _isInertionTestChecked = false;

            _lastLogLine     = null;
            _errorsCount     = 0;
            _lastLogLineText = string.Empty;

            _engineTestParams = new EngineTestParamsBuilderAciIdentifyIni("aci_identify.ini").Build();

            _launchAutoSetupCmd = new RelayCommand(LaunchAutoSetup, CheckLaunchAutoSetupPossible);
            _readTestResultCmd  = new RelayCommand(ReadTestResult, () => _notifySendingEnabled.IsSendingEnabled);

            _writeLeftTestResultCmd =
                new RelayCommand(WriteLeftTestResult, () => _notifySendingEnabled.IsSendingEnabled);
            _writeRightTestResultCmd =
                new RelayCommand(WriteRightTestResult, () => _notifySendingEnabled.IsSendingEnabled);
            // finally subscribing events:
            _notifySendingEnabled.SendingEnabledChanged    += NotifySendingEnabledOnSendingEnabledChanged;
            _ainSettingsReadNotify.AinSettingsReadComplete +=
                AinSettingsReadNotifyOnAinSettingsReadComplete; //.AinSettingsUpdated += AinSettingsStorageUpdatedNotifyOnAinSettingsUpdated;

            _bsEthernetReadCycleModel.AnotherLogLineWasReaded += BsEthernetReadCycleModelOnAnotherLogLineWasReaded;
        }
Пример #21
0
        public Group02ParametersViewModel(ICommandSenderHost commandSenderHost, ITargetAddressHost targerAddressHost,
                                          IUserInterfaceRoot uiRoot, ILogger logger, IParameterLogger parameterLogger)
        {
            _commandSenderHost = commandSenderHost;
            _targerAddressHost = targerAddressHost;
            _uiRoot            = uiRoot;
            _logger            = logger;

            Parameter01Vm = new ParameterDoubleReadonlyViewModel(
                "02.01. Скорость вращения двигателя на выходе задатчика интенсивности [об/мин]", "f0", null,
                parameterLogger);
            Parameter02Vm = new ParameterDoubleReadonlyViewModel(
                "02.02. Скорость вращения двигателя на выходе фильтра канала задания скорости [об/мин]", "f0", null,
                parameterLogger);
            Parameter03Vm =
                new ParameterDoubleReadonlyViewModel("02.03. Заданный поток [%]", "f0", null, parameterLogger);

            Parameter04Vm =
                new ParameterDoubleReadonlyViewModel("02.04. Измеренный поток [%]", "f0", null, parameterLogger);

            Parameter05Vm = new ParameterDoubleReadonlyViewModel("02.05. Отфильтрованный измеренный поток [%]", "f0",
                                                                 null, parameterLogger);
            Parameter06Vm =
                new ParameterDoubleReadonlyViewModel("02.06. Задание моментного тока [А]", "f0", null, parameterLogger);

            Parameter07Vm = new ParameterDoubleReadonlyViewModel("02.07. Задание тока намагничивания [А]", "f0", null,
                                                                 parameterLogger);
            Parameter08Vm = new ParameterDoubleReadonlyViewModel("02.08. Пропорциональная часть регулятора тока D [А]",
                                                                 "f0", null, parameterLogger);
            Parameter09Vm = new ParameterDoubleReadonlyViewModel("02.09. Пропорциональная часть регулятора тока Q [А]",
                                                                 "f0", null, parameterLogger);

            Parameter10Vm =
                new ParameterDoubleReadonlyViewModel("02.10. Пропорциональная часть регулятора скорости [об/мин]", "f0",
                                                     null, parameterLogger);
            Parameter11Vm = new ParameterDoubleReadonlyViewModel("02.11. Пропорциональная часть регулятора потока [%]",
                                                                 "f0", null, parameterLogger);

            ReadCycleCmd     = new RelayCommand(ReadCycleFunc, () => !_readingInProgress); // TODO: check port opened
            StopReadCycleCmd = new RelayCommand(StopReadingFunc, () => _readingInProgress);

            _syncCancel        = new object();
            _cancel            = true;
            _readingInProgress = false;
            _errorCounts       = 0;
        }
        public Group03ParametersViewModel(ICommandSenderHost commandSenderHost, ITargetAddressHost targerAddressHost,
                                          IUserInterfaceRoot uiRoot, ILogger logger, IParameterLogger parameterLogger)
        {
            _commandSenderHost = commandSenderHost;
            _targerAddressHost = targerAddressHost;
            _uiRoot            = uiRoot;
            _logger            = logger;

            Parameter01Vm =
                new ParameterDoubleReadonlyViewModel("03.01. Коэффициент модуляции ШИМ [%]", "f0", null,
                                                     parameterLogger);
            Parameter02Vm =
                new ParameterDoubleReadonlyViewModel("03.02. Выход регулятора тока D [%]", "f0", null, parameterLogger);
            Parameter03Vm =
                new ParameterDoubleReadonlyViewModel("03.03. Выход регулятора тока Q [%]", "f0", null, parameterLogger);

            Parameter04Vm = new ParameterDoubleReadonlyViewModel("03.04. Измеренная составляющая тока D [%]", "f0",
                                                                 null, parameterLogger);
            Parameter05Vm = new ParameterDoubleReadonlyViewModel("03.05. Измеренная составляющая тока Q [%]", "f0",
                                                                 null, parameterLogger);
            Parameter06Vm = new ParameterDoubleReadonlyViewModel(
                "03.06. Выход регулятора компенсатора вычислителя потока D [В]", "f0", null, parameterLogger);
            Parameter07Vm = new ParameterDoubleReadonlyViewModel(
                "03.07. Выход регулятора компенсатора вычислителя потока Q [В]", "f0", null, parameterLogger);

            Parameter08Vm = new ParameterDoubleReadonlyViewModel("03.08. Вспомогательная ячейка №1 АИН1", "f0", null,
                                                                 parameterLogger);
            Parameter09Vm = new ParameterDoubleReadonlyViewModel("03.09. Вспомогательная ячейка №2 АИН1", "f0", null,
                                                                 parameterLogger);

            Parameter10Vm = new ParameterDoubleReadonlyViewModel(
                "03.10. Вычисленное текущее значение теплового показателя двигателя [А^2*c]", "f0", null,
                parameterLogger);
            Parameter11Vm = new ParameterDoubleReadonlyViewModel(
                "03.11. (Ведомый привод) Уставка моментного тока (Выход регулятора скорости) [%]", "f0", null,
                parameterLogger);

            ReadCycleCmd     = new RelayCommand(ReadCycleFunc, () => !_readingInProgress); // TODO: check port opened
            StopReadCycleCmd = new RelayCommand(StopReadingFunc, () => _readingInProgress);

            _syncCancel        = new object();
            _cancel            = true;
            _readingInProgress = false;
            _errorCounts       = 0;
        }
        public Group07ParametersViewModel(ICommandSenderHost commandSenderHost, ITargetAddressHost targerAddressHost,
                                          IUserInterfaceRoot uiRoot, ILogger logger, IParameterLogger parameterLogger)
        {
            _commandSenderHost = commandSenderHost;
            _targerAddressHost = targerAddressHost;
            _uiRoot            = uiRoot;
            _logger            = logger;

            Parameter01Vm = new McwParameterViewModel(parameterLogger);


            ReadCycleCmd     = new RelayCommand(ReadCycleFunc, () => !_readingInProgress); // TODO: check port opened
            StopReadCycleCmd = new RelayCommand(StopReadingFunc, () => _readingInProgress);

            _syncCancel        = new object();
            _cancel            = true;
            _readingInProgress = false;
            _errorCounts       = 0;
        }
        public Group106SettingsViewModel(IUserInterfaceRoot uiRoot, ILogger logger,
                                         IAinSettingsReaderWriter readerWriter, IAinSettingsReadNotify ainSettingsReadNotify,
                                         IAinSettingsStorage storage, IAinSettingsStorageUpdatedNotify storageUpdatedNotify,
                                         IAinsCounter ainsCounter,
                                         ImcwParameterViewModel imcwParameterVm)
        {
            _uiRoot                = uiRoot;
            _logger                = logger;
            _readerWriter          = readerWriter;
            _ainSettingsReadNotify = ainSettingsReadNotify;

            Parameter01Vm = new ParameterHexEditableViewModel("106.01. Каналы ЦАП", "X4", 0, 65535, null);
            Parameter02Vm = imcwParameterVm;
            Parameter03Vm =
                new ParameterDecimalEditCheckViewModel("106.03. Таймаут по системной линии связи", "f0", -10000, 10000);

            ReadSettingsCmd  = new RelayCommand(ReadSettings, () => true);  // TODO: read only when connected to COM
            WriteSettingsCmd = new RelayCommand(WriteSettings, () => true); // TODO: read only when connected to COM

            _ainSettingsReadNotify.AinSettingsReadComplete += AinSettingsReadNotifyOnAinSettingsReadComplete;
        }
        public CoolerTelemetriesViewModel(ICommandSenderHost commandSenderHost, ITargetAddressHost targerAddressHost,
                                          IUserInterfaceRoot userInterfaceRoot, ILogger logger, IMultiLoggerWithStackTrace <int> debugLogger,
                                          IWindowSystem windowSystem)
        {
            _commandSenderHost = commandSenderHost;
            _targerAddressHost = targerAddressHost;
            _userInterfaceRoot = userInterfaceRoot;
            _logger            = logger;
            _debugLogger       = debugLogger;
            _windowSystem      = windowSystem;

            _readCycleCommand   = new RelayCommand(ReadCycle, () => !_readingInProgress);
            _stopReadingCommand = new RelayCommand(StopReading, () => _readingInProgress);

            CoolerTelemetryVm = new CoolerTelemetryViewModel();

            _backWorker = new SingleThreadedRelayQueueWorker <Action>("CoolerTelemetryBackWorker", a => a(),
                                                                      ThreadPriority.BelowNormal, true, null, _debugLogger.GetLogger(0));
            _syncCancel        = new object();
            _cancel            = false;
            _readingInProgress = false;
        }
        public Group09ParametersViewModel(ICommandSenderHost commandSenderHost, ITargetAddressHost targerAddressHost,
                                          IUserInterfaceRoot uiRoot, ILogger logger, IAinsCounter ainsCounter, IParameterLogger parameterLogger)
        {
            _commandSenderHost = commandSenderHost;
            _targerAddressHost = targerAddressHost;
            _uiRoot            = uiRoot;
            _logger            = logger;
            _ainsCounter       = ainsCounter;

            Parameter01Vm =
                new AinBitsParameterViewModel(new ParameterStringReadonlyViewModel("09.01 СТАТУС АИН1", string.Empty),
                                              parameterLogger);
            Parameter02Vm =
                new AinBitsParameterViewModel(new ParameterStringReadonlyViewModel("09.02 СТАТУС АИН2", string.Empty),
                                              parameterLogger);
            Parameter03Vm =
                new AinBitsParameterViewModel(new ParameterStringReadonlyViewModel("09.03 СТАТУС АИН3", string.Empty),
                                              parameterLogger);
            Parameter04Vm =
                new ParameterDoubleReadonlyViewModel("09.04 Текущий код аварии", "f0", null, parameterLogger);
            Parameter05Vm = new ParameterDoubleReadonlyViewModel("09.05 Код последнего сигнала предупреждения.", "f0",
                                                                 null, parameterLogger);
            Parameter06Vm =
                new ParameterDoubleReadonlyViewModel("09.06 Ошибки связи с блоками АИН.", "f0", null, parameterLogger);
            Parameter07Vm = new ParameterDoubleReadonlyViewModel("09.07 (Ведомый привод) Биты ошибок АИН", "f0", null,
                                                                 parameterLogger);


            ReadCycleCmd     = new RelayCommand(ReadCycleFunc, () => !_readingInProgress); // TODO: check port opened
            StopReadCycleCmd = new RelayCommand(StopReadingFunc, () => _readingInProgress);

            _syncCancel        = new object();
            _cancel            = true;
            _readingInProgress = false;
            _errorCounts       = 0;
        }
        public SystemControlViewModel(ICommandSenderHost commandSenderHost, ITargetAddressHost targerAddressHost,
                                      IUserInterfaceRoot userInterfaceRoot, ILogger logger, IWindowSystem windowSystem,
                                      INotifySendingEnabled sendingEnabledControl, ILinkContol linkControl,
                                      TelemetryCommonViewModel commonTelemetryVm)
        {
            _commandSenderHost     = commandSenderHost;
            _targerAddressHost     = targerAddressHost;
            _userInterfaceRoot     = userInterfaceRoot;
            _logger                = logger;
            _windowSystem          = windowSystem;
            _sendingEnabledControl = sendingEnabledControl;
            _linkControl           = linkControl;

            CommonTelemetryVm = commonTelemetryVm;

            _cmdSetBootloader = new RelayCommand(SetBootloader, () => _sendingEnabledControl.IsSendingEnabled);
            CmdRestart        = new RelayCommand(Restart, () => _sendingEnabledControl.IsSendingEnabled);
            CmdFlash          = new RelayCommand(Flash, () => _sendingEnabledControl.IsSendingEnabled);

            _sendingEnabledControl.SendingEnabledChanged += SendingEnabledControlOnSendingEnabledChanged;

            DebugParametersTrendVm = new DebugParametersTrendViewModel();
            DebugParametersVm      = new DebugParametersViewModel();
        }
        public Group99SettingsViewModel(IUserInterfaceRoot uiRoot, ILogger logger,
                                        IAinSettingsReaderWriter ainSettingsReaderWriter, IAinSettingsReadNotify ainSettingsReadNotify,
                                        IAinSettingsStorage ainSettingsStorage, IAinSettingsStorageUpdatedNotify ainSettingsStorageUpdatedNotify,
                                        IAinsCounter ainsCounter,
                                        IEngineSettingsReader engineSettingsReader, IEngineSettingsWriter engineSettingsWriter,
                                        IEngineSettingsReadNotify engineSettingsReadNotify, IEngineSettingsStorage engineSettingsStorage,
                                        IEngineSettingsStorageUpdatedNotify engineSettingsStorageUpdatedNotify,
                                        ImcwParameterViewModel imcwParameterVm)
        {
            _uiRoot = uiRoot;
            _logger = logger;

            _ainSettingsReaderWriter         = ainSettingsReaderWriter;
            _ainSettingsReadNotify           = ainSettingsReadNotify;
            _ainSettingsStorage              = ainSettingsStorage;
            _ainSettingsStorageUpdatedNotify = ainSettingsStorageUpdatedNotify;
            _ainsCounter = ainsCounter;

            _engineSettingsReader               = engineSettingsReader;
            _engineSettingsWriter               = engineSettingsWriter;
            _engineSettingsReadNotify           = engineSettingsReadNotify;
            _engineSettingsStorage              = engineSettingsStorage;
            _engineSettingsStorageUpdatedNotify = engineSettingsStorageUpdatedNotify;

            _imcwParameterVm = imcwParameterVm;


            Parameter01Vm =
                new ParameterDecimalEditCheckViewModel(
                    "99.01. Номинальное напряжение обмотки статора (действующее) [В]", "f0", 0, 10000);
            Parameter02Vm =
                new ParameterDecimalEditCheckViewModel("99.02. Номинальный ток обмотки статора [А]", "f0", 0, 10000);
            Parameter03Vm =
                new ParameterDecimalEditCheckViewModel("99.03. Номинальная частота напряжения питающей сети [Гц]", "f1",
                                                       8, 300);
            Parameter04Vm =
                new ParameterDecimalEditCheckViewModel("99.04. Номинальная скорость вращения двигателя [об/мин]", "f0",
                                                       0, 18000);
            Parameter05Vm =
                new ParameterDecimalEditCheckViewModel("99.05. Максимальная скорость вращения двигателя [об/мин]", "f0",
                                                       0, 18000);
            Parameter06Vm =
                new ParameterDecimalEditCheckViewModel("99.06. Номинальная мощность на валу двигателя [кВт]", "f3", 0,
                                                       9000);
            Parameter07Vm = new ParameterComboEditableViewModel <int>("99.07. Режим управления двигателем",
                                                                      new[]
            {
                new ComboItemViewModel <int> {
                    ComboText = "Скалярный", ComboValue = 0
                },
                new ComboItemViewModel <int> {
                    ComboText = "Векторный", ComboValue = 1
                }
            });
            Parameter07Vm.PropertyChanged += Parameter07VmOnPropertyChanged;

            _imcwParameterVm.PropertyChanged += ImcwParameterVmOnPropertyChanged;

            Parameter08Vm =
                new ParameterDecimalEditCheckViewModel("99.08. Номинальный коэффициент мощности cos(ϕ)", "f2", 0, 1.0m);
            Parameter09Vm =
                new ParameterDecimalEditCheckViewModel("99.09. Номинальный КПД двигателя [%]", "f1", 0, 100.0m);
            Parameter10Vm = new ParameterDecimalEditCheckViewModel("99.10. Масса двигателя [кг]", "f0", 0, 10000);
            Parameter11Vm = new ParameterDecimalEditCheckViewModel("99.11. Кратность максимального момента (Mmax/Mnom)",
                                                                   "f0", 0, 10000);
            Parameter12Vm = new ParameterDecimalEditCheckViewModel("99.12. Конструктивная высота [мм]", "f0", 0, 10000);

            ReadSettingsCmd  = new RelayCommand(ReadSettings, () => true); // TODO: read only when connected to COM
            WriteSettingsCmd =
                new RelayCommand(WriteSettings, () => IsWriteEnabled);     // TODO: read only when connected to COM

            _ainSettingsReadNotify.AinSettingsReadComplete      += AinSettingsReadNotifyOnAinSettingsReadComplete;
            _ainSettingsStorageUpdatedNotify.AinSettingsUpdated += (zbAinNuber, settings) =>
            {
                _uiRoot.Notifier.Notify(() => WriteSettingsCmd.RaiseCanExecuteChanged());
            };

            _engineSettingsReadNotify.EngineSettingsReadComplete +=
                EngineSettingsReadNotifyOnEngineSettingsReadComplete;
            _engineSettingsStorageUpdatedNotify.EngineSettingsUpdated += settings =>
            {
                _uiRoot.Notifier.Notify(() => WriteSettingsCmd.RaiseCanExecuteChanged());
            };
        }
Пример #29
0
        public AinCommandAndMinimalCommonTelemetryViewModel(ICommandSenderHost commandSenderHost,
                                                            ITargetAddressHost targerAddressHost, IUserInterfaceRoot userInterfaceRoot, ILogger logger,
                                                            INotifySendingEnabled sendingEnabledControl, byte zeroBasedAinNumber,
                                                            IAinSettingsStorage ainSettingsStorage, IAinSettingsStorageUpdatedNotify storageUpdatedNotify)
        {
            _commandSenderHost     = commandSenderHost;
            _targerAddressHost     = targerAddressHost;
            _userInterfaceRoot     = userInterfaceRoot;
            _logger                = logger;
            _sendingEnabledControl = sendingEnabledControl;
            _zeroBasedAinNumber    = zeroBasedAinNumber;
            _ainSettingsStorage    = ainSettingsStorage;
            _storageUpdatedNotify  = storageUpdatedNotify;

            _fset      = 0;
            _mset      = 0;
            _set3      = 0;
            _mmin      = -600;
            _mmax      = 600;
            _telemetry = null;

            _sendAinCommandOff1     = new RelayCommand(SendAinCmdOff1, () => IsSendingEnabled);
            _sendAinCommandOff2     = new RelayCommand(SendAinCmdOff2, () => IsSendingEnabled);
            _sendAinCommandOff3     = new RelayCommand(SendAinCmdOff3, () => IsSendingEnabled);
            _sendAinCommandRun      = new RelayCommand(SendAinCmdRun, () => IsSendingEnabled);
            _sendAinCommandInching1 = new RelayCommand(SendAinCmdInching1, () => IsSendingEnabled);
            _sendAinCommandInching2 = new RelayCommand(SendAinCmdInching2, () => IsSendingEnabled);
            _sendAinCommandReset    = new RelayCommand(SendAinCmdReset, () => IsSendingEnabled);
            SendAinCommandBits      = new RelayCommand(SendAinCmdBits, () => IsSendingEnabled);


            _cmdSub10FsetHz = new RelayCommand(() =>
            {
                if (FsetHz.HasValue)
                {
                    FsetHz -= 1;
                }
            }, () => IsSendingEnabled);
            _cmdSub01FsetHz = new RelayCommand(() =>
            {
                if (FsetHz.HasValue)
                {
                    FsetHz -= 0.1m;
                }
            }, () => IsSendingEnabled);
            _cmdSetFsetHzToZero = new RelayCommand(() => FsetHz = 0.0m, () => IsSendingEnabled);
            _cmdAdd01FsetHz     = new RelayCommand(() =>
            {
                if (FsetHz.HasValue)
                {
                    FsetHz += 0.1m;
                }
            }, () => IsSendingEnabled);
            _cmdAdd10FsetHz = new RelayCommand(() =>
            {
                if (FsetHz.HasValue)
                {
                    FsetHz += 1.0m;
                }
            }, () => IsSendingEnabled);


            _sendingEnabledControl.SendingEnabledChanged += sendingEnabled =>
            {
                SendingEnabledControlOnSendingEnabledChanged();
            };

            _storageUpdatedNotify.AinSettingsUpdated += (ainNumber, settings) =>
            {
                if (ainNumber == 0)
                {
                    SendingEnabledControlOnSendingEnabledChanged();
                    RaisePropertyChanged(() => Fset);
                    RaisePropertyChanged(() => FsetHz);
                    RaisePropertyChanged(() => FsetSmallChange);
                    RaisePropertyChanged(() => FsetSmallChangeOrOne);
                    RaisePropertyChanged(() => FsetMax);
                    RaisePropertyChanged(() => FsetMin);
                    RaisePropertyChanged(() => NegativeMaximumFreqSet);
                    RaisePropertyChanged(() => PositiveMaximumFreqSet);
                    RaisePropertyChanged(() => TickFreqSet);
                }
            };
        }
Пример #30
0
        public OldLookViewModel(IUserInterfaceRoot userInterfaceRoot, IWindowSystem windowSystem,
                                ICommandSenderHost commanSenderHost, ITargetAddressHost targetAddressHost,
                                INotifySendingEnabled notifySendingEnabled, ILinkContol linkContol, ILogger logger,
                                IMultiLoggerWithStackTrace <int> debugLogger, ICycleThreadHolder cycleThreadHolder, IAinsCounter ainsCounter,
                                IParameterLogger parameterLogger, IAinSettingsStorage ainSettingsStorage,
                                IAinSettingsStorageUpdatedNotify storageUpdatedNotify)
        {
            _ainSettingsStorage   = ainSettingsStorage;
            _storageUpdatedNotify = storageUpdatedNotify;
            var commonTelemetryVm = new TelemetryCommonViewModel();

            BsEthernetSettingsVm = new BsEthernetSettingsViewModel(commanSenderHost, targetAddressHost,
                                                                   userInterfaceRoot, logger, windowSystem, notifySendingEnabled);
            BsEthernetNominalsVm = new BsEthernetNominalsViewModel(commanSenderHost, targetAddressHost,
                                                                   userInterfaceRoot, logger, windowSystem, notifySendingEnabled);

            SystemControlVm = new SystemControlViewModel(commanSenderHost, targetAddressHost, userInterfaceRoot, logger,
                                                         windowSystem, notifySendingEnabled, linkContol, commonTelemetryVm);

            var ain1TelemetryVm =
                new AinTelemetryViewModel(commonTelemetryVm, 0, commanSenderHost, logger, userInterfaceRoot);
            var ain2TelemetryVm =
                new AinTelemetryViewModel(commonTelemetryVm, 1, commanSenderHost, logger, userInterfaceRoot);
            var ain3TelemetryVm =
                new AinTelemetryViewModel(commonTelemetryVm, 2, commanSenderHost, logger, userInterfaceRoot);

            AinTelemetriesVm = new AinTelemetriesViewModel(commanSenderHost, targetAddressHost, userInterfaceRoot,
                                                           logger, windowSystem, SystemControlVm, commonTelemetryVm, ain1TelemetryVm, ain2TelemetryVm,
                                                           ain3TelemetryVm); // TODO: sending enabled control?

            cycleThreadHolder.RegisterAsCyclePart(ain1TelemetryVm);
            cycleThreadHolder.RegisterAsCyclePart(ain2TelemetryVm);
            cycleThreadHolder.RegisterAsCyclePart(ain3TelemetryVm);
            cycleThreadHolder.RegisterAsCyclePart(AinTelemetriesVm);

            var ain1CommandOnlyVm = new AinCommandAndMinimalCommonTelemetryViewModel(commanSenderHost,
                                                                                     targetAddressHost, userInterfaceRoot, logger, notifySendingEnabled, 0, _ainSettingsStorage,
                                                                                     _storageUpdatedNotify);
            var ain2CommandOnlyVm = new AinCommandAndMinimalCommonTelemetryViewModel(commanSenderHost,
                                                                                     targetAddressHost, userInterfaceRoot, logger, notifySendingEnabled, 1, _ainSettingsStorage,
                                                                                     _storageUpdatedNotify);
            var ain3CommandOnlyVm = new AinCommandAndMinimalCommonTelemetryViewModel(commanSenderHost,
                                                                                     targetAddressHost, userInterfaceRoot, logger, notifySendingEnabled, 2, _ainSettingsStorage,
                                                                                     _storageUpdatedNotify);

            Ain1CommandVm =
                new AinCommandViewModel(ain1CommandOnlyVm, commonTelemetryVm, ain1TelemetryVm, AinTelemetriesVm);
            Ain2CommandVm =
                new AinCommandViewModel(ain2CommandOnlyVm, commonTelemetryVm, ain2TelemetryVm, AinTelemetriesVm);
            Ain3CommandVm =
                new AinCommandViewModel(ain3CommandOnlyVm, commonTelemetryVm, ain3TelemetryVm, AinTelemetriesVm);

            Ain1SettingsVm = new AinSettingsViewModel(commanSenderHost, targetAddressHost, userInterfaceRoot, logger,
                                                      windowSystem, notifySendingEnabled, 0);
            Ain2SettingsVm = new AinSettingsViewModel(commanSenderHost, targetAddressHost, userInterfaceRoot, logger,
                                                      windowSystem, notifySendingEnabled, 1);
            Ain3SettingsVm = new AinSettingsViewModel(commanSenderHost, targetAddressHost, userInterfaceRoot, logger,
                                                      windowSystem, notifySendingEnabled, 2);

            RectifierTelemetriesVm = new RectifierTelemetriesViewModel(commanSenderHost, targetAddressHost,
                                                                       userInterfaceRoot, logger, windowSystem); // TODO: sending enabled control?
            cycleThreadHolder.RegisterAsCyclePart(RectifierTelemetriesVm);

            CoolerTelemetriesVm = new CoolerTelemetriesViewModel(commanSenderHost, targetAddressHost, userInterfaceRoot,
                                                                 logger, debugLogger, windowSystem); // TODO: sending enabled control?

            EngineSettingsVm = new EngineSettingsViewModel(commanSenderHost, targetAddressHost, userInterfaceRoot,
                                                           logger, windowSystem, notifySendingEnabled);
        }