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