public DatumAddress CreateAddress(int numericValue) { if (!IsValid(numericValue)) { throw new ArgumentOutOfRangeException(); } var raw = ComputeAddress(numericValue); switch (Kind) { case DatumAddressKind.Coil: return(CoilAddress.FromRawValue(raw)); case DatumAddressKind.Input: return(InputAddress.FromRawValue(raw)); case DatumAddressKind.HoldingRegister: return(HoldingRegisterAddress.FromRawValue(raw)); case DatumAddressKind.InputRegister: return(InputRegisterAddress.FromRawValue(raw)); default: throw new ApplicationException(); } }
private static Tuple <DatumAddress, Type, int> CreateInputRegister(int numericValue, int baseValue, Type type, int size) { var raw = (ushort)(baseValue + size * (numericValue - 1)); return(Tuple.Create((DatumAddress)InputRegisterAddress.FromRawValue(raw), type, size)); }