using System; using log4net; using TBF.Boxes; namespace TBF.BenchControl.Elde.RegisterReader { public class ReadRegisterOp : IOperation { private static readonly ILog log = LogManager.GetLogger(typeof(ReadRegisterOp)); public override string ToString() { return string.Format("ReadRegisterOp({0})", reader.Name); } /// Set by the constructor readonly RegisterReader reader; IntBox pulses; IntBox refPulses; /// /// Events: Event.ReadRegisterDone or Event.Error /// /// Register reader reference /// Reference to a field with the water meter pulses public ReadRegisterOp(GenericDevices.IRegisterReader reader, ref IntBox pulses) { this.reader = reader as RegisterReader; if (reader == null) throw new ArgumentNullException("reader is null or it is not Elde"); this.pulses = pulses; log.Debug(this.ToString()); } /// /// Events: Event.ReadRegisterDone or Event.Error /// /// Register reader reference /// Reference to a Box with the water meter pulses /// Reference to a Box with the reference flow meter pulses synchronized with the water meter public ReadRegisterOp(GenericDevices.IRegisterReader reader, ref IntBox pulses, ref IntBox refPulses) : this(reader, ref pulses) { this.refPulses = refPulses; log.Debug(this.ToString()); } private void ReadPulses() { pulses.Val = (int)reader.ControlBoard.WMeterPulses(reader.Position); if (refPulses != null) { refPulses.Val = (int)reader.ControlBoard.EtPulses(reader.Position); } } /// Start this operation public void Start() { ReadPulses(); } /// Run this operation /// eventDone public Event Run() { ReadPulses(); return Event.ReadRegisterDone; } /// Stop this operation public void Stop() { } } }