public MswParameterViewModel(IParameterLogger parameterLogger)
        {
            ParameterLiteralVm = new ParameterStringReadonlyViewModel("08.01 MSW", string.Empty);
            Parameter01Vm      =
                new ParameterBooleanReadonlyViewModel("MSW.01 RDY_ON (1=готов к включению)", null, parameterLogger);
            Parameter02Vm =
                new ParameterBooleanReadonlyViewModel("MSW.02 RDY_RUN (1=готов к работе)", null, parameterLogger);
            Parameter03Vm = new ParameterBooleanReadonlyViewModel("MSW.03 RDY_REF (1=работа разрешена:RUNNING)", null,
                                                                  parameterLogger);

            Parameter04Vm = new ParameterBooleanReadonlyViewModel("MSW.04 TRIPPED (1=отказ)", null, parameterLogger);
            Parameter05Vm =
                new ParameterBooleanReadonlyViewModel("MSW.05 OFF_2STA (0=OFF2 активно)", null, parameterLogger);
            Parameter06Vm =
                new ParameterBooleanReadonlyViewModel("MSW.06 OFF_3STA (0=OFF3 активно)", null, parameterLogger);

            Parameter07Vm = new ParameterBooleanReadonlyViewModel("MSW.07 ON_INHIBITED (1=включение запрещено)", null,
                                                                  parameterLogger);
            Parameter08Vm =
                new ParameterBooleanReadonlyViewModel("MSW.08 ALARM (1=предупреждение)", null, parameterLogger);
            Parameter09Vm = new ParameterBooleanReadonlyViewModel("MSW.09 AT_SETPOINT (1=скорость достигла заданной)",
                                                                  null, parameterLogger);
            Parameter10Vm =
                new ParameterBooleanReadonlyViewModel("MSW.10 REMOTE (1=дистанционное управление)", null,
                                                      parameterLogger);
            Parameter11Vm = new ParameterBooleanReadonlyViewModel("MSW.11 ABOVE_LIMIT (1=скорость превысила предел)",
                                                                  null, parameterLogger);
            Parameter12Vm = new ParameterBooleanReadonlyViewModel("MSW.12 SELECTABLE", null, parameterLogger);
            Parameter13Vm = new ParameterBooleanReadonlyViewModel("MSW.13 INTERNAL_INTERLOCK", null, parameterLogger);
            Parameter14Vm = new ParameterBooleanReadonlyViewModel("MSW.14 RUN_INTERLOCK", null, parameterLogger);
            Parameter15Vm =
                new ParameterBooleanReadonlyViewModel("MSW.15 MODULATING (1=Модуляция: транзисторы IGBT управляются)",
                                                      null, parameterLogger);
        }
        public ChartParamViewModel(
            IRecvParam <TR> recvParam,
            IDisplayParameter <TD> parameter,
            Func <TR, double> chartDataGetter,
            ParameterLogType parameterLogType,
            IParameterLogger parameterLogger,
            params string[] uniqNamePrefix)
        {
            _uniqNamePrefix   = string.Join(", ", uniqNamePrefix);
            _recvParam        = recvParam;
            _parameter        = parameter;
            _chartDataGetter  = chartDataGetter;
            _parameterLogType = parameterLogType;
            _parameterLogger  = parameterLogger;

            DisplayParameters = new List <IDisplayParameter> {
                _parameter
            };
            _isChecked = false;


            switch (_parameterLogType)
            {
            case ParameterLogType.Analogue:
                _recvParam.NotifyDataReceived += ParameterOnDisplayParameterValueMaybeChanged;
                break;

            case ParameterLogType.Discrete:
                _recvParam.NotifyDataReceived += ParameterOnDisplayParameterValueMaybeChangedBool;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(parameterLogType), parameterLogType, null);
            }
        }
Beispiel #3
0
 public void RegisterLoggegr(IParameterLogger logger)
 {
     lock (_syncLoggers)
     {
         _registredLoggers.Add(logger);
     }
 }
Beispiel #4
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;
        }
Beispiel #5
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);
        }
        public ParameterBooleanReadonlyViewModel(string name, bool?currentValue, IParameterLogger parameterLogger)
        {
            Name = name;

            _isChecked       = false;
            _currentValue    = currentValue;
            _parameterLogger = parameterLogger;
        }
Beispiel #7
0
 public TabInterfaceBuilder(IThreadNotifier mainWindowUiUiNotifier, ICmdListener <IList <byte> > cmdListenerWinSum03Reply, ICmdListener <IMukFlapAirWinterSummerRequest16Data> cmdListener16Request, IParameterLogger parameterLogger, IParameterSetter parameterSetter)
 {
     _uiNotifier = mainWindowUiUiNotifier;
     _cmdListenerWinSum03Reply = cmdListenerWinSum03Reply;
     _cmdListener16Request     = cmdListener16Request;
     _parameterLogger          = parameterLogger;
     _parameterSetter          = parameterSetter;
 }
        public SdTabInterfaceBuilder(IThreadNotifier mainWindowUiUiNotifier, ICmdListener <IList <BytesPair> > cmdListenerKsmParams, IParameterLogger parameterLogger, IParameterSetter parameterSetter, AppVersion version)
        {
            _uiNotifier           = mainWindowUiUiNotifier;
            _cmdListenerKsmParams = cmdListenerKsmParams;

            _parameterLogger = parameterLogger;
            _parameterSetter = parameterSetter;
            _version         = version;
        }
        public ParameterDoubleReadonlyViewModel(string name, string format, double?currentValue,
                                                IParameterLogger parameterLogger)
        {
            Name   = name;
            Format = format;

            _isChecked       = false;
            _currentValue    = currentValue;
            _parameterLogger = parameterLogger;
        }
Beispiel #10
0
 public TabInterfaceBuilder(
     IThreadNotifier mainWindowUiUiNotifier,
     ICmdListener <IMukFanVaporizerDataReply03> cmdListenerEvaporator03Reply,
     ICmdListener <IMukFanVaporizerDataRequest16> cmdListenerEvaporator16Request,
     IParameterLogger parameterLogger,
     IParameterSetter parameterSetter)
 {
     _uiNotifier = mainWindowUiUiNotifier;
     _cmdListenerEvaporator03Reply   = cmdListenerEvaporator03Reply;
     _cmdListenerEvaporator16Request = cmdListenerEvaporator16Request;
     _parameterLogger = parameterLogger;
     _parameterSetter = parameterSetter;
 }
        public TabInterfaceBuilderFc(
            IThreadNotifier mainWindowUiUiNotifier,
            ICmdListener <IRequestF0> cmdListenerFcRequest,
            ICmdListener <IReplyF0> cmdListenerFcReply,
            IParameterLogger parameterLogger,
            IParameterSetter parameterSetter)
        {
            _uiNotifier = mainWindowUiUiNotifier;

            _cmdListenerFcRequest = cmdListenerFcRequest;
            _cmdListenerFcReply   = cmdListenerFcReply;

            _parameterLogger = parameterLogger;
            _parameterSetter = parameterSetter;
        }
        public McwParameterViewModel(IParameterLogger parameterLogger)
        {
            ParameterLiteralVm = new ParameterStringReadonlyViewModel("07.01 MCW", string.Empty);
            Parameter01Vm      = new ParameterBooleanReadonlyViewModel("MCW.01 OFF1", null, parameterLogger);
            Parameter02Vm      = new ParameterBooleanReadonlyViewModel("MCW.02 OFF2", null, parameterLogger);
            Parameter03Vm      = new ParameterBooleanReadonlyViewModel("MCW.03 OFF3", null, parameterLogger);

            Parameter04Vm = new ParameterBooleanReadonlyViewModel("MCW.04 RUN", null, parameterLogger);
            Parameter05Vm = new ParameterBooleanReadonlyViewModel("MCW.05 RAMP_OUT_ZERO", null, parameterLogger);
            Parameter06Vm = new ParameterBooleanReadonlyViewModel("MCW.06 RAMP_HOLD", null, parameterLogger);

            Parameter07Vm = new ParameterBooleanReadonlyViewModel("MCW.07 RAMP_IN_ZERO", null, parameterLogger);
            Parameter08Vm = new ParameterBooleanReadonlyViewModel("MCW.08 RESET", null, parameterLogger);
            Parameter09Vm = new ParameterBooleanReadonlyViewModel("MCW.09 INCHING1", null, parameterLogger);
            Parameter10Vm = new ParameterBooleanReadonlyViewModel("MCW.10 INCHING2", null, parameterLogger);
            Parameter11Vm = new ParameterBooleanReadonlyViewModel("MCW.11 REMOTE", null, parameterLogger);
        }
Beispiel #13
0
        public Group02ParametersViewModel(ICommandSenderHost commandSenderHost, ITargetAddressHost targerAddressHost,
                                          IUserInterfaceRoot uiRoot, ILogger logger, IParameterLogger parameterLogger)
        {
            _commandSenderHost = commandSenderHost;
            _targerAddressHost = targerAddressHost;
            _uiRoot            = uiRoot;
            _logger            = logger;

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

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

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

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

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

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

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

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

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

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

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

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

            _syncCancel        = new object();
            _cancel            = true;
            _readingInProgress = false;
            _errorCounts       = 0;
        }
        public ParameterGetterViewModelSimple(
            string paramId, IParamListener listener, IThreadNotifier uiNotifier,
            IParameterView view, IParameterLogger parameterLogger, bool isBitParam, string logName)
        {
            _listener        = listener;
            _uiNotifier      = uiNotifier;
            _view            = view;
            _parameterLogger = parameterLogger;
            _logName         = logName;
            _paramId         = paramId;

            _listener.ValueReceived += ListenerValueReceived;
            _log = isBitParam ? (Action <string, double?>)LogBool : _parameterLogger.LogAnalogueParameter;


            _value    = "?";
            _isLogged = false;
        }
        public AinBitsParameterViewModel(ParameterStringReadonlyViewModel parameterLiteralVm,
                                         IParameterLogger parameterLogger)
        {
            ParameterLiteralVm = parameterLiteralVm;

            Parameter01Vm = new ParameterBooleanReadonlyViewModel("СТАТУС.01 Ошибки драйвера 1", null, parameterLogger);
            Parameter02Vm = new ParameterBooleanReadonlyViewModel("СТАТУС.02 Ошибки драйвера 2", null, parameterLogger);
            Parameter03Vm = new ParameterBooleanReadonlyViewModel("СТАТУС.03 Ошибки драйвера 3", null, parameterLogger);
            Parameter04Vm = new ParameterBooleanReadonlyViewModel("СТАТУС.04 Ошибки драйвера 4", null, parameterLogger);
            Parameter05Vm = new ParameterBooleanReadonlyViewModel("СТАТУС.05 Ошибки драйвера 5", null, parameterLogger);
            Parameter06Vm = new ParameterBooleanReadonlyViewModel("СТАТУС.06 Ошибки драйвера 6", null, parameterLogger);

            Parameter07Vm =
                new ParameterBooleanReadonlyViewModel("СТАТУС.07 Превышение допустимого тока по любой из фаз", null,
                                                      parameterLogger);
            Parameter08Vm =
                new ParameterBooleanReadonlyViewModel("СТАТУС.08 Превышение температуры радиатора ключей +85 градусов",
                                                      null, parameterLogger);
            Parameter09Vm =
                new ParameterBooleanReadonlyViewModel("СТАТУС.09 Выход за пределы напряжения DC", null,
                                                      parameterLogger);

            Parameter10Vm =
                new ParameterBooleanReadonlyViewModel("СТАТУС.10 Нет связи по линии синхронизации", null,
                                                      parameterLogger);
            Parameter11Vm = new ParameterBooleanReadonlyViewModel("СТАТУС.11 Превышение порога внешней температуры",
                                                                  null, parameterLogger);
            Parameter12Vm =
                new ParameterBooleanReadonlyViewModel("СТАТУС.12 Отказ датчика частоты вращения", null,
                                                      parameterLogger);

            Parameter13Vm =
                new ParameterBooleanReadonlyViewModel("СТАТУС.13 Ошибка I2C/EEPROM, загружены параметры по умолчанию",
                                                      null, parameterLogger);
            Parameter14Vm =
                new ParameterBooleanReadonlyViewModel("СТАТУС.14 Ошибка CRC EEPROM, загружены параметры по умолчанию",
                                                      null, parameterLogger);

            Parameter15Vm = new ParameterBooleanReadonlyViewModel(
                "СТАТУС.15 Отказ одного из ведомых приборов при параллельной работе (только для ведущего)", null,
                parameterLogger);
            Parameter16Vm = new ParameterBooleanReadonlyViewModel(
                "СТАТУС.16 Смена конфигурации при параллельной работе, требование подтвердить", null, parameterLogger);
        }
        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;
        }
Beispiel #18
0
        public AswParameterViewModel(IParameterLogger parameterLogger)
        {
            ParameterLiteralVm = new ParameterStringReadonlyViewModel("08.02 ASW", string.Empty);
            Parameter01Vm      = new ParameterBooleanReadonlyViewModel(
                "ASW.01 LOGG_DATA_READY (1=Регистратор данных СРАБАТЫВАЕТ (0=работает))", null, parameterLogger);
            Parameter02Vm = new ParameterBooleanReadonlyViewModel(
                "ASW.02 OUT_OF_WINDOW (1=Разность скоростей вышла за пределы окна)", null, parameterLogger);
            Parameter03Vm = new ParameterBooleanReadonlyViewModel(
                "ASW.03 EMERG_STOP_COAST (1=Функция аврийного останова НЕ СРАБОТАЛА)", null, parameterLogger);

            Parameter04Vm =
                new ParameterBooleanReadonlyViewModel("ASW.04 MAGNETIZED (1=В двигателе сформирован магнитный поток)",
                                                      null, parameterLogger);
            Parameter05Vm = new ParameterBooleanReadonlyViewModel(
                "ASW.05 RUN_DISABLE (1=Внешний сигнал РАЗРЕШЕНИЕ_РАБОТЫ НЕ АКТИВЕН)", null, parameterLogger);
            Parameter06Vm =
                new ParameterBooleanReadonlyViewModel("ASW.06 SYNC_RDY (1=Счетчик положения синхронизирован)", null,
                                                      parameterLogger);

            Parameter07Vm = new ParameterBooleanReadonlyViewModel("ASW.07 1START_NOT_DONE", null, parameterLogger);
            Parameter08Vm = new ParameterBooleanReadonlyViewModel("ASW.08 IDENTIF_RUN_DONE", null, parameterLogger);
            Parameter09Vm = new ParameterBooleanReadonlyViewModel(
                "ASW.09 START_INHIBITION (1=функция безопасного отключения крутящего момента активна)", null,
                parameterLogger);
            Parameter10Vm = new ParameterBooleanReadonlyViewModel("ASW.10 LIMITING (1=Управление находится на пределе)",
                                                                  null, parameterLogger);
            Parameter11Vm =
                new ParameterBooleanReadonlyViewModel("ASW.11 TORQ_CONTROL (1=Отслеживается задание крутящего момента)",
                                                      null, parameterLogger);
            Parameter12Vm =
                new ParameterBooleanReadonlyViewModel("ASW.12 ZERO_SPEED (1=Скорость вращения ниже нулевого предела)",
                                                      null, parameterLogger);
            Parameter13Vm = new ParameterBooleanReadonlyViewModel("ASW.13 INTERNAL_SPEED_FB", null, parameterLogger);
            Parameter14Vm = new ParameterBooleanReadonlyViewModel(
                "ASW.14 CH2_COMM_LOSS (1=Ошибка связи в канале CH2 (линия ведущий/ведомый))", null, parameterLogger);
            Parameter15Vm = new ParameterBooleanReadonlyViewModel("ASW.15 USER_MACROS1", null, parameterLogger);
            Parameter16Vm = new ParameterBooleanReadonlyViewModel("ASW.16 USER_MACROS2", null, parameterLogger);
        }
        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;
        }
Beispiel #20
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();
        }
Beispiel #21
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);
        }
        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;
        }
        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("Программа загружена");
        }
Beispiel #24
0
        public ParameterVMsHolder(IParametersPresenterXmlBuilder ppBuilder, IPsnParamsList psnParamsList,
                                  IParamListener paramListener, IThreadNotifier uiNotifier, IParameterLogger parameterLogger,
                                  IParameterSetter parameterSetter)
        {
            var paramsPresenter = ppBuilder.BuildParametersPresentationFromXml();
            var parameters      = new Dictionary <string, IParameterViewModel>();

            foreach (var paramDescriptionAndKey in paramsPresenter.Parameters)
            {
                var key           = paramDescriptionAndKey.Key;
                var description   = paramDescriptionAndKey.Value;
                var configuration = psnParamsList.PsnProtocolConfigurationParams[description.Identifier];

                parameters.Add(
                    key, new ParameterViewModelSimple(description.CustomName, configuration.Item2.Name,
                                                      new ParameterGetterViewModelSimple(
                                                          description.Identifier, paramListener, uiNotifier, description.View,
                                                          parameterLogger, configuration.Item2.IsBitSignal,
                                                          configuration.Item1.PartName + ": " + configuration.Item2.Name),
                                                      description.Injection == null
                            ? null
                            : new ParameterSetterViewModelSimple(parameterSetter, uiNotifier, description.Injection)));
            }

            Parameters = parameters;
        }