public void UpdateValue(Data data, bool readOnlyOverride = false) { var normalisedAddress = AddressTools.AddressNormalisation(data.Address); var addressType = AddressTools.AddressType(data.Address); if (addressType != data.Type) { throw new DataTypeDoesNotMatchAddressException(data.Address.ToString()); } if (ValueExists(data.Address)) { switch (addressType) { case DataType.Coil: Coils.Find(c => c.Address == normalisedAddress).Update(data.Value, readOnlyOverride); break; case DataType.DiscreteInput: DiscreteInputs.Find(c => c.Address == normalisedAddress).Update(data.Value, readOnlyOverride); break; case DataType.InputRegister: InputRegisters.Find(c => c.Address == normalisedAddress).Update(data.Value, readOnlyOverride); break; case DataType.HoldingRegister: HoldingRegisters.Find(c => c.Address == normalisedAddress).Update(data.Value, readOnlyOverride); break; } } else { var normalisedData = Data.Create(normalisedAddress, data.Type); switch (addressType) { case DataType.Coil: Coils.Add(normalisedData); break; case DataType.DiscreteInput: DiscreteInputs.Add(normalisedData); break; case DataType.InputRegister: InputRegisters.Add(normalisedData); break; case DataType.HoldingRegister: HoldingRegisters.Add(normalisedData); break; } } }
public UInt16 GetInputRegister(UInt16 address) { var finded = InputRegisters.Find(x => x.Address == address); return(finded.Value); }