示例#1
0
        public Group26SettingsViewModel(IUserInterfaceRoot uiRoot, ILogger logger,
                                        IAinSettingsReaderWriter readerWriter, IAinSettingsReadNotify ainSettingsReadNotify,
                                        IAinSettingsStorage storage, IAinSettingsStorageUpdatedNotify storageUpdatedNotify,
                                        IAinsCounter ainsCounter)
        {
            _uiRoot                = uiRoot;
            _logger                = logger;
            _readerWriter          = readerWriter;
            _ainSettingsReadNotify = ainSettingsReadNotify;
            _storage               = storage;
            _storageUpdatedNotify  = storageUpdatedNotify;
            _ainsCounter           = ainsCounter;

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

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

            _ainSettingsReadNotify.AinSettingsReadComplete += AinSettingsReadNotifyOnAinSettingsReadComplete;
            _storageUpdatedNotify.AinSettingsUpdated       += (zbAinNuber, settings) =>
            {
                _uiRoot.Notifier.Notify(() => WriteSettingsCmd.RaiseCanExecuteChanged());
            };
        }
示例#2
0
        public Group107SettingsViewModel(IUserInterfaceRoot uiRoot, ILogger logger,
                                         IAinSettingsReaderWriter readerWriter, IAinSettingsStorage storage,
                                         IAinSettingsStorageUpdatedNotify storageUpdatedNotify, IAinsCounter ainsCounter)
        {
            _uiRoot               = uiRoot;
            _logger               = logger;
            _readerWriter         = readerWriter;
            _storage              = storage;
            _storageUpdatedNotify = storageUpdatedNotify;
            _ainsCounter          = ainsCounter;

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

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

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

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

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

            _ainSettingsReadNotify.AinSettingsReadComplete += AinSettingsReadNotifyOnAinSettingsReadComplete;
            _storageUpdatedNotify.AinSettingsUpdated       += (zbAinNuber, settings) =>
            {
                _uiRoot.Notifier.Notify(() => WriteSettingsCmd.RaiseCanExecuteChanged());
            };
        }
        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 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);
            };
        }
示例#7
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);
        }
        public AinSettingsStorageThreadSafe(IAinsCounter ainsCounter, INotifySendingEnabled sendingEnabledMonitor)
        {
            _ainsCounter           = ainsCounter;
            _sendingEnabledMonitor = sendingEnabledMonitor;
            _ainSettingsSync       = new object();
            _ainsSettings          = new List <IAinSettings> {
                null, null, null
            };

            _ainsCounter.AinsCountInSystemHasBeenChanged += AinsCounterOnAinsCountInSystemHasBeenChanged;
            _sendingEnabledMonitor.SendingEnabledChanged += SendingEnabledMonitorOnSendingEnabledChanged;
        }
示例#9
0
        public Group100SettingsViewModel(IUserInterfaceRoot uiRoot, ILogger logger,
                                         IAinSettingsReaderWriter readerWriter, IAinSettingsReadNotify ainSettingsReadNotify,
                                         IAinSettingsStorage storage, IAinSettingsStorageUpdatedNotify storageUpdatedNotify,
                                         IAinsCounter ainsCounter)
        {
            _uiRoot                = uiRoot;
            _logger                = logger;
            _readerWriter          = readerWriter;
            _ainSettingsReadNotify = ainSettingsReadNotify;
            _storage               = storage;
            _storageUpdatedNotify  = storageUpdatedNotify;
            _ainsCounter           = ainsCounter;

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

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


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

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

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

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

            _ainSettingsReadNotify.AinSettingsReadComplete += AinSettingsReadNotifyOnAinSettingsReadComplete;
            _storageUpdatedNotify.AinSettingsUpdated       += (zbAinNuber, settings) =>
            {
                _uiRoot.Notifier.Notify(() => WriteSettingsCmd.RaiseCanExecuteChanged());
            };
        }
        public AutoSettingsReader(INotifySendingEnabled sendingEnabledNotifier,
                                  IAinsCounter ainsCounter, IAinSettingsReader ainSettingsReader,
                                  IAinSettingsStorageSettable ainSettingsStorageSettable,
                                  ILogger logger,
                                  IEngineSettingsReader engineSettingsReader, IEngineSettingsStorageSettable engineSettingsStorageSettable)
        {
            _ainsCounter                = ainsCounter;
            _ainSettingsReader          = ainSettingsReader;
            _ainSettingsStorageSettable = ainSettingsStorageSettable;
            _logger = logger;
            _engineSettingsReader          = engineSettingsReader;
            _engineSettingsStorageSettable = engineSettingsStorageSettable;
            _sendingEnabledNotifier        = sendingEnabledNotifier;

            _ainsCounter.AinsCountInSystemHasBeenChanged +=
                AinsCounterOnAinsCountInSystemHasBeenChanged;  // TODO: unsubscribe
            _sendingEnabledNotifier.SendingEnabledChanged +=
                SendingEnabledNotifierOnSendingEnabledChanged; // TODO: unsubscribe on app quit
        }
        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 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;
        }
示例#14
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();
        }
        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());
            };
        }
示例#16
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);
        }
示例#17
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);
        }
        public Group102SettingsViewModel(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("102.01. Постоянная времени обмотки ротора, Tr [мс]", "f4",
                                                       -3.2768m, 3.2767m)
            {
                Increment = 0.0001m
            };
            Parameter02Vm =
                new ParameterDecimalEditCheckViewModel("102.02. Индуктивность намагничивания, Lm [мкГн]", "f5",
                                                       -0.32768m, 0.32767m)
            {
                Increment = 0.00001m
            };
            Parameter03Vm =
                new ParameterDecimalEditCheckViewModel("102.03. Индуктивность рассеяния обмотки статора, Lsl [мкГн]",
                                                       "f6", -0.032768m, 0.032768m)
            {
                Increment = 0.000001m
            };
            Parameter04Vm =
                new ParameterDecimalEditCheckViewModel("102.04. Индуктивность рассеяния обмотки ротора, Lrl [мкГн]",
                                                       "f6", -0.032768m, 0.032768m)
            {
                Increment = 0.000001m
            };
            Parameter05Vm =
                new ParameterDecimalEditCheckViewModel("102.05. Активное сопротивление обмотки статора, Rs [Ом]", "f4",
                                                       -3.2768m, 3.2767m)
            {
                Increment = 0.0001m
            };
            Parameter06Vm = new ParameterDecimalEditCheckViewModel("102.06. Число пар полюсов", "f0", 0, 31);

            Parameter07Vm = new ParameterComboEditableViewModel <int>("102.07. Число импульсов датчика частоты вращения",
                                                                      new[]
            {
                new ComboItemViewModel <int> {
                    ComboText = "256", ComboValue = 0
                },
                new ComboItemViewModel <int> {
                    ComboText = "512", ComboValue = 1
                },
                new ComboItemViewModel <int> {
                    ComboText = "1024", ComboValue = 2
                },
                new ComboItemViewModel <int> {
                    ComboText = "2048", ComboValue = 3
                },
                new ComboItemViewModel <int> {
                    ComboText = "4096", ComboValue = 4
                },
                new ComboItemViewModel <int> {
                    ComboText = "8192", ComboValue = 5
                },
                new ComboItemViewModel <int> {
                    ComboText = "16384", ComboValue = 6
                },
                new ComboItemViewModel <int> {
                    ComboText = "32768", ComboValue = 7
                }
            });

            Parameter08Vm = new ParameterComboEditableViewModel <AinTelemetryFanWorkmode>(
                "102.08. Режим работы вентилятора",
                new[]
            {
                new ComboItemViewModel <AinTelemetryFanWorkmode>
                {
                    ComboText  = AinTelemetryFanWorkmode.AllwaysOff.ToHumanString(),
                    ComboValue = AinTelemetryFanWorkmode.AllwaysOff
                },
                new ComboItemViewModel <AinTelemetryFanWorkmode>
                {
                    ComboText = AinTelemetryFanWorkmode.SwitchOnSyncToPwmSwtichOffTwoMinutesLaterAfterPwmOff
                                .ToHumanString(),
                    ComboValue = AinTelemetryFanWorkmode.SwitchOnSyncToPwmSwtichOffTwoMinutesLaterAfterPwmOff
                },
                new ComboItemViewModel <AinTelemetryFanWorkmode>
                {
                    ComboText = AinTelemetryFanWorkmode.SwitchOnSyncToPwmSwtichOffAfterPwmOffAndTempGoesDownBelow45C
                                .ToHumanString(),
                    ComboValue = AinTelemetryFanWorkmode
                                 .SwitchOnSyncToPwmSwtichOffAfterPwmOffAndTempGoesDownBelow45C
                },
                new ComboItemViewModel <AinTelemetryFanWorkmode>
                {
                    ComboText  = AinTelemetryFanWorkmode.AllwaysOn.ToHumanString(),
                    ComboValue = AinTelemetryFanWorkmode.AllwaysOn
                }
            });
            Parameter09Vm =
                new ParameterBooleanEditCheckViewModel("102.09. Намагничивание постоянным током", "Нет", "Да");


            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 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;
        }
示例#20
0
        public Group27SettingsViewModel(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("27.01. Номинальный поток без ослабления поля [мВб]", "f3",
                                                       -32.768m, 32.767m)
            {
                Increment = 0.001m
            };
            Parameter02Vm =
                new ParameterDecimalEditCheckViewModel("27.02. Минимальный поток с ослаблением поля [мВб]", "f3",
                                                       -32.768m, 32.767m)
            {
                Increment = 0.001m
            };
            Parameter03Vm =
                new ParameterDecimalEditCheckViewModel("27.03. Максимально возможная компенсация потока [мВб]", "f3",
                                                       -32.768m, 32.767m)
            {
                Increment = 0.001m
            };
            Parameter04Vm =
                new ParameterDecimalEditCheckViewModel(
                    "27.04. Минимально возможный поток (коэф. от номинального потока) [мВб]", "f3", -32.768m,
                    32.767m)
            {
                Increment = 0.001m
            };
            Parameter05Vm =
                new ParameterDecimalEditCheckViewModel(
                    "27.05. Постоянная времени регулятора компенсации напряжения [мс]", "f3", -3.2768m, 3.2767m)
            {
                Increment = 0.0001m
            };
            Parameter06Vm =
                new ParameterDecimalEditCheckViewModel("27.06. Порог компенсации напряжения DC за счет потока [В]",
                                                       "f3", -32.768m, 32.767m)
            {
                Increment = 0.001m
            };

            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 Group20SettingsViewModel(IUserInterfaceRoot uiRoot, ILogger logger,
                                        IAinSettingsReaderWriter ainSettingsReaderWriter, IAinSettingsReadNotify ainSettingsReadNotify,
                                        IAinSettingsStorage ainSettingsStorage, IAinSettingsStorageUpdatedNotify ainSettingsStorageUpdatedNotify,
                                        IAinsCounter ainsCounter,
                                        IEngineSettingsReader engineSettingsReader, IEngineSettingsWriter engineSettingsWriter,
                                        IEngineSettingsReadNotify engineSettingsReadNotify, IEngineSettingsStorage engineSettingsStorage,
                                        IEngineSettingsStorageUpdatedNotify engineSettingsStorageUpdatedNotify)
        {
            _uiRoot = uiRoot;
            _logger = logger;

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

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

            Parameter01Vm =
                new ParameterDecimalEditCheckViewModel("20.01. Максимальная частота [Гц]", "f1", 0, 6553.5m);

            Parameter02Vm =
                new ParameterDecimalEditCheckViewModel("20.02. Ограничение тока (амплитуда) [А]", "f0", -10000, 10000);
            Parameter03Vm = new ParameterDecimalEditCheckViewModel("20.03. Минимальная частота (электрическая) [Гц]",
                                                                   "f1", -3276.8m, 3276.7m);

            Parameter04Vm = new ParameterDecimalEditCheckViewModel("20.04. Максимальный ток (амплитуда) для защиты [А]",
                                                                   "f0", -32768, 32767);
            Parameter05Vm =
                new ParameterDecimalEditCheckViewModel("20.05. Максимальное напряжение шины DC для защиты [В]", "f0",
                                                       -1000, 1000);
            Parameter06Vm =
                new ParameterDecimalEditCheckViewModel("20.06. Минимальное напряжение шины DC [В]", "f0", -1000, 1000);
            Parameter07Vm = new ParameterDecimalEditCheckViewModel("20.07. Порог защиты по внешней температуре [⁰С]",
                                                                   "f0", -32768, 32767);


            Parameter08Vm =
                new ParameterDecimalEditCheckViewModel("20.08. Тепловая защита: граница перегрева [А² × 0.1сек]", "f0",
                                                       -10000, 10000);
            Parameter09Vm =
                new ParameterDecimalEditCheckViewModel("20.09. Тепловая защита: I(RMS) [А]", "f0", -10000, 10000);
            Parameter10Vm = new ParameterDecimalEditCheckViewModel(
                "20.10. Скорость вращения двигателя (электрическая) ниже нулевого предела (ZERO_SPEED) [Гц]", "f0",
                -10000, 10000);

            Parameter11Vm =
                new ParameterDecimalEditCheckViewModel("20.11. Минимальный момент", "f0", -10000, 10000);  // TODO: WTF?
            Parameter12Vm =
                new ParameterDecimalEditCheckViewModel("20.12. Максимальный момент", "f0", -10000, 10000); // TODO: WTF?

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