RegisterReader simplified, ReadRegisterOp( ) removed from IRegReader, ReadMoreRegistersOp removed.
This commit is contained in:
@@ -20,7 +20,5 @@ namespace TBF.Rig.GenericDevices
|
||||
double WMVolume { get; } /// Counted volume of the water meter
|
||||
double BeginWMState { get; } /// Test begin state of the water meter
|
||||
double EndWMState { get; } /// Test end state of the water meter
|
||||
|
||||
IOperation ReadRegisterOp();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,13 @@ namespace TBF.Rig.GenericDevices
|
||||
/// <summary>
|
||||
/// Watermeter wheel/arrow detection process.
|
||||
/// </summary>
|
||||
/// <returns>Reference to operation object instance</returns>
|
||||
/// <returns>Reference to operation object</returns>
|
||||
IOperation RoiDetectionOp();
|
||||
|
||||
/// <summary>
|
||||
/// Update values accessed by properties WMPulses, WMRefPulses, WMVolume, ...
|
||||
/// </summary>
|
||||
/// <returns>Reference to operation object</returns>
|
||||
IOperation ReadRegisterOp();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
///
|
||||
/// Copyright (c) 2017 Sensus Metering Systems
|
||||
/// Copyright (c) 2017-2021 Sensus Metering Systems
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
@@ -9,7 +9,7 @@ using Config.Entities;
|
||||
|
||||
namespace TBF.Rig.Network.Camera.RoiForFixedStart
|
||||
{
|
||||
public class Roi : ComponentBase, GenericDevices.IRegReaderStillCamera, IOperation
|
||||
public class Roi : ComponentBase, GenericDevices.IRegReaderStillCamera
|
||||
{
|
||||
/// TODO: Implement support for sharing one camera by multiple ROI-s
|
||||
|
||||
@@ -62,13 +62,10 @@ namespace TBF.Rig.Network.Camera.RoiForFixedStart
|
||||
|
||||
public int WMPulses { get { return (int)(WMVolume / LtrsPerPulse); } }
|
||||
|
||||
int wmRefPulses;
|
||||
public int WMRefPulses { get { return wmRefPulses; } }
|
||||
public int WMRefPulses { get { return StateMachine.ControlBoard.RefPulses; ; } }
|
||||
|
||||
|
||||
public Roi()
|
||||
{
|
||||
}
|
||||
public Roi() { }
|
||||
|
||||
public Roi(Generic.IComponentCfg cfg, IList<Generic.IComponent> components)
|
||||
: base(cfg)
|
||||
@@ -117,12 +114,6 @@ namespace TBF.Rig.Network.Camera.RoiForFixedStart
|
||||
log.DebugFormat("{0}:Clear()", Name);
|
||||
beginWMState = 0;
|
||||
endWMState = 0;
|
||||
wmRefPulses = 0;
|
||||
}
|
||||
|
||||
private void ReadPulses()
|
||||
{
|
||||
wmRefPulses = StateMachine.ControlBoard.RefPulses;
|
||||
}
|
||||
|
||||
|
||||
@@ -142,34 +133,5 @@ namespace TBF.Rig.Network.Camera.RoiForFixedStart
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Events: Event.ReadRegisterDone
|
||||
/// </summary>
|
||||
/// <returns>ReadWaterMeter instance reference casted to IOperaton</returns>
|
||||
public IOperation ReadRegisterOp()
|
||||
{
|
||||
return this;
|
||||
}
|
||||
|
||||
/// <summary>Start this operation</summary>
|
||||
public void Start()
|
||||
{
|
||||
ReadPulses();
|
||||
}
|
||||
|
||||
/// <summary>Run this operation</summary>
|
||||
/// <returns>eventDone</returns>
|
||||
public Event Run()
|
||||
{
|
||||
ReadPulses();
|
||||
return Event.ReadRegisterDone;
|
||||
}
|
||||
|
||||
/// <summary>Stop this operation</summary>
|
||||
public void Stop()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,89 +0,0 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2015 Sensus Metering Systems
|
||||
///
|
||||
using System;
|
||||
using log4net;
|
||||
using TBF.Rig;
|
||||
using TBF.Boxes;
|
||||
|
||||
namespace TBF.Rig.Operations
|
||||
{
|
||||
public class ReadMoreRegistersOp : IOperation
|
||||
{
|
||||
private static readonly ILog log = LogManager.GetLogger(typeof(ReadMoreRegistersOp));
|
||||
public override string ToString() { return string.Format("ReadAllRegistersOp()"); }
|
||||
|
||||
/// Set by the constructor
|
||||
int readersCount;
|
||||
IOperation[] readRegOps;
|
||||
|
||||
/// <summary>
|
||||
/// Events: eventDone (default=Event.ReadRegisterDone) or Event.Error
|
||||
/// </summary>
|
||||
/// <param name="register">Register reader reference</param>
|
||||
/// <param name="pulses">Reference to the water meter register state in pulses</param>
|
||||
public ReadMoreRegistersOp(GenericDevices.IRegReader[] readers)
|
||||
{
|
||||
if (readers == null) throw new ArgumentNullException("readers");
|
||||
|
||||
readersCount = readers.Length;
|
||||
|
||||
readRegOps = new IOperation[readersCount];
|
||||
for (int i = 0; i < readersCount; i++)
|
||||
{
|
||||
if (readers[i] != null) readRegOps[i] = readers[i].ReadRegisterOp();
|
||||
}
|
||||
|
||||
log.Debug(this.ToString());
|
||||
}
|
||||
|
||||
|
||||
/// <summary>Start this operation</summary>
|
||||
public void Start()
|
||||
{
|
||||
int oriRefPulses = Sequences.ProcessData.RefPulses;
|
||||
Sequences.ProcessData.RefPulses = StateMachine.ControlBoard.RefPulses;
|
||||
Sequences.ProcessData.RefPulsesDelta = Sequences.ProcessData.RefPulses - oriRefPulses;
|
||||
|
||||
for (int i = 0; i < readersCount; i++)
|
||||
{
|
||||
if (readRegOps[i] != null) readRegOps[i].Start();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Run this operation</summary>
|
||||
public Event Run()
|
||||
{
|
||||
bool allDone = true;
|
||||
bool anyError = false;
|
||||
|
||||
int oriRefPulses = Sequences.ProcessData.RefPulses;
|
||||
Sequences.ProcessData.RefPulses = StateMachine.ControlBoard.RefPulses;
|
||||
Sequences.ProcessData.RefPulsesDelta = Sequences.ProcessData.RefPulses - oriRefPulses;
|
||||
|
||||
for (int i = 0; i < readersCount; i++)
|
||||
{
|
||||
if (readRegOps[i] != null)
|
||||
{
|
||||
Event evnt = readRegOps[i].Run();
|
||||
|
||||
if (evnt == Event.Error) anyError = true;
|
||||
if (evnt != Event.ReadRegisterDone) allDone = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (anyError) return Event.Error;
|
||||
if (allDone) return Event.ReadAllRegistersDone;
|
||||
return Event.None;
|
||||
}
|
||||
|
||||
/// <summary>Stop this operation</summary>
|
||||
public void Stop()
|
||||
{
|
||||
for (int i = 0; i < readersCount; i++)
|
||||
{
|
||||
if (readRegOps[i] != null) readRegOps[i].Stop();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,8 +4,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using log4net;
|
||||
using TBF.Rig.ControlBoard.Legacy;
|
||||
using TBF.Boxes;
|
||||
|
||||
namespace TBF.Rig.RegisterReaders.PulsesFromUniCB
|
||||
{
|
||||
@@ -15,6 +13,7 @@ namespace TBF.Rig.RegisterReaders.PulsesFromUniCB
|
||||
public override string ToString() { return string.Format("RegisterReader({0})", Cfg.ToString(-1)); }
|
||||
|
||||
readonly RRCfg rrCfg;
|
||||
readonly TBF.Rig.ControlBoard.IControlBoard cb;
|
||||
|
||||
public int Position { get { return rrCfg.Position; } } /// 1 .. Config.Data.WMsCount
|
||||
|
||||
@@ -31,9 +30,6 @@ namespace TBF.Rig.RegisterReaders.PulsesFromUniCB
|
||||
public double EndWMState { get { return WMVolume; } } /// Derived from WMVolume
|
||||
|
||||
|
||||
readonly TBF.Rig.ControlBoard.IControlBoard cb;
|
||||
|
||||
|
||||
public RegisterReader() { }
|
||||
|
||||
public RegisterReader(Generic.IComponentCfg cfg, IList<Generic.IComponent> components)
|
||||
@@ -44,18 +40,7 @@ namespace TBF.Rig.RegisterReaders.PulsesFromUniCB
|
||||
cb = TbfComponents.FindComponent(cfg.ParentName, components) as TBF.Rig.ControlBoard.IControlBoard;
|
||||
if (cb == null) throw new Exception("Cannot find " + Name + " parent");
|
||||
|
||||
/// Prepare data for SendCalibData() control board component method
|
||||
|
||||
log.Warn(this.ToString());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Events: Event.ReadRegisterDone, Event.Error
|
||||
/// </summary>
|
||||
/// <returns>ReadWaterMeter instance reference casted to IOperaton</returns>
|
||||
public IOperation ReadRegisterOp()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -82,7 +82,6 @@ namespace TBF.Rig.Sequences
|
||||
protected static int nextShortPulses;
|
||||
|
||||
|
||||
protected IOperation readRegistersOp;
|
||||
protected IOperation queryEnd1;
|
||||
protected IOperation checkUiOp;
|
||||
|
||||
@@ -1071,7 +1070,6 @@ namespace TBF.Rig.Sequences
|
||||
State.Create("Read water meters")
|
||||
.AddOperation(checkUiOp)
|
||||
.AddOperations(measureOperations)
|
||||
.AddOperation(readRegistersOp)
|
||||
.AddOperation(benchPath.TempMtrUp == null ? null : benchPath.TempMtrUp.ReadTempOp(ref TempUp))
|
||||
.AddOperation(benchPath.TempMtrDown == null ? null : benchPath.TempMtrDown.ReadTempOp(ref TempDown))
|
||||
.AddOperation(outPath.TempMtrDiv == null ? null : outPath.TempMtrDiv.ReadTempOp(ref TempDiv))
|
||||
@@ -1082,8 +1080,6 @@ namespace TBF.Rig.Sequences
|
||||
.AddOperation(heatMetersPath == null ? null : heatMetersPath.TMeterRefWarm2.ReadTempOp(ref TempRefHi2))
|
||||
.AddOperation(heatMetersPath == null ? null : heatMetersPath.TMeterRefCold1.ReadTempOp(ref TempRefLo1))
|
||||
.AddOperation(heatMetersPath == null ? null : heatMetersPath.TMeterRefCold2.ReadTempOp(ref TempRefLo2))
|
||||
.AddOperation((realTest && (outPath.Scale is IScale)) ? (outPath.Scale as IScale).ReadMassOp(ref Mass) : null)
|
||||
//.AddOperation(realTest ? (ticTac ? queryEnd1 : queryEnd2) : null)
|
||||
.AddOperation(realTest ? queryEnd1 : null)
|
||||
.AddOperation(realTest ? processDataLoggingOp : null)
|
||||
.EnterState();
|
||||
|
||||
@@ -173,9 +173,6 @@ namespace TBF.Rig.TestMethods.CombinedWithDetection
|
||||
/// int refPulses = (int)(timeSec * (2000.0f * targetFlow / pOut.FlowMeter.NominalFlow));
|
||||
int totalPulses = (int)(test.Volume / LtrPerRefPulse + 0.5f);
|
||||
|
||||
/// Meters path is required for the following:
|
||||
readRegistersOp = new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders);
|
||||
|
||||
//====================================
|
||||
loop:
|
||||
/// Read pressure and temperature once before calling Bridge.OnTestSelected(...)
|
||||
|
||||
@@ -526,10 +526,6 @@ namespace TBF.Rig.TestMethods.DiverterTest
|
||||
}
|
||||
while (!e.Contains(Event.TestInProgress));
|
||||
|
||||
|
||||
/// Measurement loop - preparation
|
||||
readRegistersOp = new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders);
|
||||
|
||||
int estimtdEndTime = StateMachine.Time + (int)(test.TestTime / testParams.DivRepetitions);
|
||||
|
||||
/// Measurement loop - begin
|
||||
@@ -537,8 +533,6 @@ namespace TBF.Rig.TestMethods.DiverterTest
|
||||
.AddOperation(checkUiOp)
|
||||
.AddOperations(readTempPressOps)
|
||||
.AddOperations(measureOperations)
|
||||
.AddOperation(readRegistersOp)
|
||||
.AddOperation(scale.ReadMassOp(ref Mass))
|
||||
//.AddOperation(cBrd.ReadDiverterTransitionOp(outPath.Diverter, CountWhenSendingRdDivCmd, CountWhenReadingDiv, true, DiverterStart, BatchRslts.Batch.BatchNr, test.Name, repetitionNr))
|
||||
.AddOperation(cBrd.QueryMeasurementEndOp())
|
||||
.AddOperation(processDataLoggingOp)
|
||||
|
||||
@@ -318,7 +318,6 @@ namespace TBF.Rig.TestMethods.Endurance
|
||||
|
||||
|
||||
/// Measurement loop - preparation
|
||||
readRegistersOp = new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders);
|
||||
queryEnd1 = cBrd.QueryMeasurementEndOp();
|
||||
|
||||
int estimtdEndTime = StateMachine.Time + (int)test.TestTime;
|
||||
@@ -329,7 +328,6 @@ namespace TBF.Rig.TestMethods.Endurance
|
||||
.AddOperation(checkUiOp)
|
||||
.AddOperations(readTempPressOps)
|
||||
.AddOperations(measureOperations)
|
||||
.AddOperation(readRegistersOp)
|
||||
.AddOperation(queryEnd1)
|
||||
.AddOperation(processDataLoggingOp)
|
||||
.AddOperation(enduranceDataLoggingOp)
|
||||
|
||||
@@ -546,7 +546,6 @@ namespace TBF.Rig.TestMethods.FixedStart
|
||||
log.WarnFormat("Start valve switch time on test start = {0} ms", cBrd.ValveOpenCloseTime);
|
||||
|
||||
/// Measurement loop - preparation
|
||||
readRegistersOp = new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders);
|
||||
queryEnd1 = cBrd.QueryMeasurementEndOp();
|
||||
|
||||
StartNewStatistics(StateMachine.Time, BatchRslts.Batch.BatchNr, test.Name, repetitionNr, Math.Max((int)(test.TestTime / 10), 5));
|
||||
|
||||
@@ -423,7 +423,6 @@ namespace TBF.Rig.TestMethods.FixedStartAdvanced
|
||||
|
||||
|
||||
/// Measurement loop - preparation
|
||||
readRegistersOp = new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders);
|
||||
queryEnd1 = cBrd.QueryMeasurementEndOp();
|
||||
|
||||
StartNewStatistics(StateMachine.Time, BatchRslts.Batch.BatchNr, test.Name, repetitionNr, Math.Max((int)(test.TestTime / 10), 5));
|
||||
|
||||
@@ -584,7 +584,6 @@ namespace TBF.Rig.TestMethods.FixedStartDeferredEval
|
||||
log.WarnFormat("Start valve switch time on test start = {0} ms", cBrd.ValveOpenCloseTime);
|
||||
|
||||
/// Measurement loop - preparation
|
||||
readRegistersOp = new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders);
|
||||
queryEnd1 = cBrd.QueryMeasurementEndOp();
|
||||
|
||||
StartNewStatistics(StateMachine.Time, BatchRslts.Batch.BatchNr, test.Name, repetitionNr, Math.Max((int)(test.TestTime / 10), 5));
|
||||
|
||||
@@ -510,7 +510,6 @@ namespace TBF.Rig.TestMethods.FixedStartMassCollAdvanced
|
||||
log.WarnFormat("Start valve switch time on test start = {0} ms", cBrd.ValveOpenCloseTime);
|
||||
|
||||
/// Measurement loop - preparation
|
||||
readRegistersOp = new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders);
|
||||
queryEnd1 = cBrd.QueryMeasurementEndOp();
|
||||
|
||||
StartNewStatistics(StateMachine.Time, BatchRslts.Batch.BatchNr, test.Name, repetitionNr, Math.Max((int)(test.TestTime / 10), 5));
|
||||
|
||||
-1
@@ -695,7 +695,6 @@ namespace TBF.Rig.TestMethods.FixedStartMassCollDeferredEval
|
||||
log.WarnFormat("Start valve switch time on test start = {0} ms", cBrd.ValveOpenCloseTime);
|
||||
|
||||
/// Measurement loop - preparation
|
||||
readRegistersOp = new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders);
|
||||
queryEnd1 = cBrd.QueryMeasurementEndOp();
|
||||
|
||||
StartNewStatistics(StateMachine.Time, BatchRslts.Batch.BatchNr, test.Name, repetitionNr, Math.Max((int)(test.TestTime / 10), 5));
|
||||
|
||||
@@ -672,7 +672,6 @@ namespace TBF.Rig.TestMethods.FixedStartMassCollection
|
||||
log.WarnFormat("Start valve switch time on test start = {0} ms", cBrd.ValveOpenCloseTime);
|
||||
|
||||
/// Measurement loop - preparation
|
||||
readRegistersOp = new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders);
|
||||
queryEnd1 = cBrd.QueryMeasurementEndOp();
|
||||
|
||||
StartNewStatistics(StateMachine.Time, BatchRslts.Batch.BatchNr, test.Name, repetitionNr, Math.Max((int)(test.TestTime / 10), 5));
|
||||
|
||||
@@ -510,7 +510,6 @@ namespace TBF.Rig.TestMethods.FixedStartTankCollection
|
||||
log.WarnFormat("Start valve switch time on test start = {0} ms", cBrd.ValveOpenCloseTime);
|
||||
|
||||
/// Measurement loop - preparation
|
||||
readRegistersOp = new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders);
|
||||
queryEnd1 = cBrd.QueryMeasurementEndOp();
|
||||
|
||||
StartNewStatistics(StateMachine.Time, BatchRslts.Batch.BatchNr, test.Name, repetitionNr, Math.Max((int)(test.TestTime / 10), 5));
|
||||
|
||||
@@ -1098,7 +1098,6 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollection
|
||||
|
||||
State.Create(string.Format("{0}({1}) : Reading watermeters", test.Method, test.Name))
|
||||
.AddOperation(checkUiOp)
|
||||
.AddOperation(new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders))
|
||||
.EnterState();
|
||||
StateMachine.WaitRunDevsRunOps();
|
||||
StateMachine.WaitRunDevsRunOps();
|
||||
|
||||
@@ -349,7 +349,6 @@ namespace TBF.Rig.TestMethods.PulsesTest
|
||||
while (!e.Contains(Event.TestInProgress));
|
||||
|
||||
/// Measurement loop - preparation
|
||||
readRegistersOp = new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders);
|
||||
queryEnd1 = cBrd.QueryMeasurementEndOp();
|
||||
|
||||
StartNewStatistics(StateMachine.Time, BatchRslts.Batch.BatchNr, test.Name, repetitionNr, 0);
|
||||
|
||||
@@ -351,7 +351,6 @@ namespace TBF.Rig.TestMethods.PulsesTestManual
|
||||
while (!e.Contains(Event.TestInProgress));
|
||||
|
||||
/// Measurement loop - preparation
|
||||
readRegistersOp = new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders);
|
||||
queryEnd1 = cBrd.QueryMeasurementEndOp();
|
||||
|
||||
StartNewStatistics(StateMachine.Time, BatchRslts.Batch.BatchNr, test.Name, repetitionNr, 0);
|
||||
|
||||
@@ -121,9 +121,6 @@ namespace TBF.Rig.TestMethods.SensitivityTest
|
||||
/// float timeSec = 3600.0f * timeHr;
|
||||
/// int refPulses = (int)(timeSec * (2000.0f * targetFlow / pOut.FlowMeter.NominalFlow));
|
||||
int totalPulses = (int)(test.Volume / LtrPerRefPulse + 0.5f);
|
||||
|
||||
/// Meters path is required for the following:
|
||||
readRegistersOp = new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders);
|
||||
|
||||
//====================================
|
||||
loop:
|
||||
|
||||
Reference in New Issue
Block a user