/// /// Copyright (c) 2013-2015 Sensus Metering Systems /// using System; using log4net; using TBF.Boxes; namespace TBF.BenchControl.Elde.PressureMeter { public class ReadPressureOp : IOperation { private static readonly ILog log = LogManager.GetLogger(typeof(ReadPressureOp)); public override string ToString() { return string.Format("ReadPressureOp(.,{0},{1},.)", eventDone, pressureMeterNr); } /// Set by the constructor readonly ControlBoardDev controlBoardDev; readonly int pressureMeterNr; readonly Event eventDone; FloatBox pressure; /// /// Events: PressureInDone, PressureOutDone or Error /// /// Pressure meter reference /// Reference to the measured pressure variable, value is in bar /// Event to be returned by Run() when completed OK public ReadPressureOp(PressureMeter pressureMeter, ref FloatBox pressure, Event eventDone) { if (pressureMeter == null) throw new ArgumentNullException("pressureMeter"); this.controlBoardDev = pressureMeter.ControlBoard; this.pressureMeterNr = pressureMeter.Idx0; this.eventDone = eventDone; this.pressure = pressure; log.Debug(this.ToString()); } public ReadPressureOp(PressureMeter pressureMeter, ref FloatBox pressure) : this(pressureMeter, ref pressure, Event.PressureDone) { } /// Start this operation public void Start() { pressure.Val = controlBoardDev.Pressure(pressureMeterNr); } /// Run this operation /// /// Event.PressureInDone or Event.PressureOutDone /// public Event Run() { pressure.Val = controlBoardDev.Pressure(pressureMeterNr); return eventDone; } /// Stop this operation public void Stop() { } } }