/// /// Copyright (c) 2013-2015 Sensus Metering Systems /// using System; using System.Collections.Generic; using log4net; using TBF.BenchControl.Generic; using TBF.Boxes; namespace TBF.BenchControl.Elde.PressureMeter { public class PressureMeter : ComponentBase, GenericDevices.IPressureMeter { private static readonly ILog log = LogManager.GetLogger(typeof(PressureMeter)); public override string ToString() { return string.Format("PressureMeter({0})", Cfg.ToString(1)); } readonly PressureMeterCfg pressureMeterCfg; public readonly ControlBoardDev ControlBoard; public readonly int Idx0; /// 0..3 public readonly byte RS485Address; /// 0..255 public PressureMeter() { } public PressureMeter(PressureMeterCfg cfg, IList components) : base(cfg) { pressureMeterCfg = cfg; ControlBoard = (ControlBoardDev)TbfComponents.FindComponent(cfg.ParentName, components); if (ControlBoard == null) throw new Exception("Cannot find " + Name + " parent"); Idx0 = cfg.Idx0; RS485Address = cfg.RS485Address; /// Prepare data for SendCalibData() control board component method ControlBoard.MeretRS485Address[Idx0] = RS485Address; log.Debug(this.ToString()); } /// /// Returns the water pressure /// /// Pressure in mBar public float ReadPressure() { return 0.01F * ControlBoard.Pressure(Idx0); /// converted from [kPa] to [bar] } /// /// Events: PressureDone, Error /// /// Reference to a variable for the pressure in Bar /// ReadPressureOp instance reference casted to IOperaton public IOperation ReadPressureOp(ref FloatBox pressure) { return new ReadPressureOp(this, ref pressure); } /// /// Events: pressureDone, Error /// /// Reference to a variable for the pressure in Bar /// Event returned when measurement done /// ReadPressureOp instance reference casted to IOperaton public IOperation ReadPressureOp(ref FloatBox pressure, Event pressureDone) { return new ReadPressureOp(this, ref pressure, pressureDone); } } }