예제 #1
0
 public ModbusMemorySettingsViewModel()
 {
     NumberOfPointsCollection = new ObservableCollection <int>()
     {
         8, 12, 16, 32
     };
     NumberOfPoints         = NumberOfPointsCollection[1];
     AddressStepDownCommand = new DelegateCommand(OnAddressStepDownExecute);
     AddressStepUpCommand   = new DelegateCommand(OnAddressStepUpExecute);
     _modbusMemorySettings  = new ModbusMemorySettings();
 }
예제 #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()));
            }
        }