/// /// Copyright (c) 2018 Sensus Slovensko a.s. /// using System; using log4net; using TBF.Boxes; namespace TBF.BenchControl.Modbus.UltrasoundLevelMeter { public class ReadLevelOp : IOperation { private static readonly ILog log = LogManager.GetLogger(typeof(ReadLevelOp)); public override string ToString() { return string.Format("ReadLevelOp(.,{0},.)", eventDone); } /// Set by the constructor readonly LevelMeter levelMeter; readonly Event eventDone; /// Measured value DoubleBox level; /// /// Events: LevelDone or Error /// /// Water level meter reference /// Reference to the measured level variable, value is in mm /// Event to be returned by Run() when completed OK public ReadLevelOp(LevelMeter levelMeter, ref DoubleBox level, Event eventDone) { if (levelMeter == null) throw new ArgumentNullException("levelMeter"); this.levelMeter = levelMeter; this.level = level; this.eventDone = eventDone; log.Debug(this.ToString()); } public ReadLevelOp(LevelMeter levelMeter, ref DoubleBox level) : this(levelMeter, ref level, Event.LevelDone) { } /// Start this operation public void Start() { level.Val = levelMeter.ReadLevel(); } /// Run this operation /// /// Event.LevelDone /// public Event Run() { level.Val = levelMeter.ReadLevel(); return eventDone; } /// Stop this operation public void Stop() { } } }