コード例 #1
0
        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;
        }
コード例 #2
0
        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;
        }
コード例 #3
0
        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;
        }
コード例 #4
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;
        }
コード例 #5
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;
        }
コード例 #6
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;
        }
コード例 #7
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;
        }
コード例 #8
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);
        }
コード例 #9
0
 public EngineSettingsWriter(ICommandSenderHost commandSenderHost, ITargetAddressHost targerAddressHost,
                             IEngineSettingsReader engineSettingsReader)
 {
     _commandSenderHost    = commandSenderHost;
     _targerAddressHost    = targerAddressHost;
     _engineSettingsReader = engineSettingsReader;
     _writeSettingsTimeout = TimeSpan.FromMilliseconds(200.0);
 }
コード例 #10
0
 public AutoTimeSetter(ICommandSenderHost commandSenderHost, INotifySendingEnabled notifySendingEnabled,
                       ITargetAddressHost targetAddressHost, ILogger logger)
 {
     _commandSenderHost    = commandSenderHost;
     _notifySendingEnabled = notifySendingEnabled;
     _targetAddressHost    = targetAddressHost;
     _logger = logger;
     _notifySendingEnabled.SendingEnabledChanged += NotifySendingEnabledOnSendingEnabledChanged;
 }
コード例 #11
0
 public DeviceConnectionModel(
     ICommandSenderHostSettable commandSenderHostSettable,
     ICommandSenderHost commandSenderHost,
     ITargetAddressHost targetAddressHost,
     INotifySendingEnabledRaisable notifySendingEnabled)
 {
     _commandSenderHostSettable = commandSenderHostSettable;
     _commandSenderHost         = commandSenderHost;
     _targetAddressHost         = targetAddressHost;
     _notifySendingEnabled      = notifySendingEnabled;
 }
コード例 #12
0
 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;
 }
コード例 #13
0
        public AinSettingsWriter(ICommandSenderHost commandSenderHost, ITargetAddressHost targerAddressHost,
                                 IAinsCounter ainsCounter, IAinSettingsReader ainSettingsReader)
        {
            _commandSenderHost = commandSenderHost;
            _targerAddressHost = targerAddressHost;
            _ainsCounter       = ainsCounter;
            _ainSettingsReader = ainSettingsReader;

            _ainsCountSyncObject = new object();

            _writeSettingsTimeout = TimeSpan.FromMilliseconds(300.0);
        }
コード例 #14
0
 public EngineSettingsReader(ICommandSenderHost commandSenderHost, ITargetAddressHost targerAddressHost,
                             ILogger logger,
                             IEngineSettingsStorageSettable settingsStorageSettable, IMultiLoggerWithStackTrace <int> debugLogger)
 {
     _commandSenderHost       = commandSenderHost;
     _targerAddressHost       = targerAddressHost;
     _logger                  = logger;
     _settingsStorageSettable = settingsStorageSettable;
     _readSettingsTimeout     = TimeSpan.FromMilliseconds(200.0);
     _notifyWorker            = new SingleThreadedRelayQueueWorker <Action>("EngineSettingsReaderNotify", a => a(),
                                                                            ThreadPriority.BelowNormal, true, null, debugLogger.GetLogger(0));
 }
コード例 #15
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;
        }
コード例 #16
0
        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;
        }
コード例 #17
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;
        }
コード例 #18
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;
        }
コード例 #19
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;
        }
コード例 #20
0
        public ReadCycleModel(ICommandSenderHost commandSenderHost,
                              ITargetAddressHost targetAddressHost, INotifySendingEnabled notifySendingEnabled)
        {
            _commandSenderHost    = commandSenderHost;
            _targetAddressHost    = targetAddressHost;
            _notifySendingEnabled = notifySendingEnabled;
            _notifySendingEnabled.SendingEnabledChanged += NotifySendingEnabledOnSendingEnabledChanged;

            _syncStop    = new object();
            _syncEnabled = new object();

            _isReadCycleEnabled      = true;
            _isStopFlagRaised        = false;
            _conditionsChangedWaiter = new ManualResetEventSlim(false);

            _backgroundThread = new Thread(ReadLogsCycle)
            {
                Priority = ThreadPriority.BelowNormal, IsBackground = true
            };
            _backgroundThread.Start();
        }
コード例 #21
0
        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;
        }
コード例 #22
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();
        }
コード例 #23
0
        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;
        }
コード例 #24
0
        public AinSettingsViewModel(ICommandSenderHost commandSenderHost, ITargetAddressHost targerAddressHost,
                                    IUserInterfaceRoot userInterfaceRoot, ILogger logger, IWindowSystem windowSystem,
                                    INotifySendingEnabled sendingEnabledControl, byte zeroBasedAinNumber)
        {
            _commandSenderHost     = commandSenderHost;
            _targerAddressHost     = targerAddressHost;
            _userInterfaceRoot     = userInterfaceRoot;
            _logger                = logger;
            _windowSystem          = windowSystem;
            _sendingEnabledControl = sendingEnabledControl;
            _zeroBasedAinNumber    = zeroBasedAinNumber;

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

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

            Reserved00 = null; // 0
            KpW        = null; // 1
            KiW        = null; // 2 3
            FiNom      = null; // 4
            Imax       = null; // 5
            UdcMax     = null; // 6
            UdcMin     = null; // 7
            Fnom       = null; // 8
            Fmax       = null; // 9

            DflLim   = null;   // 10
            FlMinMin = null;   // 11

            IoutMax = null;    //12
            FiMin   = null;    // 13
            DacCh   = null;    // 14
            Imcw    = null;    // 15

            Ia0  = null;       // 16
            Ib0  = null;       // 17
            Ic0  = null;       // 18
            Udc0 = null;       // 19
            TauR = null;       // 20

            Lm  = null;        // 21
            Lsl = null;        // 22
            Lrl = null;        // 23

            Reserved24 = null; // 24
            KpFi       = null; // 25
            KiFi       = null; // 26-27

            Reserved28 = null; // 28
            KpId       = null; // 29
            KiId       = null; // 30-31

            Reserved32 = null; // 32
            KpIq       = null; // 33
            KiIq       = null; // 34-35

            AccDfDt = null;    // 36
            DecDfDt = null;    // 37
            Unom    = null;    // 38
            UnomD   = null;

            TauFlLim = null;      // 39

            Rs   = null;          // 40
            Fmin = null;          // 41

            TauM    = null;       // 42
            TauF    = null;       // 43
            TauFSet = null;       // 44
            TauFi   = null;       // 45

            IdSetMin = null;      // 46
            IdSetMax = null;      // 47

            UchMin = null;        // 48
            UchMax = null;        // 49

            Reserved50 = null;    // 50
            Reserved51 = null;    // 51

            Np            = null; // 52.0-4
            NimpFloorCode = null; // 52.5-7
            FanMode       = null; //52.8-15

            UmodThr = null;       // 53

            EmdecDfdt = null;     // 54
            TextMax   = null;     // 55
            ToHl      = null;     // 56


            _sendingEnabledControl.SendingEnabledChanged += SendingEnabledControlOnSendingEnabledChanged;
        }
コード例 #25
0
        public MainViewModel(IUserInterfaceRoot uiRoot, IWindowSystem windowSystem, List <Color> colors,
                             ICommandSenderHostSettable commandSenderHostSettable, ITargetAddressHost targetAddressHost,
                             IMultiLoggerWithStackTrace <int> debugLogger, ILoggerRegistrationPoint loggerRegistrationPoint,
                             INotifySendingEnabledRaisable notifySendingEnabled, IParameterLogger paramLogger,
                             IAinsCounterRaisable ainsCounterRaisable,
                             ICycleThreadHolder cycleThreadHolder,
                             IAinSettingsReader ainSettingsReader, IAinSettingsReadNotify ainSettingsReadNotify,
                             IAinSettingsReadNotifyRaisable ainSettingsReadNotifyRaisable, IAinSettingsWriter ainSettingsWriter,
                             IAinSettingsStorage ainSettingsStorage, IAinSettingsStorageSettable ainSettingsStorageSettable,
                             IAinSettingsStorageUpdatedNotify storageUpdatedNotify,
                             ReadCycleModel bsEthernetReadCycleModel,
                             IEngineSettingsReader engineSettingsReader,
                             IEngineSettingsWriter engineSettingsWriter,
                             IEngineSettingsReadNotify engineSettingsReadNotify,
                             IEngineSettingsReadNotifyRaisable engineSettingsReadNotifyRaisable,
                             IEngineSettingsStorage engineSettingsStorage,
                             IEngineSettingsStorageSettable engineSettingsStorageSettable,
                             IEngineSettingsStorageUpdatedNotify engineSettingsStorageUpdatedNotify)
        {
            _uiRoot = uiRoot;
            _colors = colors;

            _commandSenderHostSettable = commandSenderHostSettable;
            _commandSenderHost         = commandSenderHostSettable;
            _targetAddressHost         = targetAddressHost;

            _isPortOpened = false;

            // Лог программы:
            _debugLogger             = debugLogger;
            _loggerRegistrationPoint = loggerRegistrationPoint;

            // разрешение к отправке (COM-порт открыт/закрыт)
            _notifySendingEnabled = notifySendingEnabled;

            ProgramLogVm = new ProgramLogViewModel(_uiRoot, _debugLogger, new DateTimeFormatter(" > "));
            _logger      = new RelayLogger(ProgramLogVm);
            _loggerRegistrationPoint.RegisterLoggegr(_logger);

            GetPortsAvailable();

            OpenPortCommand          = new RelayCommand(OpenPort, () => !_isPortOpened);
            ClosePortCommand         = new RelayCommand(ClosePort, () => _isPortOpened);
            GetPortsAvailableCommand = new RelayCommand(GetPortsAvailable);

            _paramLogger = paramLogger;


            _ainsCounterRaisable   = ainsCounterRaisable;
            _cycleThreadHolder     = cycleThreadHolder;
            _ainSettingsReader     = ainSettingsReader;
            _ainSettingsReadNotify = ainSettingsReadNotify;
            _ainSettingsWriter     = ainSettingsWriter;

            // Блоки АИН в системе:
            AinsCountInSystem = new List <int> {
                1, 2, 3
            };
            SelectedAinsCount = AinsCountInSystem.First();

            var ainSettingsReadedWriter = new AinSettingsReaderWriter(_ainSettingsReader, _ainSettingsWriter);

            _engineSettingsReader               = engineSettingsReader;
            _engineSettingsWriter               = engineSettingsWriter;
            _engineSettingsReadNotify           = engineSettingsReadNotify;
            _engineSettingsReadNotifyRaisable   = engineSettingsReadNotifyRaisable;
            _engineSettingsStorage              = engineSettingsStorage;
            _engineSettingsStorageSettable      = engineSettingsStorageSettable;
            _engineSettingsStorageUpdatedNotify = engineSettingsStorageUpdatedNotify;


            AinCommandAndCommonTelemetryVm = new AinCommandAndCommonTelemetryViewModel(
                new AinCommandAndMinimalCommonTelemetryViewModel(_commandSenderHost, _targetAddressHost, _uiRoot,
                                                                 _logger, _notifySendingEnabled, 0, ainSettingsStorage, storageUpdatedNotify),
                new TelemetryCommonViewModel(), _commandSenderHost, _targetAddressHost, _uiRoot, _notifySendingEnabled);

            _cycleThreadHolder.RegisterAsCyclePart(AinCommandAndCommonTelemetryVm);

            TelemtryVm = new TelemetryViewModel(_uiRoot, _commandSenderHost, _targetAddressHost, _logger,
                                                _cycleThreadHolder, _ainsCounterRaisable, _paramLogger, _notifySendingEnabled);

            SettingsVm = new SettingsViewModel(_uiRoot, _logger,
                                               ainSettingsReadedWriter, _ainSettingsReadNotify, ainSettingsReadNotifyRaisable, ainSettingsStorage,
                                               ainSettingsStorageSettable, storageUpdatedNotify, _ainsCounterRaisable,
                                               _commandSenderHost, _targetAddressHost, _notifySendingEnabled,
                                               _engineSettingsReader,
                                               _engineSettingsWriter,
                                               _engineSettingsReadNotify,
                                               _engineSettingsReadNotifyRaisable,
                                               _engineSettingsStorage,
                                               _engineSettingsStorageSettable,
                                               _engineSettingsStorageUpdatedNotify,
                                               _debugLogger); // TODO: can be moved to app.xaml.cs if needed

            ArchiveVm = new ArchivesViewModel(
                new ArchiveViewModel(_commandSenderHost, _targetAddressHost, _uiRoot, _logger, _notifySendingEnabled,
                                     0),
                new ArchiveViewModel(_commandSenderHost, _targetAddressHost, _uiRoot, _logger, _notifySendingEnabled,
                                     1));

            MnemonicChemeVm =
                new MnemonicChemeViewModel(Path.Combine(Environment.CurrentDirectory, "mnemoniccheme.png"));
            OldLookVm = new OldLookViewModel(_uiRoot, windowSystem, _commandSenderHost, _targetAddressHost,
                                             _notifySendingEnabled, this, _logger, _debugLogger, _cycleThreadHolder, _ainsCounterRaisable,
                                             _paramLogger, ainSettingsStorage, storageUpdatedNotify);

            _ain1StateColor = Colors.Gray;
            _ain2StateColor = Colors.Gray;
            _ain3StateColor = Colors.Gray;

            _ain1IsUsed = true;
            _ain2IsUsed = false;
            _ain3IsUsed = false;

            _ainsCounterRaisable.AinsCountInSystemHasBeenChanged += ainsCount =>
            {
                switch (ainsCount)
                {
                case 1:
                    Ain1IsUsed = true;
                    Ain2IsUsed = false;
                    Ain3IsUsed = false;
                    break;

                case 2:
                    Ain1IsUsed = true;
                    Ain2IsUsed = true;
                    Ain3IsUsed = false;
                    break;

                case 3:
                    Ain1IsUsed = true;
                    Ain2IsUsed = true;
                    Ain3IsUsed = true;
                    break;

                default:
                    throw new Exception("Такое число АИН в системе не поддерживается");
                }
            };

            AinCommandAndCommonTelemetryVm.AinsLinkInformationHasBeenUpdated += (ain1Error, ain2Error, ain3Error) =>
            {
                Ain1StateColor = ain1Error.HasValue ? ain1Error.Value ? Colors.Red : Colors.YellowGreen : Colors.Gray;
                Ain2StateColor = ain2Error.HasValue ? ain2Error.Value ? Colors.Red : Colors.YellowGreen : Colors.Gray;
                Ain3StateColor = ain3Error.HasValue ? ain3Error.Value ? Colors.Red : Colors.YellowGreen : Colors.Gray;
            };

            _notifySendingEnabled.SendingEnabledChanged += isEnabled =>
            {
                // TODO: execution in ui thread
                Ain1StateColor = Colors.Gray;
                Ain2StateColor = Colors.Gray;
                Ain3StateColor = Colors.Gray;
            };

            EngineAutoSetupVm = new EngineAutoSetupViewModel(
                new TableViewModel("Начальные значения:", _logger),
                new TableViewModel("После тестирования:", _logger),
                _notifySendingEnabled, _ainSettingsReader, _ainSettingsReadNotify, _ainSettingsWriter, _uiRoot, _logger,
                _commandSenderHost, _targetAddressHost, bsEthernetReadCycleModel);

            _logger.Log("Программа загружена");
        }
コード例 #26
0
        public Group01ParametersViewModel(ICommandSenderHost commandSenderHost, ITargetAddressHost targerAddressHost,
                                          IUserInterfaceRoot uiRoot, ILogger logger, IAinsCounter ainsCounter, IParameterLogger parameterLogger)
        {
            _commandSenderHost = commandSenderHost;
            _targerAddressHost = targerAddressHost;
            _uiRoot            = uiRoot;
            _logger            = logger;
            _ainsCounter       = ainsCounter;

            Parameter01Vm =
                new ParameterDoubleReadonlyViewModel("01.01. Вычисленная скорость вращения двигателя [об/мин]", "f0",
                                                     null, parameterLogger);
            Parameter02Vm = new ParameterDoubleReadonlyViewModel(
                "01.02. Скорость вращения двигателя, измеренная датчиком скорости [об/мин]", "f0", null,
                parameterLogger);
            Parameter03Vm = new ParameterDoubleReadonlyViewModel(
                "01.03. Отфильтрованная измеренная/вычисленная скорость в канале ОС [об/мин]", "f0", null,
                parameterLogger);

            Parameter04Vm = new ParameterDoubleReadonlyViewModel("01.04. Измеренный ток обмотки статора [A]", "f0",
                                                                 null, parameterLogger);

            Parameter05Vm = new ParameterDoubleReadonlyViewModel("01.05. Напряжение в звене постоянного тока [В]", "f0",
                                                                 null, parameterLogger); // TODO: спросить Марата, в процентах или как задаётся момент.
            Parameter06Vm =
                new ParameterDoubleReadonlyViewModel("01.06. Напряжение шины DC [В]", "f0", null, parameterLogger);

            Parameter07Vm = new ParameterDoubleReadonlyViewModel("01.07. Температура радиатора АИН1 [град С]", "f0",
                                                                 null, parameterLogger);
            Parameter08Vm = new ParameterDoubleReadonlyViewModel("01.08. Температура радиатора АИН2 [град С]", "f0",
                                                                 null, parameterLogger);
            Parameter09Vm = new ParameterDoubleReadonlyViewModel("01.09. Температура радиатора АИН3 [град С]", "f0",
                                                                 null, parameterLogger);

            Parameter10Vm = new ParameterDoubleReadonlyViewModel("01.10. Температура внешняя АИН1 [град С]", "f0", null,
                                                                 parameterLogger);
            Parameter11Vm = new ParameterDoubleReadonlyViewModel("01.11. Температура внешняя АИН2 [град С]", "f0", null,
                                                                 parameterLogger);
            Parameter12Vm = new ParameterDoubleReadonlyViewModel("01.12. Температура внешняя АИН3 [град С]", "f0", null,
                                                                 parameterLogger);

            Parameter13Vm = new ParameterDoubleReadonlyViewModel("01.13. Измеренный момент на валу двигателя [Нм]",
                                                                 "f0", null, parameterLogger);
            Parameter14Vm = new ParameterDoubleReadonlyViewModel(
                "01.14. Отфильтрованный измеренный момент на валу двигателя [Нм]", "f0", null, parameterLogger);

            Parameter15Vm =
                new ParameterDoubleReadonlyViewModel("01.15. Задание моментного тока [%]", "f0", null, parameterLogger);
            Parameter16Vm = new ParameterDoubleReadonlyViewModel("01.16. Мгновенная мощность на валу двигателя [кВт]",
                                                                 "f0", null, parameterLogger);

            Parameter17Vm =
                new ParameterDoubleReadonlyViewModel("01.17. Состояние цифровых входов", "f0", null, parameterLogger);
            Parameter18Vm =
                new ParameterDoubleReadonlyViewModel("01.18. Состояние релейных выходов", "f0", null, parameterLogger);

            Parameter19Vm = new ParameterDoubleReadonlyViewModel(
                "01.19. Активный режим регулирования (Управление по скорости/Управление крутящим моментом)", "f0", null,
                parameterLogger);                                                          // (0 – регулятор скорости, 1 – внешний момент, 2 – их сумма, 3 - 0 )

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

            _syncCancel        = new object();
            _cancel            = true;
            _readingInProgress = false;
            _errorCounts       = 0;
        }
コード例 #27
0
        public SettingsViewModel(
            IUserInterfaceRoot userInterfaceRoot,
            ILogger logger,
            IAinSettingsReaderWriter ainSettingsReadedWriter,
            IAinSettingsReadNotify ainSettingsReadNotify,
            IAinSettingsReadNotifyRaisable ainSettingsReadNotifyRaisable,
            IAinSettingsStorage ainSettingsStorage,
            IAinSettingsStorageSettable ainSettingsStorageSettable,
            IAinSettingsStorageUpdatedNotify storageUpdatedNotify,
            IAinsCounter ainsCounter,
            ICommandSenderHost commandSenderHost,
            ITargetAddressHost targetAddressHost,
            INotifySendingEnabled notifySendingEnabled,
            IEngineSettingsReader engineSettingsReader,
            IEngineSettingsWriter engineSettingsWriter,
            IEngineSettingsReadNotify engineSettingsReadNotify,
            IEngineSettingsReadNotifyRaisable engineSettingsReadNotifyRaisable,
            IEngineSettingsStorage engineSettingsStorage,
            IEngineSettingsStorageSettable engineSettingsStorageSettable,
            IEngineSettingsStorageUpdatedNotify engineSettingsStorageUpdatedNotify,
            IMultiLoggerWithStackTrace <int> debugLogger)
        {
            Group20SettingsVm = new Group20SettingsViewModel(userInterfaceRoot, logger, ainSettingsReadedWriter,
                                                             ainSettingsReadNotify, ainSettingsStorage, storageUpdatedNotify, ainsCounter,
                                                             engineSettingsReader, engineSettingsWriter, engineSettingsReadNotify, engineSettingsStorage,
                                                             engineSettingsStorageUpdatedNotify);

            Group22SettingsVm = new Group22SettingsViewModel(userInterfaceRoot, logger, ainSettingsReadedWriter,
                                                             ainSettingsReadNotify, ainSettingsStorage, storageUpdatedNotify, ainsCounter);
            Group23SettingsVm = new Group23SettingsViewModel(userInterfaceRoot, logger, ainSettingsReadedWriter,
                                                             ainSettingsReadNotify, ainSettingsStorage, storageUpdatedNotify, ainsCounter);
            Group24SettingsVm = new Group24SettingsViewModel(userInterfaceRoot, logger, ainSettingsReadedWriter,
                                                             ainSettingsReadNotify, ainSettingsStorage, storageUpdatedNotify, ainsCounter);
            Group25SettingsVm = new Group25SettingsViewModel(userInterfaceRoot, logger, ainSettingsReadedWriter,
                                                             ainSettingsReadNotify, ainSettingsStorage, storageUpdatedNotify, ainsCounter);
            Group26SettingsVm = new Group26SettingsViewModel(userInterfaceRoot, logger, ainSettingsReadedWriter,
                                                             ainSettingsReadNotify, ainSettingsStorage, storageUpdatedNotify, ainsCounter);
            Group27SettingsVm = new Group27SettingsViewModel(userInterfaceRoot, logger, ainSettingsReadedWriter,
                                                             ainSettingsReadNotify, ainSettingsStorage, storageUpdatedNotify, ainsCounter);

            var imcwParamViewModel = new ImcwParameterViewModel();

            Group99SettingsVm = new Group99SettingsViewModel(userInterfaceRoot, logger, ainSettingsReadedWriter,
                                                             ainSettingsReadNotify, ainSettingsStorage, storageUpdatedNotify, ainsCounter,
                                                             engineSettingsReader, engineSettingsWriter, engineSettingsReadNotify, engineSettingsStorage,
                                                             engineSettingsStorageUpdatedNotify,
                                                             imcwParamViewModel);

            Group100SettingsVm = new Group100SettingsViewModel(userInterfaceRoot, logger, ainSettingsReadedWriter,
                                                               ainSettingsReadNotify, ainSettingsStorage, storageUpdatedNotify, ainsCounter);
            Group101SettingsVm = new Group101SettingsViewModel(userInterfaceRoot, logger, ainSettingsReadedWriter,
                                                               ainSettingsReadNotify, ainSettingsStorage, storageUpdatedNotify, ainsCounter);
            Group102SettingsVm = new Group102SettingsViewModel(userInterfaceRoot, logger, ainSettingsReadedWriter,
                                                               ainSettingsReadNotify, ainSettingsStorage, storageUpdatedNotify, ainsCounter);
            Group103SettingsVm = new Group103SettingsViewModel(userInterfaceRoot, logger, ainSettingsReadedWriter,
                                                               ainSettingsReadNotify, ainSettingsStorage, storageUpdatedNotify, ainsCounter);
            //Group104SettingsVm = new Group104SettingsViewModel(userInterfaceRoot, logger, ainSettingsReadedWriter, ainSettingsReadNotify, ainSettingsStorage, storageUpdatedNotify, ainsCounter);
            Group105SettingsVm = new Group105SettingsViewModel(userInterfaceRoot, logger,
                                                               ainSettingsReadedWriter, /*ainSettingsReadNotify, */ ainSettingsStorage, storageUpdatedNotify,
                                                               ainsCounter);
            Group106SettingsVm = new Group106SettingsViewModel(userInterfaceRoot, logger, ainSettingsReadedWriter,
                                                               ainSettingsReadNotify, ainSettingsStorage, storageUpdatedNotify, ainsCounter, imcwParamViewModel);
            Group107SettingsVm = new Group107SettingsViewModel(userInterfaceRoot, logger,
                                                               ainSettingsReadedWriter, /*ainSettingsReadNotify, */ ainSettingsStorage, storageUpdatedNotify,
                                                               ainsCounter);

            ImportExportVm = new ImportExportViewModel(ainSettingsStorageSettable, ainSettingsReadNotifyRaisable,
                                                       engineSettingsStorageSettable, engineSettingsReadNotifyRaisable, debugLogger);
        }
コード例 #28
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);
        }
コード例 #29
0
        private void App_OnStartup(object sender, StartupEventArgs e)
        {
            var colorsForGraphics = new List <Color>
            {
                Colors.LawnGreen,
                Colors.Red,
                Colors.Cyan,
                Colors.Yellow,
                Colors.Coral,
                Colors.LightGreen,
                Colors.HotPink,
                Colors.DeepSkyBlue,
                Colors.Gold,
                Colors.Orange,
                Colors.Violet,
                Colors.White,
                Colors.Fuchsia,
                Colors.LightSkyBlue,
                Colors.LightGray,
                Colors.Khaki,
                Colors.SpringGreen,
                Colors.Tomato,
                Colors.LightCyan,
                Colors.Goldenrod,
                Colors.SlateBlue,
                Colors.Cornsilk,
                Colors.MediumPurple,
                Colors.RoyalBlue,
                Colors.MediumVioletRed,
                Colors.MediumTurquoise
            };

            _debugLogger = new RelayMultiLoggerWithStackTraceSimple(
                new RelayLoggerWithStackTrace(
                    new RelayActionLogger(s => { }),
                    new StackTraceFormatterWithNullSuport(" > ", "[NO STACK INFO]")),
                new RelayLoggerWithStackTrace(
                    new RelayLogger(
                        new ColoredConsoleLogger(ConsoleColor.Red, ConsoleColor.Black),
                        new ChainedFormatter(new List <ITextFormatter>
            {
                new ThreadFormatter(" > ", true, false, false),
                new DateTimeFormatter(" > ")
            })),
                    new StackTraceFormatterWithNullSuport(" > ", "[NO STACK INFO]")),
                new RelayLoggerWithStackTrace(
                    new RelayLogger(
                        new ColoredConsoleLogger(ConsoleColor.Yellow, ConsoleColor.Black),
                        new ChainedFormatter(new List <ITextFormatter>
            {
                new ThreadFormatter(" > ", true, false, false),
                new DateTimeFormatter(" > ")
            })),
                    new StackTraceFormatterWithNullSuport(" > ", "[NO STACK INFO]")),
                new RelayLoggerWithStackTrace(
                    new RelayLogger(
                        new ColoredConsoleLogger(ConsoleColor.DarkCyan, ConsoleColor.Black),
                        new ChainedFormatter(new List <ITextFormatter>
            {
                new ThreadFormatter(" > ", true, false, false),
                new DateTimeFormatter(" > ")
            })),
                    new StackTraceFormatterNothing()),
                new RelayLoggerWithStackTrace(
                    new RelayLogger(
                        new ColoredConsoleLogger(ConsoleColor.Cyan, ConsoleColor.Black),
                        new ChainedFormatter(new List <ITextFormatter>
            {
                new ThreadFormatter(" > ", true, false, false),
                new DateTimeFormatter(" > ")
            })),
                    new StackTraceFormatterNothing()),
                new RelayLoggerWithStackTrace(
                    new RelayLogger(
                        new ColoredConsoleLogger(ConsoleColor.Green, ConsoleColor.Black),
                        new ChainedFormatter(new List <ITextFormatter>
            {
                new ThreadFormatter(" > ", false, true, false), new DateTimeFormatter(" > ")
            })),
                    new StackTraceFormatterWithNullSuport(" > ", string.Empty)),
                new RelayLoggerWithStackTrace(
                    new RelayLogger(
                        new ColoredConsoleLogger(ConsoleColor.White, ConsoleColor.Black),
                        new ChainedFormatter(new List <ITextFormatter>
            {
                new ThreadFormatter(" > ", true, false, false), new DateTimeFormatter(" > ")
            })),
                    new StackTraceFormatterNothing()));

            var loggerAndRegPoint = new LoggerRegistrationPointThreadSafe();

            _commonLogger   = loggerAndRegPoint;
            _loggerRegPoint = loggerAndRegPoint;

            var paramLoggerAndRegPoint = new ParamLoggerRegistrationPointThreadSafe();

            _commonParamLogger   = paramLoggerAndRegPoint;
            _paramLoggerRegPoint = paramLoggerAndRegPoint;


            var cmdSenderHost = new CommandSenderHostThreadSafe();

            _cmdSenderHostSettable = cmdSenderHost;
            _cmdSenderHost         = cmdSenderHost;

            var targetAddressHost = new TargetAddressHostThreadSafe(1);

            _targetAddressHostSettable = targetAddressHost;
            _targetAddressHost         = targetAddressHost;

            var notifySendingEnabled = new NotifySendingEnabledThreadSafe(false);

            _notifySendingEnabledRaisable = notifySendingEnabled;
            _notifySendingEnabled         = notifySendingEnabled;

            var ainsCounter = new AinsCounterThreadSafe(1);

            _ainsCounterRaisable = ainsCounter;
            _ainsCounter         = ainsCounter;

            _cycleThreadHolder = new CycleThreadHolderThreadSafe();

            var ainSettingsStorage = new AinSettingsStorageThreadSafe(_ainsCounter, _notifySendingEnabled);

            _ainSettingsStorage              = ainSettingsStorage;
            _ainSettingsStorageSettable      = ainSettingsStorage;
            _ainSettingsStorageUpdatedNotify = ainSettingsStorage;

            var ainSettingsReader = new AinSettingsReader(_cmdSenderHost, _targetAddressHost, _commonLogger,
                                                          _ainSettingsStorageSettable, _debugLogger);

            _ainSettingsReader             = ainSettingsReader;
            _ainSettingsReadNotify         = ainSettingsReader;
            _ainSettingsReadNotifyRaisable = ainSettingsReader;

            _ainSettingsWriter = new AinSettingsWriter(_cmdSenderHost, _targetAddressHost, _ainsCounterRaisable,
                                                       _ainSettingsReader);
            _autoTimeSetter =
                new AutoTimeSetter(_cmdSenderHost, _notifySendingEnabled, _targetAddressHost, _commonLogger);


            var engineSettingsStorage = new EngineSettingsStorageThreadSafe();

            _engineSettingsStorage              = engineSettingsStorage;
            _engineSettingsStorageSettable      = engineSettingsStorage;
            _engineSettingsStorageUpdatedNotify = engineSettingsStorage;

            var engineSettingsReader = new EngineSettingsReader(_cmdSenderHost, _targetAddressHost, _commonLogger,
                                                                _engineSettingsStorageSettable, _debugLogger);

            _engineSettingsReader             = engineSettingsReader;
            _engineSettingsReadNotify         = engineSettingsReader;
            _engineSettingsReadNotifyRaisable = engineSettingsReader;

            _engineSettingsWriter = new EngineSettingsWriter(_cmdSenderHost, _targetAddressHost, _engineSettingsReader);


            _autoSettingsReader = new AutoSettingsReader(
                _notifySendingEnabled,
                _ainsCounterRaisable,
                _ainSettingsReader,
                _ainSettingsStorageSettable,
                _commonLogger,
                _engineSettingsReader,
                _engineSettingsStorageSettable);



            _bsEthernetLogsReadCycleModel = new ReadCycleModel(_cmdSenderHost, targetAddressHost, notifySendingEnabled);

            var uiRoot = new SimpleUiRoot(new WpfUiNotifierAsync(Dispatcher.CurrentDispatcher));

            var ainCommandAndCommonTelemetryVm = new AinCommandAndCommonTelemetryViewModel(
                new AinCommandAndMinimalCommonTelemetryViewModel(
                    _cmdSenderHost,
                    _targetAddressHost,
                    uiRoot,
                    _commonLogger,
                    _notifySendingEnabled,
                    0,
                    _ainSettingsStorage,
                    _ainSettingsStorageUpdatedNotify),
                new TelemetryCommonViewModel(),
                _cmdSenderHost,
                _targetAddressHost,
                uiRoot,
                _notifySendingEnabled);


            // TODO: Register something but not VM?
            _cycleThreadHolder.RegisterAsCyclePart(ainCommandAndCommonTelemetryVm);


            new CommandWindow {
                DataContext = new CommandWindowViewModel(ainCommandAndCommonTelemetryVm)
            }.Show();

            new BsEthernetLogsWindow {
                DataContext = new WindowViewModel(uiRoot, _bsEthernetLogsReadCycleModel)
            }.Show();



            var mainViewModel = new MainViewModel(
                new SimpleUiRoot(new WpfUiNotifierAsync(Dispatcher.CurrentDispatcher)),
                new WpfWindowSystem(),
                colorsForGraphics,
                _cmdSenderHostSettable,
                _targetAddressHost,
                _debugLogger,
                _loggerRegPoint,
                _notifySendingEnabledRaisable,
                _commonParamLogger,
                _ainsCounterRaisable,
                _cycleThreadHolder,
                _ainSettingsReader,
                _ainSettingsReadNotify,
                _ainSettingsReadNotifyRaisable,
                _ainSettingsWriter, _ainSettingsStorage, _ainSettingsStorageSettable,
                _ainSettingsStorageUpdatedNotify, _bsEthernetLogsReadCycleModel,
                _engineSettingsReader,
                _engineSettingsWriter,
                _engineSettingsReadNotify,
                _engineSettingsReadNotifyRaisable,
                _engineSettingsStorage,
                _engineSettingsStorageSettable,
                _engineSettingsStorageUpdatedNotify);

            new MainWindow {
                DataContext = mainViewModel
            }.Show();
        }
コード例 #30
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);
                }
            };
        }