/// /// Copyright (c) 2017 Sensus Slovensko a.s. /// using System; using log4net; using TBF.Boxes; namespace TBF.BenchControl.Elde { public class ReadFlowOp : IOperation { private static readonly ILog log = LogManager.GetLogger(typeof(ReadFlowOp)); public override string ToString() { return string.Format("ReadFlowOp({0},.,.,{1})", flowMeter.Idx1, eventDone); } /// Set by the constructor readonly GenericDevices.IFlowMeter flowMeter; readonly ControlBoardDev controlBoard; readonly DoubleBox flowBox; readonly Event eventDone; /// /// Events: FlowInDone, FlowOutDone or Error /// /// Flow meter reference /// Reference to the measured flow variable, value is in bar /// Event to be returned by Run() when completed OK public ReadFlowOp(GenericDevices.IFlowMeter flowMeter, ControlBoardDev controlBoard, ref DoubleBox flowBox, Event eventDone) { if (flowMeter == null || controlBoard == null) throw new ArgumentNullException(); this.flowMeter = flowMeter; this.controlBoard = controlBoard; this.eventDone = eventDone; this.flowBox = flowBox; log.Debug(this.ToString()); } public ReadFlowOp(GenericDevices.IFlowMeter flowMeter, ControlBoardDev controlBoard, ref DoubleBox flowBox) : this(flowMeter, controlBoard, ref flowBox, Event.FlowMeasurementDone) { } /// Start this operation public void Start() { } /// Run this operation /// /// Event.FlowInDone or Event.FlowOutDone /// public Event Run() { if ((int)(controlBoard.StatusP & StatusP.RefFlowMeterMask) == flowMeter.Idx1) { flowBox.Val = flowMeter.ReadFlow(); return eventDone; } else { return Event.Error; } } /// Stop this operation public void Stop() { } } }