private void OnModbusMemorySettingsChanged(IModbusMemorySettings modbusMemorySettings)
        {
            bool isQueriesWasStartedBefore = false;

            if (IsQueriesStarted)
            {
                isQueriesWasStartedBefore = true;
                IsQueriesStarted          = false;
            }

            if (ModbusMemoryEntityViewModels.Count != modbusMemorySettings.NumberOfPoints)
            {
                ModbusMemoryEntityViewModels.Clear();
            }

            foreach (IModbusMemoryEntityViewModel modbusMemoryEntityViewModel in ModbusMemoryEntityViewModels)
            {
                modbusMemoryEntityViewModel.SetViewSetOption(modbusMemorySettings.IsDiscretOption);
            }

            //всякие условия вокруг - оптимизация вывода, чтобы не перерисовывать все каждый раз
            for (int i = 0; i < modbusMemorySettings.NumberOfPoints; i++)
            {
                if (_modbusConversionParametersViewModels.Count < i + 1)
                {
                    _modbusConversionParametersViewModels.Add(
                        _container.Resolve <IModbusConversionParametersViewModel>());
                }

                if (ModbusMemoryEntityViewModels.Count <= i)
                {
                    ModbusMemoryEntityViewModel modbusMemoryEntityViewModel =
                        new ModbusMemoryEntityViewModel(_memoryBitViewModelGettingFunc,
                                                        _modbusMemoryEntityGettingFunc,
                                                        _modbusConversionParametersViewModels[i]);
                    modbusMemoryEntityViewModel.SetViewSetOption(modbusMemorySettings.IsDiscretOption);
                    modbusMemoryEntityViewModel.SetAddress(modbusMemorySettings.BaseAdress + i);
                    ModbusMemoryEntityViewModels.Add(modbusMemoryEntityViewModel);
                }
                else
                {
                    ModbusMemoryEntityViewModels[i].SetViewSetOption(modbusMemorySettings.IsDiscretOption);
                    ModbusMemoryEntityViewModels[i].SetAddress(modbusMemorySettings.BaseAdress + i);
                }
            }

            if (isQueriesWasStartedBefore)
            {
                IsQueriesStarted = true;
            }
            else
            {
                ModbusMemoryEntityViewModels.ForEach((model => model.SetError()));
            }
        }
Beispiel #2
0
        private void OnModbusMemorySettingsChanged(ModbusMemorySettings modbusMemorySettings)
        {
            bool isQueriesStartedBefore = IsQueriesStarted;

            if (modbusMemorySettings == null)
            {
                return;
            }
            IsQueriesStarted = false;
            if (ModbusMemoryEntityViewModels.Count != modbusMemorySettings.NumberOfPoints)
            {
                ModbusMemoryEntityViewModels.Clear();
            }
            //всякие условия вокруг - оптимизация вывода, чтобы не перерисовывать все каждый раз
            for (int i = 0; i < modbusMemorySettings.NumberOfPoints; i++)
            {
                if (_modbusConversionParametersViewModels.Count < i + 1)
                {
                    _modbusConversionParametersViewModels.Add(new ModbusConversionParametersViewModel());
                }

                if (ModbusMemoryEntityViewModels.Count <= i)
                {
                    ModbusMemoryEntityViewModel modbusMemoryEntityViewModel =
                        new ModbusMemoryEntityViewModel(_modbusConversionParametersViewModels[i]);
                    ModbusMemoryEntityViewModels.Add(modbusMemoryEntityViewModel);
                }
                ModbusMemoryEntityViewModels[i].SetAddress(modbusMemorySettings.BaseAdress + i);
                ModbusMemoryEntityViewModels[i].SetError();
            }
            if (isQueriesStartedBefore)
            {
                IsQueriesStarted = true;
            }
            else
            {
                ModbusMemoryEntityViewModels.ForEach((model => model.SetError()));
            }
        }