/// /// Copyright (c) 2015-2016 Sensus Metering Systems /// using System; using log4net; using TBF.Boxes; namespace TBF.Rig.MettlerToledo.Multi { public class TaringOp : IOperation { private static readonly ILog log = LogManager.GetLogger(typeof(TaringOp)); public override string ToString() { return string.Format("TaringOp(.,.)"); } bool done; /// Set by the constructor BalanceDev balanceDev; DoubleBox tara; /// /// Events: BalanceDone, Error /// /// Balance device instance /// Reference to variable for 'tara' in kg public TaringOp(BalanceDev balanceDev, ref DoubleBox tara) { if (balanceDev == null) throw new ArgumentNullException("balanceDev"); this.balanceDev = balanceDev; this.tara = tara; log.Debug(this.ToString()); } /// Start this operation public void Start() { tara.Val = 0.0f; // Don't do anything, tara = 0 done = true; } /// Run this operation /// /// Event.None /// Event.BalanceDone /// Event.Error . . . . . Current.Tick == null /// public Event Run() { if (done) return Event.ScaleDone; /// Taring has been done already if (balanceDev.MsrmntState == MsrmntState.Busy) return Event.Busy; if (balanceDev.MsrmntState == MsrmntState.Overload) { tara.Val = balanceDev.Capacity; done = true; return Event.ScaleOverload; } if (balanceDev.MsrmntState == MsrmntState.Valid) { tara.Val = balanceDev.Mass; done = true; return Event.ScaleDone; /// Taring completed } return Event.Busy; } /// Stop this operation public void Stop() { } } }