public object Clone()
        {
            IModbusMemoryEntityViewModel memoryEntityViewModel = new ModbusMemoryEntityViewModel(this._memoryBitGettingFunc, this._modbusMemoryEntityGettingFunc, this._modbusConversionParametersViewModel);

            memoryEntityViewModel.SetUshortValue((ushort)this._modbusMemoryEntity.DirectValue);

            memoryEntityViewModel.SetAddress(this._address);

            return(memoryEntityViewModel);
        }
Example #2
0
        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()));
            }
        }