private void Add(bool isReadOnly, ModbusDescription rv) { mSignals.Add(rv.Signal.Specification.Id, rv); // add action for output signals if (isReadOnly) { if (rv.Index > 120) { throw new NotImplementedException("index cann't be more than 120"); } return; } if (rv.Index > kWagoOutputsStart + 120) { throw new NotImplementedException("index cann't be more than 120"); } if (rv.Index >= kWagoOutputsStart) { rv.Signal.OnUpdate += SignalUpdated; } }
/* * public void AddFloat(ISignal signal, ushort address, bool isReadOnly = true) * { * if (signal == null) * throw new ArgumentNullException("signal"); * * if (!IsValidAddress(SignalType.Float, address, byte.MaxValue)) * throw new ArgumentException(); * * var rv = new ModbusDescription(signal, SignalType.Float, mOutputData, address, byte.MaxValue, isReadOnly); * mSignals.Add(rv.Signal.Id, rv); * } * * public void AddUint(ISignal signal, ushort address, bool isReadOnly = true) * { * if (signal == null) * throw new ArgumentNullException("signal"); * * if (!IsValidAddress(SignalType.Uint, address, byte.MaxValue)) * throw new ArgumentException(); * * var rv = new ModbusDescription(signal, SignalType.Uint, mOutputData, address, byte.MaxValue, isReadOnly); * mSignals.Add(rv.Signal.Id, rv); * } */ #endregion internal void AddInternalUshort(ISignal signal, ushort address, bool isReadOnly = true) { if (signal == null) { throw new ArgumentNullException("signal"); } if (address > kRegistersLenght) { throw new ArgumentOutOfRangeException("address", string.Format("address cann't be more than {0}", kRegistersLenght)); } if (!IsValidAddress(SignalType.Ushort, address, byte.MaxValue)) { throw new ArgumentException(); } var rv = new ModbusDescription(signal, SignalType.Ushort, address, byte.MaxValue, isReadOnly); mSignals.Add(rv.Signal.Specification.Id, rv); // add action for output signals if (isReadOnly) { if (rv.Index > 120) { throw new NotImplementedException("index cann't be more than 120"); } return; } if (rv.Index > kWagoOutputsStart + 120) { throw new NotImplementedException("index cann't be more than 120"); } if (rv.Index >= kWagoOutputsStart) { rv.Signal.OnUpdate += SignalUpdated; } }
internal void AddDiscreet(ISignal signal, ushort address, byte bit, bool isReadOnly = true) { if (signal == null) { throw new ArgumentNullException("signal"); } if (address > kRegistersLenght) { throw new ArgumentOutOfRangeException("address", string.Format("address cann't be more than {0}", kRegistersLenght)); } if (!IsValidAddress(SignalType.Bool, address, bit)) { throw new ArgumentException(); } var rv = new ModbusDescription(signal, SignalType.Bool, address, bit, isReadOnly); Add(isReadOnly, rv); }