fix for Stop measurement and save/Collect after End Session
This commit is contained in:
parent
3d7aaaaa3d
commit
d2ef959f15
@ -5,6 +5,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using Common;
|
||||
using Config.Entities;
|
||||
|
||||
namespace Results.Entities
|
||||
{
|
||||
@ -246,10 +247,17 @@ namespace Results.Entities
|
||||
public virtual float TempLimHi() { return TestData.TempLimHi; }
|
||||
public virtual bool Evaluate() { return TestData.Evaluate; }
|
||||
public virtual Publish Publish() { return (Publish)TestData.Publish; }
|
||||
|
||||
public virtual bool TestCollected { get; set; } /// Not mapped to DB - just help method to Collect
|
||||
public virtual bool TestMeasured { get; set; } /// Not mapped to DB - just help method to Collect
|
||||
|
||||
|
||||
|
||||
public TestRslt()
|
||||
{
|
||||
TestCollected = false;
|
||||
TestMeasured = false;
|
||||
|
||||
MethodClass = string.Empty;
|
||||
Remark = string.Empty;
|
||||
}
|
||||
@ -390,6 +398,9 @@ namespace Results.Entities
|
||||
Counter3 = src.Counter3;
|
||||
Counter4 = src.Counter4;
|
||||
Counter5 = src.Counter5;
|
||||
|
||||
TestCollected = src.TestCollected;
|
||||
TestMeasured = src.TestMeasured;
|
||||
}
|
||||
|
||||
/// <summary> Wrapper </summary>
|
||||
@ -428,7 +439,7 @@ namespace Results.Entities
|
||||
|
||||
public virtual string ToString(int i)
|
||||
{
|
||||
return string.Format("TestRslt: Part={0} RepetitionNr={1} TestDone={2} Remark={3} StartTime={4} EndTime={5} FlowSetTime={6} TestTime={7} PulsesMaster={8} ConstMaster={9} MassStartRaw={10} MassStart={11} MassEndRaw={12} MassEnd={13} DensityIn={14} DensityOut={15} DensityDiv={16} MassOfEvapWaater={17} FlowMass={18} FlowVolume={19} VolumeCTV={20} VolumeMaster={21} ErrorMaster={22} DiverterStart={85} DiverterEnd={86} ErrorFlags={23} InfoFlags={24} AmbTempMean={25} AmbTempStart={26} AmbTempEnd={27} AmbTempMin={28} AmbTempMax={29} AmbPressMean={30} AmbPressStart={31} AmbPressEnd={32} AmbPressMin={33} AmbPressMax={34} AmbHumiMean={35} AmbHumiStart={36} AmbHumiEnd={37} AmbHumiMin={38} AmbHumiMax={39} PressUpMean={40} PressUpStart={41} PressUpEnd={42} PressUpMin={43} PressUpMax={44} PressDownMean={45} PressDownStart={46} PressDownEnd={47} PressDownMin={48} PressDownMax={49} PressDeltaMean={50} PressDeltaStart={51} PressDeltaEnd={52} PressDeltaMin={53} PressDeltaMax={54} TempUpMean={55} TempUpStart={56} TempUpEnd={57} TempUpMin={58} TempUpMax={59} TempDownMean={60} TempDownStart={61} TempDownEnd={62} TempDownMin={63} TempDownMax={64} TempDivMean={65} TempDivStart={66} TempDivEnd={67} TempDivMin={68} TempDivMax={69} FlowMean={70} FlowStart={71} FlowEnd={72} FlowMin={73} FlowMax={74} Custom1={75} Custom2={76} Custom3={77} Custom4={78} Custom5={79} Custom6={80} Custom7={81} Custom8={82} Custom9={83} Custom10={84}",
|
||||
return string.Format("TestRslt: Part={0} RepetitionNr={1} TestDone={2} Remark={3} StartTime={4} EndTime={5} FlowSetTime={6} TestTime={7} PulsesMaster={8} ConstMaster={9} MassStartRaw={10} MassStart={11} MassEndRaw={12} MassEnd={13} DensityIn={14} DensityOut={15} DensityDiv={16} MassOfEvapWaater={17} FlowMass={18} FlowVolume={19} VolumeCTV={20} VolumeMaster={21} ErrorMaster={22} DiverterStart={85} DiverterEnd={86} ErrorFlags={23} InfoFlags={24} AmbTempMean={25} AmbTempStart={26} AmbTempEnd={27} AmbTempMin={28} AmbTempMax={29} AmbPressMean={30} AmbPressStart={31} AmbPressEnd={32} AmbPressMin={33} AmbPressMax={34} AmbHumiMean={35} AmbHumiStart={36} AmbHumiEnd={37} AmbHumiMin={38} AmbHumiMax={39} PressUpMean={40} PressUpStart={41} PressUpEnd={42} PressUpMin={43} PressUpMax={44} PressDownMean={45} PressDownStart={46} PressDownEnd={47} PressDownMin={48} PressDownMax={49} PressDeltaMean={50} PressDeltaStart={51} PressDeltaEnd={52} PressDeltaMin={53} PressDeltaMax={54} TempUpMean={55} TempUpStart={56} TempUpEnd={57} TempUpMin={58} TempUpMax={59} TempDownMean={60} TempDownStart={61} TempDownEnd={62} TempDownMin={63} TempDownMax={64} TempDivMean={65} TempDivStart={66} TempDivEnd={67} TempDivMin={68} TempDivMax={69} FlowMean={70} FlowStart={71} FlowEnd={72} FlowMin={73} FlowMax={74} Custom1={75} Custom2={76} Custom3={77} Custom4={78} Custom5={79} Custom6={80} Custom7={81} Custom8={82} Custom9={83} Custom10={84} TestMeasured={85} TestCollected={86}",
|
||||
Part, RepetitionNr, TestDone, Remark, StartTime, EndTime, FlowSetTime, TestTime,
|
||||
PulsesMaster, ConstMaster, MassStartRaw, MassStart, MassEndRaw, MassEnd,
|
||||
DensityIn, DensityLine, DensityDiv, MassOfEvapWater, Qdetected, Flow,
|
||||
@ -444,7 +455,7 @@ namespace Results.Entities
|
||||
TempDivMean, TempDivStart, TempDivEnd, TempDivMin, TempDivMax,
|
||||
FlowMean, FlowStart, FlowEnd, FlowMin, FlowMax,
|
||||
Custom1, Custom2, Custom3, Custom4, Custom5, Custom6, Custom7, Custom8, Custom9, Custom10,
|
||||
DiverterStart, DiverterEnd);
|
||||
DiverterStart, DiverterEnd, TestMeasured, TestCollected);
|
||||
}
|
||||
|
||||
|
||||
@ -586,6 +597,8 @@ namespace Results.Entities
|
||||
writer.Write(Counter3);
|
||||
writer.Write(Counter4);
|
||||
writer.Write(Counter5);
|
||||
writer.Write(TestMeasured);
|
||||
writer.Write(TestCollected);
|
||||
}
|
||||
|
||||
public virtual void ReadBinary(BinaryReader reader, IList<TestData> testDatas)
|
||||
@ -727,6 +740,8 @@ namespace Results.Entities
|
||||
Counter3 = reader.ReadInt32();
|
||||
Counter4 = reader.ReadInt32();
|
||||
Counter5 = reader.ReadInt32();
|
||||
TestMeasured = reader.ReadBoolean();
|
||||
TestCollected = reader.ReadBoolean();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -205,6 +205,7 @@ namespace TBF.Rig.DataEntry.StandartCameraPurchaseOrder
|
||||
public IOperation ShowTestCollectFormOp(IRegReader[] regReaders, double volumeRef, double errLimLo,
|
||||
double errLimHi)
|
||||
{
|
||||
if (currentOp != CurrentOp.None) throw new Exception("Sequence error");
|
||||
currentOp = CurrentOp.TestBothStates;
|
||||
this.regReaders = regReaders;
|
||||
this.refVolume = refVolume;
|
||||
|
||||
@ -5,6 +5,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using log4net;
|
||||
using NHibernate;
|
||||
using Common;
|
||||
@ -1248,24 +1249,7 @@ namespace TBF.Rig.Sequences
|
||||
//ON THE END run collector process if is actual (defined and actual process supports it)
|
||||
if (testFinished && collector != null && collectDataAfterTests)
|
||||
{
|
||||
IProcedureCameraCollect collectorParent = collector as IProcedureCameraCollect;
|
||||
collectorParent.DefineParentProcess(StateMachine.Procedure);
|
||||
ITestMethod testMethodCollector = collector as ITestMethod;
|
||||
|
||||
if (testMethodCollector != null &&
|
||||
testMethodCollector.CanTest(StateMachine.Procedure.MetersKind))
|
||||
{
|
||||
try
|
||||
{
|
||||
log.InfoFormat("Test single {0}: Execute(., {1}, {2})", test.Name, repetNr,
|
||||
true);
|
||||
e = testMethodCollector.Execute(test, repetNr, true);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
log.ErrorFormat("Read ", exception);
|
||||
}
|
||||
}
|
||||
e = RunCollector(collector, test, repetNr);
|
||||
}
|
||||
|
||||
if (testMethod.DoTransitions())
|
||||
@ -1336,6 +1320,33 @@ namespace TBF.Rig.Sequences
|
||||
/// Update batch results, determine whether watermeters passed all required tests
|
||||
///
|
||||
|
||||
State.Create("MainSeq : Collector")
|
||||
.AddOperation(checkUiOp)
|
||||
.EnterState();
|
||||
do
|
||||
{
|
||||
e = StateMachine.WaitRunDevsRunOps();
|
||||
if (e.Contains(Event.UiCmdStop)) goto stop;
|
||||
} while (false);
|
||||
|
||||
//--------------------------------
|
||||
{
|
||||
TBF.Rig.Generic.IComponent collector =
|
||||
TbfComponents.FindFirstSequenceComponentImpl<IProcedureCameraCollect>();
|
||||
//ON THE END run collector process if is actual (defined and actual process supports it)
|
||||
if (collector != null)
|
||||
{
|
||||
for (int i = 0; i < StateMachine.TestInstances.Length; i++)
|
||||
{
|
||||
int testIx = i;
|
||||
Test test = StateMachine.TestInstances[testIx].Test;
|
||||
int repetNr = StateMachine.TestInstances[testIx].Repetition;
|
||||
e = RunCollector(collector, test, repetNr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// Determine the end of the last test and save it as the batch end time
|
||||
DateTime lastTestEndTime = DateTime.MinValue;
|
||||
if (BatchRslts.Batch.TestRslts != null)
|
||||
@ -1628,6 +1639,32 @@ namespace TBF.Rig.Sequences
|
||||
return;
|
||||
}
|
||||
|
||||
private static IList<Event> RunCollector(IComponent collector, Test test, int repetNr)
|
||||
{
|
||||
IProcedureCameraCollect collectorParent = collector as IProcedureCameraCollect;
|
||||
collectorParent.DefineParentProcess(StateMachine.Procedure);
|
||||
ITestMethod testMethodCollector = collector as ITestMethod;
|
||||
|
||||
IList<Event> e = null;
|
||||
if (testMethodCollector != null &&
|
||||
testMethodCollector.CanTest(StateMachine.Procedure.MetersKind))
|
||||
{
|
||||
try
|
||||
{
|
||||
log.InfoFormat("Test single {0}: Execute(., {1}, {2})", test.Name, repetNr,
|
||||
true);
|
||||
e = testMethodCollector.Execute(test, repetNr, true);
|
||||
log.DebugFormat("Collector with name: {0} done with Events:{1} ", test.Name, e);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
log.ErrorFormat("Read ", exception);
|
||||
}
|
||||
}
|
||||
|
||||
return e;
|
||||
}
|
||||
|
||||
|
||||
bool IsApprovedByLegalizator()
|
||||
{
|
||||
|
||||
@ -663,6 +663,14 @@ namespace TBF.Rig.Sequences
|
||||
testRslt.RepetitionNr == oriTstRslt.RepetitionNr)
|
||||
{
|
||||
testRslt.CopyContentFrom(oriTstRslt);
|
||||
|
||||
if (testRslt.TestDone)
|
||||
{
|
||||
//Question is waht behaviour is beter, but i will start again measurments
|
||||
testRslt.TestMeasured = true;
|
||||
testRslt.TestCollected = true;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1205,8 +1205,10 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvance
|
||||
meterRslt.Passed = (meterRslt.Error >= test.GetErrLimLo(tstRslt.VolumeCTV, tstRslt.TestTime) + test.Uncertainty)
|
||||
&& (meterRslt.Error <= test.GetErrLimHi(tstRslt.VolumeCTV, tstRslt.TestTime) - test.Uncertainty)
|
||||
&& (tstRslt.ErrorFlags == 0);
|
||||
meterRslt.TestDone = true;
|
||||
tstRslt.TestDone = true;
|
||||
meterRslt.TestDone = false;
|
||||
tstRslt.TestDone = false;
|
||||
tstRslt.TestMeasured = true;
|
||||
tstRslt.TestCollected = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -7,10 +7,8 @@ using System.IO;
|
||||
using log4net;
|
||||
using Common;
|
||||
using Config.Entities;
|
||||
using TBF.Boxes;
|
||||
using TBF.Resources;
|
||||
using TBF.Rig.GenericDevices;
|
||||
using TBF.Rig.Network.RestAPI;
|
||||
using TBF.Rig.Sequences;
|
||||
using TBF.UiBridge;
|
||||
|
||||
@ -46,8 +44,20 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvanceCollect
|
||||
public IList<Event> Execute(Config.Entities.Test test, int repetitionNr, bool isLastRepetition,
|
||||
Common.DebugMode debugLevel)
|
||||
{
|
||||
|
||||
IList<Event> e; /// Events from currently running operations
|
||||
string testName = Results.Utils.GetTestName(test.Name, test.Repeats, repetitionNr);
|
||||
Results.Entities.TestRslt tstRslt = BatchRslts.GetTestRslt(testName, test.Part);
|
||||
|
||||
if (tstRslt != null &&
|
||||
((tstRslt.TestCollected && tstRslt.TestMeasured) ||
|
||||
!tstRslt.TestMeasured)
|
||||
)
|
||||
{
|
||||
//skip this
|
||||
return new List<Event>();
|
||||
}
|
||||
|
||||
|
||||
int waterMetersCount = Math.Min(BenchInfo.WaterMetersCount, sensPath.RegisterReaders.Length);
|
||||
checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state
|
||||
processDataLoggingOp = new TBF.Rig.Operations.ProcessDataLoggingOp(processDataLogger, this, false);
|
||||
@ -65,11 +75,10 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvanceCollect
|
||||
|
||||
/// Start the test, initialize test results
|
||||
Bridge.OnTestSelected(this, new TestSelectedEventArgs(test, repetitionNr, inPath, benchPath, outPath, sensPath, heatMetersPath));
|
||||
string testName = Results.Utils.GetTestName(test.Name, test.Repeats, repetitionNr);
|
||||
log.DebugFormat("Start the test - testName: {0}, test -> name: {1} -> Repeats: {2} -> repetitionNr: {3}", testName, test.Name, test.Repeats, repetitionNr);
|
||||
|
||||
Results.Entities.TestRslt tstRslt = BatchRslts.GetTestRslt(testName, test.Part);
|
||||
|
||||
/// Test if
|
||||
|
||||
///
|
||||
/// Enter water meter begin states and read the start mass at the same time
|
||||
///
|
||||
@ -202,6 +211,10 @@ namespace TBF.Rig.TestMethods.StandingStartMassCollectionAdvanceCollect
|
||||
meterRslt.Passed = (meterRslt.Error >= test.GetErrLimLo(tstRslt.VolumeCTV, tstRslt.TestTime) + test.Uncertainty)
|
||||
&& (meterRslt.Error <= test.GetErrLimHi(tstRslt.VolumeCTV, tstRslt.TestTime) - test.Uncertainty)
|
||||
&& (tstRslt.ErrorFlags == 0);
|
||||
|
||||
meterRslt.TestDone = true;
|
||||
tstRslt.TestDone = true;
|
||||
tstRslt.TestCollected = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,7 +2,6 @@
|
||||
/// Copyright (c) 2013-2016 Sensus Metering Systems
|
||||
///
|
||||
using System;
|
||||
using Config.Entities;
|
||||
|
||||
namespace TBF.UiBridge
|
||||
{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user