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