/// /// Copyright (c) 2016 Sensus Metering Systems /// using System; using log4net; using TBF.Boxes; using TBF.BenchControl.Keithley.Multimeter_2010_RS232; namespace TBF.BenchControl.Keithley.TempMeter { public class ReadTempOp : IOperation { private static readonly ILog log = LogManager.GetLogger(typeof(ReadTempOp)); public override string ToString() { return string.Format("ReadTempOp({0},.,{1})", tempMeter.Name, eventDone); } /// Set by the constructor readonly TempMeter tempMeter; readonly DoubleBox temperature; readonly Event eventDone; /// /// Events: TempInDone, TempOutDone, TempDivDone or Error /// /// TempMeter reference /// Reference to the variable, value is in degree Celsius /// Event to be returned by Run() when completed OK public ReadTempOp(TempMeter tempMeter, ref DoubleBox temperature, Event eventDone) { if (tempMeter == null) throw new ArgumentNullException("tempMeter"); this.tempMeter = tempMeter; this.temperature = temperature; this.eventDone = eventDone; log.Debug(this.ToString()); } public ReadTempOp(TempMeter tempMeter, ref DoubleBox temperature) : this(tempMeter, ref temperature, Event.TempDone) { } /// Start this operation public void Start() { tempMeter.Multimeter.StartReadingMultimeter(tempMeter.Channel); temperature.Val = 0; } /// Run this operation /// /// Event.TempInDone, Event.TempOutDone or Event.TempDivDone /// public Event Run() { temperature.Val = tempMeter.ReadTemperature(); return eventDone; } /// Stop this operation public void Stop() { tempMeter.Multimeter.StopReadingMultimeter(tempMeter.Channel); } } }