diff --git a/TBF/Rig/ControlBoard/IAdvancedControlBoard.cs b/TBF/Rig/ControlBoard/IAdvancedControlBoard.cs
index 6cd191a6a..facae2243 100644
--- a/TBF/Rig/ControlBoard/IAdvancedControlBoard.cs
+++ b/TBF/Rig/ControlBoard/IAdvancedControlBoard.cs
@@ -28,7 +28,7 @@ namespace TBF.Rig.ControlBoard
/// Plotter for diverter end
/// Operation running a test
IOperation FlyingStartStopTestOp(Test test, double qFrom, double qTo, int pulsesCount,
- bool withDiverter, bool isProlonged, int massPulsesCount,
+ bool withDiverter, bool isDelayedStart, bool isProlonged, int massPulsesCount,
bool readDivTransition, Statistics divStartPlotter, Statistics divStopPlotter);
}
}
diff --git a/TBF/Rig/ControlBoard/Uni/Action.cs b/TBF/Rig/ControlBoard/Uni/Action.cs
index bd05b92b4..549fef046 100644
--- a/TBF/Rig/ControlBoard/Uni/Action.cs
+++ b/TBF/Rig/ControlBoard/Uni/Action.cs
@@ -41,6 +41,7 @@ namespace TBF.Rig.ControlBoard.Uni
public Command StartStop { get; set; } /// MeasureFlow, SetFlow, StartTest, StopTest and SwitchDiverter
public bool IsSyncMethod { get; set; } /// StartTest argument
public bool IsDivUsed { get; set; } /// StartTest argument
+ public bool IsDelayedStart { get; set; } /// StartTest argument
public bool IsStartStop { get; set; } /// StartTest argument
public bool IsProlonged { get; set; } /// StartTest argument
public bool ToTank { get; set; } /// SwitchDiverter argument
@@ -70,6 +71,7 @@ namespace TBF.Rig.ControlBoard.Uni
Route = 0;
IsSyncMethod = false;
IsDivUsed = false;
+ IsDelayedStart = false;
IsStartStop = false;
IsProlonged = false;
MassPulsesCount = 0;
@@ -131,6 +133,7 @@ namespace TBF.Rig.ControlBoard.Uni
FlowMId = flowMeterId,
IsSyncMethod = false,
IsDivUsed = false,
+ IsDelayedStart = false,
IsStartStop = false,
IsProlonged = false,
TotalPulsesCount = 0x7FFFFF,
@@ -143,6 +146,7 @@ namespace TBF.Rig.ControlBoard.Uni
FlowMId = action.FlowMId;
IsSyncMethod = false;
IsDivUsed = false;
+ IsDelayedStart = false;
IsStartStop = false;
IsProlonged = false;
TotalPulsesCount = action.TotalPulsesCount;
@@ -202,8 +206,8 @@ namespace TBF.Rig.ControlBoard.Uni
///----------------------------------------------------------------------------------------------
public static Action StartTest(bool isFromUI, int flowMId, int divId, int divThreshold,
- bool isSyncMethod, bool isDivUsed, bool isStartStop, bool isProlonged,
- int totalPulsesCount, int massPulsesCount = 0)
+ bool isSyncMethod, bool isDivUsed, bool isDelayedStart, bool isStartStop,
+ bool isProlonged, int totalPulsesCount, int massPulsesCount = 0)
{
return new Action
{
@@ -215,6 +219,7 @@ namespace TBF.Rig.ControlBoard.Uni
DivThreshold = divThreshold,
IsSyncMethod = isSyncMethod,
IsDivUsed = isDivUsed,
+ IsDelayedStart = isDelayedStart,
IsStartStop = isStartStop,
IsProlonged = isProlonged,
TotalPulsesCount = totalPulsesCount,
@@ -229,6 +234,7 @@ namespace TBF.Rig.ControlBoard.Uni
DivThreshold = action.DivThreshold;
IsSyncMethod = action.IsSyncMethod;
IsDivUsed = action.IsDivUsed;
+ IsDelayedStart = action.IsDelayedStart;
IsStartStop = action.IsStartStop;
IsProlonged = action.IsProlonged;
TotalPulsesCount = action.TotalPulsesCount;
@@ -576,7 +582,7 @@ namespace TBF.Rig.ControlBoard.Uni
}
}
- log.InfoFormat("Combined action: {0} Rt={1} Et={2} RV={3} Div#={4} Cmd={5} Sync={6} wDiv={7} S/S={8} Prolng={9} ToTank={10} Puls={11} MPls={12} RVMode={13} P1={14} P2={15} Ao1={19}",
+ log.InfoFormat("Combined action: {0} Rt={1} Et={2} RV={3} Div#={4} Cmd={5} Sync={6} wDiv={7} delStrt={8} S/S={9} Prolng={10} ToTank={11} Puls={12} MPls={13} RVMode={14} P1={15} P2={16} Ao1={20}",
((int)combinedAction.ActionId).ToString("X3"),
combinedAction.Route.ToString("X32"),
combinedAction.FlowMId,
@@ -585,6 +591,7 @@ namespace TBF.Rig.ControlBoard.Uni
combinedAction.StartStop,
combinedAction.IsSyncMethod,
combinedAction.IsDivUsed,
+ combinedAction.IsDelayedStart,
combinedAction.IsStartStop,
combinedAction.IsProlonged,
combinedAction.ToTank,
@@ -617,7 +624,7 @@ namespace TBF.Rig.ControlBoard.Uni
args = string.Format("RV={0} P1={1} P2={2} pid={3}", RegVId, RVMovePar1, RVMovePar2, PID);
break;
case ActionID.StartTest:
- args = string.Format("Et={0} Puls={1} MPls={2} Sync={3} Div={4} S/S={5} Prolonged={6}", FlowMId, TotalPulsesCount, MassPulsesCount, IsSyncMethod, IsDivUsed, IsStartStop, IsProlonged);
+ args = string.Format("Et={0} Puls={1} MPls={2} Sync={3} Div={4} DelStrt={5} S/S={6} Prolonged={7}", FlowMId, TotalPulsesCount, MassPulsesCount, IsSyncMethod, IsDivUsed, IsDelayedStart, IsStartStop, IsProlonged);
break;
case ActionID.RegVlvIncrMove:
args = string.Format("RV={0} Time={1}ms", RegVId, (RegVMode & RegValveMode.NegPulseWidth) != 0 ? -50 * RVMovePar1 : 50 * RVMovePar1);
diff --git a/TBF/Rig/ControlBoard/Uni/FlyingStartStopTestOp.cs b/TBF/Rig/ControlBoard/Uni/FlyingStartStopTestOp.cs
index af97fc83b..0b6487c15 100644
--- a/TBF/Rig/ControlBoard/Uni/FlyingStartStopTestOp.cs
+++ b/TBF/Rig/ControlBoard/Uni/FlyingStartStopTestOp.cs
@@ -1,5 +1,5 @@
///
-/// Copyright (c) 2021 Sensus Slovensko a.s.
+/// Copyright (c) 2021-2023 Sensus Slovensko a.s.
///
using System;
using log4net;
@@ -18,6 +18,7 @@ namespace TBF.Rig.ControlBoard.Uni
readonly double qTo;
readonly int pulsesCount; /// Number of reference pulses for a complete test
readonly bool withDiverter;
+ readonly bool isDelayedStart;
readonly bool isProlonged;
readonly int massPulsesCount; /// Number of reference pulses for mass collection
readonly bool readDivTransition;
@@ -48,8 +49,8 @@ namespace TBF.Rig.ControlBoard.Uni
/// true = Prolonged test with diverter
/// Test part 1 duration - number of reference flow meter pulses<
/// true = Read diverter transition
- public FlyingStartStopTestOp(UniCB cb, OutputPath devices, double qFrom, double qTo, int pulsesCount, bool withDiverter,
- bool isProlonged, int massPulsesCount,
+ public FlyingStartStopTestOp(UniCB cb, OutputPath devices, double qFrom, double qTo, int pulsesCount,
+ bool withDiverter, bool isDelayedStart, bool isProlonged, int massPulsesCount,
bool readDivTransition, Statistics divStartPlotter, Statistics divStopPlotter)
{
this.uniCB = cb;
@@ -57,6 +58,7 @@ namespace TBF.Rig.ControlBoard.Uni
this.qTo = qTo;
this.pulsesCount = pulsesCount;
this.withDiverter = withDiverter;
+ this.isDelayedStart = isDelayedStart;
this.isProlonged = withDiverter && isProlonged;
this.massPulsesCount = massPulsesCount;
this.readDivTransition = withDiverter && readDivTransition;
@@ -99,7 +101,7 @@ namespace TBF.Rig.ControlBoard.Uni
if (withDiverter) { uniCB.DivResolution = diverter.Resolution; }
uniCB.SetActivity((diverter != null) ? Activity.FlyingStartStopTestWithDiverter : Activity.FlyingStartStopTest);
uniCB.StartTest(false, flowMeter.Idx1, (diverter != null) ? diverter.DiverterNr : 0, (diverter != null) ? diverter.StartThreshold : 0,
- true, withDiverter, false, isProlonged, pulsesCount, massPulsesCount);
+ true, withDiverter, isDelayedStart, false, isProlonged, pulsesCount, massPulsesCount);
opState = OpState.StartingTest;
}
diff --git a/TBF/Rig/ControlBoard/Uni/OutputMessage.cs b/TBF/Rig/ControlBoard/Uni/OutputMessage.cs
index 142974daa..2d1aeee75 100644
--- a/TBF/Rig/ControlBoard/Uni/OutputMessage.cs
+++ b/TBF/Rig/ControlBoard/Uni/OutputMessage.cs
@@ -47,7 +47,7 @@ namespace TBF.Rig.ControlBoard.Uni
/// Command
message[4] = GetCommand(action);
message[5] = action.IsStart() ? GetStartParams(action) : action.IsStop() ? GetStopParams(action) : (byte)0;
- message[6] = (byte)(((arguments.DivId <= 0) ? 0 : (arguments.DivId - 1)) + ((arguments.FlowMId > 7) ? arguments.FlowMId : 0));
+ message[6] = (byte)(((arguments.DivId <= 0) ? 0 : (arguments.DivId - 1)) + ((arguments.FlowMId > 7) ? arguments.FlowMId : 0) + (action.IsDelayedStart ? 128 : 0));
int totalPulsesCount = (arguments.TotalPulsesCount < 0) ? 0 : arguments.TotalPulsesCount;
message[7] = (byte)(totalPulsesCount & 0xFF);
diff --git a/TBF/Rig/ControlBoard/Uni/StandingStartStopTestOp.cs b/TBF/Rig/ControlBoard/Uni/StandingStartStopTestOp.cs
index ccd131beb..aac89e6e3 100644
--- a/TBF/Rig/ControlBoard/Uni/StandingStartStopTestOp.cs
+++ b/TBF/Rig/ControlBoard/Uni/StandingStartStopTestOp.cs
@@ -77,7 +77,7 @@ namespace TBF.Rig.ControlBoard.Uni
if (withDiverter) { uniCB.DivResolution = diverter.Resolution; }
uniCB.SetActivity(Activity.StandingStartStopTest);
uniCB.StartTest(false, flowMeter.Idx1, (withDiverter ? diverter.DiverterNr : 0), 0,
- false, withDiverter, true, false, pulsesCount);
+ false, withDiverter, false, true, false, pulsesCount);
opState = OpState.StartingTest;
}
diff --git a/TBF/Rig/ControlBoard/Uni/UniCB.cs b/TBF/Rig/ControlBoard/Uni/UniCB.cs
index 9cfa31106..a6ccd9ee9 100644
--- a/TBF/Rig/ControlBoard/Uni/UniCB.cs
+++ b/TBF/Rig/ControlBoard/Uni/UniCB.cs
@@ -708,11 +708,11 @@ namespace TBF.Rig.ControlBoard.Uni
///
/// Operation running a test
public IOperation FlyingStartStopTestOp(Test test, double qFrom, double qTo, int pulsesCount, bool withDiverter = false,
- bool isProlonged = false, int massPulsesCount = 0, bool readDivTransition = false,
- TBF.Rig.Sequences.Statistics plotterStart = null, TBF.Rig.Sequences.Statistics plotterEnd = null)
+ bool isDelayedStart = false, bool isProlonged = false, int massPulsesCount = 0,
+ bool readDivTransition = false, Statistics plotterStart = null, Statistics plotterEnd = null)
{
- return new FlyingStartStopTestOp(this, devices, qFrom, qTo, pulsesCount, withDiverter, isProlonged, massPulsesCount,
- readDivTransition, plotterStart, plotterEnd);
+ return new FlyingStartStopTestOp(this, devices, qFrom, qTo, pulsesCount, withDiverter,
+ isDelayedStart, isProlonged, massPulsesCount, readDivTransition, plotterStart, plotterEnd);
}
///
@@ -804,13 +804,13 @@ namespace TBF.Rig.ControlBoard.Uni
}
public void StartTest(bool isFromUI, int flowMId, int divId, int divThreshold,
- bool isSyncMethod, bool isDivUsed, bool isStartStop, bool isProlonged,
+ bool isSyncMethod, bool isDivUsed, bool isDelayedStart, bool isStartStop, bool isProlonged,
int totalPulsesCount, int massPulsesCount = -1)
{
if (IsUIBlocked && isFromUI) return;
actionQueue.Enqueue(Action.StartTest(isFromUI, flowMId, divId, divThreshold,
- isSyncMethod, isDivUsed, isStartStop, isProlonged,
+ isSyncMethod, isDivUsed, isDelayedStart, isStartStop, isProlonged,
totalPulsesCount, massPulsesCount));
log.InfoFormat("Enqueue( StartTest(fm={0}, div={1}, Sync={2}, withDiv={3}, s/s={4}, prolonged={5} pulsesCount={6} massPulsesCount={7}) )",
flowMId, divId, isSyncMethod, isDivUsed, isStartStop, isProlonged, totalPulsesCount, massPulsesCount);
@@ -900,7 +900,7 @@ namespace TBF.Rig.ControlBoard.Uni
if (toTank)
{
- actionQueue.Enqueue(Action.StartTest(isFromUI, 0, divNr1, 127, true, true, false, false, int.MaxValue, 0));
+ actionQueue.Enqueue(Action.StartTest(isFromUI, 0, divNr1, 127, true, true, false, false, false, int.MaxValue, 0));
}
else
{
diff --git a/TBF/Rig/TestMethods/CombinedWithDetection/CombinedWithDetectionSeq.cs b/TBF/Rig/TestMethods/CombinedWithDetection/CombinedWithDetectionSeq.cs
index f4d9c3f20..c79a1ff39 100644
--- a/TBF/Rig/TestMethods/CombinedWithDetection/CombinedWithDetectionSeq.cs
+++ b/TBF/Rig/TestMethods/CombinedWithDetection/CombinedWithDetectionSeq.cs
@@ -66,7 +66,7 @@ namespace TBF.Rig.TestMethods.CombinedWithDetection
}
public IList Execute(Config.Entities.Test test, int repetitionNr, bool isLastRepetition,
- CombinedWithDetTestParams testParams,
+ bool isDelayedStart, CombinedWithDetTestParams testParams,
Common.DebugMode debugLevel)
{
if (debugLevel == Common.DebugMode.Simulate)
@@ -511,7 +511,7 @@ namespace TBF.Rig.TestMethods.CombinedWithDetection
.AddOperation(checkUiOp)
.AddOperations(readTempPressOps)
.AddOperations(measureOperations)
- .AddOperation(cBrd.FlyingStartStopTestOp(test, qfrom_detected, qto_detected, totalPulses, true, false, 0, true, DiverterStart, DiverterEnd))
+ .AddOperation(cBrd.FlyingStartStopTestOp(test, qfrom_detected, qto_detected, totalPulses, true, isDelayedStart, false, 0, true, DiverterStart, DiverterEnd))
.AddOperation(processDataLoggingOp)
.EnterState();
do {
diff --git a/TBF/Rig/TestMethods/CombinedWithDetection/TestMethod.cs b/TBF/Rig/TestMethods/CombinedWithDetection/TestMethod.cs
index 4f03f7ff7..d53e312b8 100644
--- a/TBF/Rig/TestMethods/CombinedWithDetection/TestMethod.cs
+++ b/TBF/Rig/TestMethods/CombinedWithDetection/TestMethod.cs
@@ -38,7 +38,7 @@ namespace TBF.Rig.TestMethods.CombinedWithDetection
public IList Execute(Test test, int repetNr, bool isLastRepetition)
{
- return (new CombinedWithDetectionSeq()).Execute(test, repetNr, isLastRepetition, testMethodCfg.TestParams, DebugLevel);
+ return (new CombinedWithDetectionSeq()).Execute(test, repetNr, isLastRepetition, false, testMethodCfg.TestParams, DebugLevel);
}
}
}
diff --git a/TBF/Rig/TestMethods/DiverterTest/DiverterTestSeq.cs b/TBF/Rig/TestMethods/DiverterTest/DiverterTestSeq.cs
index 66d4d136a..730f950a2 100644
--- a/TBF/Rig/TestMethods/DiverterTest/DiverterTestSeq.cs
+++ b/TBF/Rig/TestMethods/DiverterTest/DiverterTestSeq.cs
@@ -466,7 +466,7 @@ namespace TBF.Rig.TestMethods.DiverterTest
.AddOperation(checkUiOp)
.AddOperations(readTempPressOps)
.AddOperations(cameraMeasurementOps)
- .AddOperation(cBrd.FlyingStartStopTestOp(test, test.Qfrom, test.Qto, pulsesNow, true, false, 0, true, DiverterStart, DiverterEnd))
+ .AddOperation(cBrd.FlyingStartStopTestOp(test, test.Qfrom, test.Qto, pulsesNow, true, false, false, 0, true, DiverterStart, DiverterEnd))
.AddOperation(processDataLoggingOp)
.EnterState();
do {
diff --git a/TBF/Rig/TestMethods/FlyingStartFirstRepetWithMassColl/FlyingStartFirstRepetWithMassCollSeq.cs b/TBF/Rig/TestMethods/FlyingStartFirstRepetWithMassColl/FlyingStartFirstRepetWithMassCollSeq.cs
index 0e7dad1cc..12c96d60e 100644
--- a/TBF/Rig/TestMethods/FlyingStartFirstRepetWithMassColl/FlyingStartFirstRepetWithMassCollSeq.cs
+++ b/TBF/Rig/TestMethods/FlyingStartFirstRepetWithMassColl/FlyingStartFirstRepetWithMassCollSeq.cs
@@ -526,7 +526,7 @@ namespace TBF.Rig.TestMethods.FlyingStartFirstRepetWithMassColl
.AddOperations(cameraMeasurementOps);
if (repetitionNr == 1)
{
- state.AddOperation(cBrd.FlyingStartStopTestOp(test, test.Qfrom, test.Qto, totalPulses, true, false, 0, true, DiverterStart, DiverterEnd));
+ state.AddOperation(cBrd.FlyingStartStopTestOp(test, test.Qfrom, test.Qto, totalPulses, true, false, false, 0, true, DiverterStart, DiverterEnd));
}
else
{
diff --git a/TBF/Rig/TestMethods/FlyingStartMassCollComparative/FlyingStartMassCollComparativeSeq.cs b/TBF/Rig/TestMethods/FlyingStartMassCollComparative/FlyingStartMassCollComparativeSeq.cs
index d1b4ee5f3..f2e5567f4 100644
--- a/TBF/Rig/TestMethods/FlyingStartMassCollComparative/FlyingStartMassCollComparativeSeq.cs
+++ b/TBF/Rig/TestMethods/FlyingStartMassCollComparative/FlyingStartMassCollComparativeSeq.cs
@@ -622,7 +622,7 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollComparative
.AddOperation(checkUiOp)
.AddOperations(readTempPressOps)
.AddOperations(cameraMeasurementOps)
- .AddOperation(cBrd.FlyingStartStopTestOp(test, test.Qfrom, test.Qto, totalPulses, true, false, 0, true, DiverterStart, DiverterEnd))
+ .AddOperation(cBrd.FlyingStartStopTestOp(test, test.Qfrom, test.Qto, totalPulses, true, false, false, 0, true, DiverterStart, DiverterEnd))
.AddOperation(processDataLoggingOp)
.EnterState();
do {
diff --git a/TBF/Rig/TestMethods/FlyingStartMassCollProlonged/FlyingStartMassCollProlongedSeq.cs b/TBF/Rig/TestMethods/FlyingStartMassCollProlonged/FlyingStartMassCollProlongedSeq.cs
index ccd1c1854..1d0827aa7 100644
--- a/TBF/Rig/TestMethods/FlyingStartMassCollProlonged/FlyingStartMassCollProlongedSeq.cs
+++ b/TBF/Rig/TestMethods/FlyingStartMassCollProlonged/FlyingStartMassCollProlongedSeq.cs
@@ -519,7 +519,7 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollProlonged
DiverterStart.Start(BatchRslts.Batch.BatchNr, test.Name, repetitionNr);
DiverterEnd.Start(BatchRslts.Batch.BatchNr, test.Name, repetitionNr);
- var prolongedTest = cBrd.FlyingStartStopTestOp(test, test.Qfrom, test.Qto, targetTotalPulses, true, true, targetMassPulses, true, DiverterStart, DiverterEnd);
+ var prolongedTest = cBrd.FlyingStartStopTestOp(test, test.Qfrom, test.Qto, targetTotalPulses, true, false, true, targetMassPulses, true, DiverterStart, DiverterEnd);
///
/// Measurement loop - 1st part
diff --git a/TBF/Rig/TestMethods/FlyingStartMassCollection/Compound/CombinedTestParams.cs b/TBF/Rig/TestMethods/FlyingStartMassCollection/Compound/CombinedTestParams.cs
index a2cd1eb70..161adcb03 100644
--- a/TBF/Rig/TestMethods/FlyingStartMassCollection/Compound/CombinedTestParams.cs
+++ b/TBF/Rig/TestMethods/FlyingStartMassCollection/Compound/CombinedTestParams.cs
@@ -1,9 +1,8 @@
///
-/// Copyright (c) 2013-2016 Sensus Metering Systems
+/// Copyright (c) 2013-2023 Sensus Slovensko a.s.
///
using System;
using System.IO;
-using System.Text;
using System.Xml.Serialization;
using Common;
using Config.Entities;
@@ -17,17 +16,20 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollection.Compound
public static XmlSerializer Serializer = XmlSerializer.FromTypes(new[] { typeof(CombinedTestParams) })[0];
public override XmlSerializer GetSerializer() { return Serializer; }
- public bool SupressTrills; /// Main meter readings are ignored during test (suitable for small flows)
+ public bool DelayedStart; /// true = Test start (=gating pulses from meters) is delayed by 2 s
+ public bool SupressTrills; /// true = Main meter readings are ignored during test (suitable for small flows)
public override void InitializeAll()
{
- SupressTrills = false;
+ DelayedStart = false;
+ SupressTrills = false;
}
string[] paramNames = new string[]
{
- Strings.SupressWMTrills,
+ "Delayed start",
+ Strings.SupressWMTrills,
};
public override string ParamName(int i) { return paramNames[i]; }
public override int ParamsCount() { return paramNames.Length; }
@@ -36,28 +38,31 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollection.Compound
{
switch (i)
{
- case 0: return (SupressTrills ? Strings.yes : Strings.no);
+ case 0: return DelayedStart ? Strings.yes : Strings.no;
+ case 1: return SupressTrills ? Strings.yes : Strings.no;
default: return string.Empty;
}
}
- public CfgUpdateFlags UpdateParam(int i, string strValue)
+ public CfgUpdateFlags UpdateParam(int i, string str)
{
switch (i)
{
- case 0: SupressTrills = strValue.Equals(Strings.yes); return CfgUpdateFlags.None;
+ case 0: DelayedStart = str.Equals(Strings.yes); return CfgUpdateFlags.None;
+ case 1: SupressTrills = str.Equals(Strings.yes); return CfgUpdateFlags.None;
default: return CfgUpdateFlags.None;
}
}
- public bool ValidateParam(int i, string strValue, out string message)
+ public bool ValidateParam(int i, string str, out string message)
{
message = string.Empty;
switch (i)
{
case 0:
- if (strValue.Equals(Strings.yes) || strValue.Equals(Strings.no)) return true;
+ case 1:
+ if (str.Equals(Strings.yes) || str.Equals(Strings.no)) return true;
break;
default:
message = "Invalid index";
@@ -70,7 +75,8 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollection.Compound
void CopyContentTo(CombinedTestParams prms)
{
- prms.SupressTrills = this.SupressTrills;
+ prms.DelayedStart = DelayedStart;
+ prms.SupressTrills = SupressTrills;
}
public IParamsProvider Clone()
diff --git a/TBF/Rig/TestMethods/FlyingStartMassCollection/Compound/Component.cs b/TBF/Rig/TestMethods/FlyingStartMassCollection/Compound/Component.cs
index e23656e9f..e0d8417cd 100644
--- a/TBF/Rig/TestMethods/FlyingStartMassCollection/Compound/Component.cs
+++ b/TBF/Rig/TestMethods/FlyingStartMassCollection/Compound/Component.cs
@@ -1,5 +1,5 @@
///
-/// Copyright (c) 2013-2016 Sensus Metering Systems
+/// Copyright (c) 2013-2023 Sensus Slovensko a.s.
///
using System;
using System.Collections.Generic;
@@ -38,7 +38,8 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollection.Compound
public IList Execute(Test test, int repetNr, bool isLastRepetition)
{
- return (new FlyingStartMassCollectionSeq()).Execute(test, repetNr, isLastRepetition, testMethodCfg.TestParams, null, DebugLevel);
+ return new FlyingStartMassCollectionSeq().Execute(test, repetNr, isLastRepetition,
+ testMethodCfg.TestParams.DelayedStart, testMethodCfg.TestParams, null, DebugLevel);
}
}
}
diff --git a/TBF/Rig/TestMethods/FlyingStartMassCollection/FlyingStartMassCollectionSeq.cs b/TBF/Rig/TestMethods/FlyingStartMassCollection/FlyingStartMassCollectionSeq.cs
index 2f4564815..cb860c8ba 100644
--- a/TBF/Rig/TestMethods/FlyingStartMassCollection/FlyingStartMassCollectionSeq.cs
+++ b/TBF/Rig/TestMethods/FlyingStartMassCollection/FlyingStartMassCollectionSeq.cs
@@ -82,10 +82,9 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollection
/// Event.OpArgumentError . Target flow is out of range
/// Event.Error . . . . . . Unspecified error
///
- public IList Execute(Config.Entities.Test test, int repetitionNr, bool isLastRepetition,
- Compound.CombinedTestParams compoundTestParams,
- HeatMeters.TestParams heatMetersTestParams,
- Common.DebugMode debugLevel)
+ public IList Execute(Test test, int repetitionNr, bool isLastRepetition,
+ bool isDelayedStart, Compound.CombinedTestParams compoundTestParams,
+ HeatMeters.TestParams heatMetersTestParams, DebugMode debugLevel)
{
if (debugLevel == Common.DebugMode.Simulate)
{
@@ -530,7 +529,7 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollection
.AddOperations(readTempPressOps)
.AddOperations(readDatastreamOps)
.AddOperations(cameraMeasurementOps)
- .AddOperation(cBrd.FlyingStartStopTestOp(test, test.Qfrom, test.Qto, totalPulses, true, false, 0, true, DiverterStart, DiverterEnd))
+ .AddOperation(cBrd.FlyingStartStopTestOp(test, test.Qfrom, test.Qto, totalPulses, true, isDelayedStart, false, 0, true, DiverterStart, DiverterEnd))
.AddOperation(processDataLoggingOp)
.EnterState();
do {
diff --git a/TBF/Rig/TestMethods/FlyingStartMassCollection/HeatMeters/Component.cs b/TBF/Rig/TestMethods/FlyingStartMassCollection/HeatMeters/Component.cs
index a2af0c42b..058dfd7b9 100644
--- a/TBF/Rig/TestMethods/FlyingStartMassCollection/HeatMeters/Component.cs
+++ b/TBF/Rig/TestMethods/FlyingStartMassCollection/HeatMeters/Component.cs
@@ -1,5 +1,5 @@
///
-/// Copyright (c) 2013-2016 Sensus Metering Systems
+/// Copyright (c) 2013-2023 Sensus Slovensko a.s.
///
using System;
using System.Collections.Generic;
@@ -37,7 +37,8 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollection.HeatMeters
public IList Execute(Test test, int repetNr, bool isLastRepetition)
{
- return (new FlyingStartMassCollectionSeq()).Execute(test, repetNr, isLastRepetition, null, testMethodCfg.TestParams, DebugLevel);
+ return new FlyingStartMassCollectionSeq().Execute(test, repetNr, isLastRepetition,
+ testMethodCfg.TestParams.DelayedStart, null, testMethodCfg.TestParams, DebugLevel);
}
}
}
diff --git a/TBF/Rig/TestMethods/FlyingStartMassCollection/HeatMeters/TestParams.cs b/TBF/Rig/TestMethods/FlyingStartMassCollection/HeatMeters/TestParams.cs
index 06a36932c..d8c7a6e0b 100644
--- a/TBF/Rig/TestMethods/FlyingStartMassCollection/HeatMeters/TestParams.cs
+++ b/TBF/Rig/TestMethods/FlyingStartMassCollection/HeatMeters/TestParams.cs
@@ -1,9 +1,8 @@
///
-/// Copyright (c) 2013-2016 Sensus Metering Systems
+/// Copyright (c) 2013-2023 Sensus Slovensko a.s.
///
using System;
using System.IO;
-using System.Text;
using System.Xml.Serialization;
using Common;
using Config.Entities;
@@ -30,14 +29,16 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollection.HeatMeters
public float ChangeInTimeWarm;
public float ChangeInTimeCold;
public string Prompt;
+ public bool DelayedStart; /// true = Test start (=gating pulses from meters) is delayed by 2 s
- public override void InitializeAll()
+ public override void InitializeAll()
{
FlowMeasuredAtHiTempPipe = false;
- }
-
+ DelayedStart = false;
+ }
- string[] paramNames = new string[]
+
+ string[] paramNames = new string[]
{
Strings.Err_limit_neg_pct_chdr,
Strings.Err_limit_pos_pct_chdr,
@@ -52,7 +53,8 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollection.HeatMeters
"Change in time T warm",
"Change in time T cold",
Strings.Prompt,
- };
+ "Delayed start",
+ };
public override string ParamName(int i) { return paramNames[i]; }
public override int ParamsCount() { return paramNames.Length; }
@@ -73,32 +75,34 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollection.HeatMeters
case 10: return ChangeInTimeWarm.ToString();
case 11: return ChangeInTimeCold.ToString();
case 12: return Prompt;
- default: return string.Empty;
+ case 13: return DelayedStart ? Strings.yes : Strings.no;
+ default: return string.Empty;
}
}
- public CfgUpdateFlags UpdateParam(int i, string strValue)
+ public CfgUpdateFlags UpdateParam(int i, string str)
{
switch (i)
{
- case 0: ErrorLimitLo = Utils.ParseSFloat(strValue); return CfgUpdateFlags.None;
- case 1: ErrorLimitHi = Utils.ParseSFloat(strValue); return CfgUpdateFlags.None;
- case 2: EvaluateVolume = strValue.Equals(Strings.yes); return CfgUpdateFlags.None;
- case 3: TempWarmLo = Utils.ParseSFloat(strValue); return CfgUpdateFlags.None;
- case 4: TempWarmHi = Utils.ParseSFloat(strValue); return CfgUpdateFlags.None;
- case 5: TempColdLo = Utils.ParseSFloat(strValue); return CfgUpdateFlags.None;
- case 6: TempColdHi = Utils.ParseSFloat(strValue); return CfgUpdateFlags.None;
- case 7: FlowMeasuredAtHiTempPipe = strValue.Equals(Strings.yes); return CfgUpdateFlags.None;
- case 8: DeltaTempWarm = Utils.ParseUFloat(strValue); return CfgUpdateFlags.None;
- case 9: DeltaTempCold = Utils.ParseUFloat(strValue); return CfgUpdateFlags.None;
- case 10: ChangeInTimeWarm = Utils.ParseUFloat(strValue); return CfgUpdateFlags.None;
- case 11: ChangeInTimeCold = Utils.ParseUFloat(strValue); return CfgUpdateFlags.None;
- case 12: Prompt = strValue; return CfgUpdateFlags.None;
+ case 0: ErrorLimitLo = Utils.ParseSFloat(str); return CfgUpdateFlags.None;
+ case 1: ErrorLimitHi = Utils.ParseSFloat(str); return CfgUpdateFlags.None;
+ case 2: EvaluateVolume = str.Equals(Strings.yes); return CfgUpdateFlags.None;
+ case 3: TempWarmLo = Utils.ParseSFloat(str); return CfgUpdateFlags.None;
+ case 4: TempWarmHi = Utils.ParseSFloat(str); return CfgUpdateFlags.None;
+ case 5: TempColdLo = Utils.ParseSFloat(str); return CfgUpdateFlags.None;
+ case 6: TempColdHi = Utils.ParseSFloat(str); return CfgUpdateFlags.None;
+ case 7: FlowMeasuredAtHiTempPipe = str.Equals(Strings.yes); return CfgUpdateFlags.None;
+ case 8: DeltaTempWarm = Utils.ParseUFloat(str); return CfgUpdateFlags.None;
+ case 9: DeltaTempCold = Utils.ParseUFloat(str); return CfgUpdateFlags.None;
+ case 10: ChangeInTimeWarm = Utils.ParseUFloat(str); return CfgUpdateFlags.None;
+ case 11: ChangeInTimeCold = Utils.ParseUFloat(str); return CfgUpdateFlags.None;
+ case 12: Prompt = str; return CfgUpdateFlags.None;
+ case 13: DelayedStart = str.Equals(Strings.yes); return CfgUpdateFlags.None;
default: return CfgUpdateFlags.None;
}
}
- public bool ValidateParam(int i, string strValue, out string message)
+ public bool ValidateParam(int i, string str, out string message)
{
message = string.Empty;
float dummy;
@@ -111,17 +115,18 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollection.HeatMeters
case 4:
case 5:
case 6:
- if (Utils.TryParseSFloat(strValue, out dummy)) return true;
+ if (Utils.TryParseSFloat(str, out dummy)) return true;
break;
case 2:
case 7:
- if (strValue.Equals(Strings.yes) || strValue.Equals(Strings.no)) return true;
+ case 13:
+ if (str.Equals(Strings.yes) || str.Equals(Strings.no)) return true;
break;
case 8:
case 9:
case 10:
case 11:
- if (Utils.TryParseUFloat(strValue, out dummy)) return true;
+ if (Utils.TryParseUFloat(str, out dummy)) return true;
break;
case 12:
return true;
@@ -149,9 +154,10 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollection.HeatMeters
prms.ChangeInTimeWarm = ChangeInTimeWarm;
prms.ChangeInTimeCold = ChangeInTimeCold;
prms.Prompt = Prompt;
- }
+ prms.DelayedStart = DelayedStart;
+ }
- public IParamsProvider Clone()
+ public IParamsProvider Clone()
{
TestParams pars = new TestParams();
CopyContentTo(pars);
diff --git a/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/Component.cs b/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/Component.cs
index cf7fc80bc..16216d4dd 100644
--- a/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/Component.cs
+++ b/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/Component.cs
@@ -1,5 +1,5 @@
///
-/// Copyright (c) 2013-2021 Sensus Slovensko a.s.
+/// Copyright (c) 2013-2023 Sensus Slovensko a.s.
///
using System;
using System.Collections.Generic;
@@ -23,11 +23,15 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollection.Single
return FlyingStartMassCollectionSeq.CheckDeviceCaps(test, devices, out message);
}
+
+ readonly TestMethodCfg testMethodCfg;
+
public Component() { }
///
public Component(Generic.IComponentCfg cfg)
: base(cfg)
{
+ testMethodCfg = cfg as TestMethodCfg;
log.Warn(this.ToString());
}
///
@@ -37,7 +41,8 @@ namespace TBF.Rig.TestMethods.FlyingStartMassCollection.Single
{
if (DebugLevel == DebugMode.Normal)
{
- return (new FlyingStartMassCollectionSeq()).Execute(test, repetNr, isLastRepetition, null, null, DebugLevel);
+ return new FlyingStartMassCollectionSeq().Execute(test, repetNr, isLastRepetition,
+ testMethodCfg.TestParams.DelayedStart, null, null, DebugLevel);
}
else
{
diff --git a/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/Factory.cs b/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/Factory.cs
index d9f8bfe89..edc539156 100644
--- a/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/Factory.cs
+++ b/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/Factory.cs
@@ -1,22 +1,21 @@
///
-/// Copyright (c) 2016 Sensus Metering Systems
+/// Copyright (c) 2016-2023 Sensus Slovensko a.s.
///
using System.Collections.Generic;
using TBF.Rig.Generic;
-using TBF.Rig.Configs.NameOnly;
namespace TBF.Rig.TestMethods.FlyingStartMassCollection.Single
{
public class Factory : IComponentFactory
{
- public string ClassName { get { return this.GetType().Namespace.Substring(8); } }
+ public string ClassName { get { return GetType().Namespace.Substring(8); } }
public override string ToString() { return ClassName; }
public IComponent DummyComponent() { return new Component(); }
public IComponent GetComponent(IComponentCfg cfg, IList components) { return new Component(cfg); }
- public IComponentCfg DefaultConfig() { return new TestMethodCfg(this.GetType().Namespace.Substring(20).Replace(".Single", ""), this); }
+ public IComponentCfg DefaultConfig() { return new TestMethodCfg(GetType().Namespace.Substring(20).Replace(".Single", ""), this); }
public IComponentCfg CmpntCfgFromCmpntEntity(Config.Entities.Component component)
{
diff --git a/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/TestMethodCfg.cs b/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/TestMethodCfg.cs
new file mode 100644
index 000000000..0d2afccd2
--- /dev/null
+++ b/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/TestMethodCfg.cs
@@ -0,0 +1,50 @@
+///
+/// Copyright (c) 2023 Sensus Slovensko a.s.
+///
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Xml.Serialization;
+using Common;
+using Config.Entities;
+using TBF.Rig.Generic;
+
+namespace TBF.Rig.TestMethods.FlyingStartMassCollection.Single
+{
+ public class TestMethodCfg : ComponentCfgBase, Generic.IComponentCfg
+ {
+ public static XmlSerializer Serializer = XmlSerializer.FromTypes(new[] { typeof(TestMethodCfg) })[0];
+ public override XmlSerializer GetSerializer() { return Serializer; }
+
+ public IComponentCfgCtrl GetControl(IList cmpntEntities) { return new TestMethodCfgCtrl(); }
+
+ /// Test parameters
+ [XmlIgnore]
+ public TestParams TestParams;
+ public override IParamsProvider GetRuntimeTestParamsProvider() { return TestParams; }
+ public override IParamsProvider CreateTestParamsProvider() { return new TestParams(true); }
+ public override IParamsProvider GetUITestParamsProvider(Test test)
+ {
+ return (test.Method == Name) ? base.GetUITestParamsProvider(test) : null;
+ }
+
+ /// Private parameterless constructor invoked by all other (public) constructors
+ TestMethodCfg()
+ {
+ TestParams = new TestParams(true);
+ }
+
+ public TestMethodCfg(string name, IComponentFactory factory)
+ : this()
+ {
+ Name = name;
+ Factory = factory;
+ ParentName = string.Empty;
+ }
+
+ public string ToString(int i)
+ {
+ return string.Format("Name={0}", Name);
+ }
+ }
+}
diff --git a/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/TestMethodCfgCtrl.cs b/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/TestMethodCfgCtrl.cs
new file mode 100644
index 000000000..bb0fc4010
--- /dev/null
+++ b/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/TestMethodCfgCtrl.cs
@@ -0,0 +1,70 @@
+///
+/// Copyright (c) 2023 Sensus Slovensko a.s.
+///
+using System;
+using System.Windows.Forms;
+using Common;
+using Config.Entities;
+using TBF.Rig.Generic;
+
+namespace TBF.Rig.TestMethods.FlyingStartMassCollection.Single
+{
+ public partial class TestMethodCfgCtrl : UserControl, IComponentCfgCtrl
+ {
+ public bool ShowMore { get { return false; } }
+
+ TestMethodCfg config;
+ public IComponentCfg Config
+ {
+ get { return config as IComponentCfg; }
+ set
+ {
+ config = value as TestMethodCfg;
+ Redraw();
+ }
+ }
+
+ public TestMethodCfgCtrl()
+ {
+ InitializeComponent();
+ }
+
+ private void EntryFormCfgCtrl_Load(object sender, EventArgs e)
+ {
+ Redraw();
+ }
+
+ public void Closing()
+ {
+ }
+
+ void Redraw()
+ {
+ if (config == null) return; /// Control was not loaded, settings were not changed
+ classNameLabel.Text = config.Factory.ClassName;
+ nameTextBox.Text = config.Name;
+ }
+
+ public void Unlock()
+ {
+ nameTextBox.Enabled = true;
+ }
+
+ public CfgUpdateFlags VerifyCfg(ref string message)
+ {
+ CfgUpdateFlags flags = CfgUpdateFlags.None;
+ return flags;
+ }
+
+ public CfgUpdateFlags UpdateCfg()
+ {
+ CfgUpdateFlags flags = CfgUpdateFlags.RestartRqrd;
+
+ if (config == null) return CfgUpdateFlags.Error; /// Control was not loaded, settings were not changed
+
+ config.Name = nameTextBox.Text;
+
+ return flags;
+ }
+ }
+}
diff --git a/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/TestMethodCfgCtrl.designer.cs b/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/TestMethodCfgCtrl.designer.cs
new file mode 100644
index 000000000..7e69463cc
--- /dev/null
+++ b/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/TestMethodCfgCtrl.designer.cs
@@ -0,0 +1,86 @@
+///
+/// Copyright (c) 2023 Sensus Slovensko a.s.
+///
+namespace TBF.Rig.TestMethods.FlyingStartMassCollection.Single
+{
+ partial class TestMethodCfgCtrl
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Component Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.nameTextBox = new System.Windows.Forms.TextBox();
+ this.nameLabel = new System.Windows.Forms.Label();
+ this.classNameLabel = new System.Windows.Forms.Label();
+ this.SuspendLayout();
+ //
+ // nameTextBox
+ //
+ this.nameTextBox.Enabled = false;
+ this.nameTextBox.Location = new System.Drawing.Point(137, 57);
+ this.nameTextBox.Name = "nameTextBox";
+ this.nameTextBox.Size = new System.Drawing.Size(130, 20);
+ this.nameTextBox.TabIndex = 5;
+ //
+ // nameLabel
+ //
+ this.nameLabel.AutoSize = true;
+ this.nameLabel.Location = new System.Drawing.Point(27, 60);
+ this.nameLabel.Name = "nameLabel";
+ this.nameLabel.Size = new System.Drawing.Size(35, 13);
+ this.nameLabel.TabIndex = 4;
+ this.nameLabel.Text = "Name";
+ //
+ // classNameLabel
+ //
+ this.classNameLabel.AutoSize = true;
+ this.classNameLabel.Location = new System.Drawing.Point(134, 33);
+ this.classNameLabel.Name = "classNameLabel";
+ this.classNameLabel.Size = new System.Drawing.Size(83, 13);
+ this.classNameLabel.TabIndex = 3;
+ this.classNameLabel.Text = "ComonentName";
+ //
+ // BasicPrinterCfgCtrl
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.Controls.Add(this.nameTextBox);
+ this.Controls.Add(this.nameLabel);
+ this.Controls.Add(this.classNameLabel);
+ this.Name = "BasicPrinterCfgCtrl";
+ this.Size = new System.Drawing.Size(300, 200);
+ this.Load += new System.EventHandler(this.EntryFormCfgCtrl_Load);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.TextBox nameTextBox;
+ private System.Windows.Forms.Label nameLabel;
+ private System.Windows.Forms.Label classNameLabel;
+ }
+}
diff --git a/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/TestMethodCfgCtrl.resx b/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/TestMethodCfgCtrl.resx
new file mode 100644
index 000000000..1af7de150
--- /dev/null
+++ b/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/TestMethodCfgCtrl.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/TestParams.cs b/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/TestParams.cs
new file mode 100644
index 000000000..92e165c96
--- /dev/null
+++ b/TBF/Rig/TestMethods/FlyingStartMassCollection/Single/TestParams.cs
@@ -0,0 +1,119 @@
+///
+/// Copyright (c) 2023 Sensus Slovensko a.s.
+///
+using System;
+using System.IO;
+using System.Xml.Serialization;
+using Common;
+using Config.Entities;
+using TBF.Rig.Generic;
+using TBF.Resources;
+
+namespace TBF.Rig.TestMethods.FlyingStartMassCollection.Single
+{
+ public class TestParams : TestParamsBase, IParamsProvider, ITestParams
+ {
+ public static XmlSerializer Serializer = XmlSerializer.FromTypes(new[] { typeof(TestParams) })[0];
+ public override XmlSerializer GetSerializer() { return Serializer; }
+
+ public bool DelayedStart; /// true = Test start (=gating pulses from meters) is delayed by 2 s
+
+ public override void InitializeAll()
+ {
+ DelayedStart = false;
+ }
+
+
+ string[] paramNames = new string[]
+ {
+ "Delayed start",
+ };
+ public override string ParamName(int i) { return paramNames[i]; }
+ public override int ParamsCount() { return paramNames.Length; }
+
+ public override string ToString(int i)
+ {
+ switch (i)
+ {
+ case 0: return DelayedStart ? Strings.yes : Strings.no;
+ default: return string.Empty;
+ }
+ }
+
+ public CfgUpdateFlags UpdateParam(int i, string str)
+ {
+ switch (i)
+ {
+ case 0: DelayedStart = str.Equals(Strings.yes); return CfgUpdateFlags.None;
+ default: return CfgUpdateFlags.None;
+ }
+ }
+
+ public bool ValidateParam(int i, string str, out string message)
+ {
+ message = string.Empty;
+
+ switch (i)
+ {
+ case 0:
+ if (str.Equals(Strings.yes) || str.Equals(Strings.no)) return true;
+ break;
+ default:
+ message = "Invalid index";
+ return false;
+ }
+
+ message = ParamName(i) + " is invalid";
+ return false;
+ }
+
+ void CopyContentTo(TestParams prms)
+ {
+ prms.DelayedStart = DelayedStart;
+ }
+
+ public IParamsProvider Clone()
+ {
+ TestParams pars = new TestParams();
+ CopyContentTo(pars);
+ return pars;
+ }
+
+ public override void UpdateFromDbEntity(ComponentTest dbEntity)
+ {
+ if (dbEntity == null) return;
+ try
+ {
+ TestParams tmp = Serializer.Deserialize(new StringReader(dbEntity.Parameters)) as TestParams;
+
+ testParamsEntity = dbEntity;
+ componentName = dbEntity.CmpntName;
+ test = dbEntity.Test;
+
+ if (tmp != null) tmp.CopyContentTo(this);
+ }
+ catch
+ {
+ }
+ }
+
+ ///
+ /// Parameterless constructor initializes the parameters
+ ///
+ public TestParams()
+ {
+ }
+
+ public TestParams(bool initialize)
+ {
+ if (initialize) InitializeAll();
+ }
+
+ public TestParams(ComponentTest testParamsEntity, string componentName, Test test)
+ {
+ this.testParamsEntity = testParamsEntity;
+ this.componentName = componentName;
+ this.test = test;
+ }
+ }
+}
diff --git a/TBF/Rig/TestMethods/FlyingStartTankCollection/FlyingStartTankCollectionSeq.cs b/TBF/Rig/TestMethods/FlyingStartTankCollection/FlyingStartTankCollectionSeq.cs
index 8fb0cb3b0..c9a64b16c 100644
--- a/TBF/Rig/TestMethods/FlyingStartTankCollection/FlyingStartTankCollectionSeq.cs
+++ b/TBF/Rig/TestMethods/FlyingStartTankCollection/FlyingStartTankCollectionSeq.cs
@@ -371,7 +371,7 @@ namespace TBF.Rig.TestMethods.FlyingStartTankCollection
.AddOperation(checkUiOp)
.AddOperations(readTempPressOps)
.AddOperations(cameraMeasurementOps)
- .AddOperation(cBrd.FlyingStartStopTestOp(test, test.Qfrom, test.Qto, totalPulses, true, false, 0, true, DiverterStart, DiverterEnd))
+ .AddOperation(cBrd.FlyingStartStopTestOp(test, test.Qfrom, test.Qto, totalPulses, true, false, false, 0, true, DiverterStart, DiverterEnd))
.AddOperation(processDataLoggingOp)
.EnterState();
do {
diff --git a/TBF/TBF.csproj b/TBF/TBF.csproj
index f1dbc8e80..c3bbe6b04 100644
--- a/TBF/TBF.csproj
+++ b/TBF/TBF.csproj
@@ -1220,6 +1220,14 @@
+
+
+ UserControl
+
+
+ TestMethodCfgCtrl.cs
+
+
Component
@@ -2867,6 +2875,9 @@
TestMethodCfgCtrl.cs
+
+ TestMethodCfgCtrl.cs
+
TestMethodCfgCtrl.cs