diff --git a/TestBenchFramework/BenchControl/ResultsWriters/Basic/Writer.cs b/TestBenchFramework/BenchControl/ResultsWriters/Basic/Writer.cs index b7f8bbb15..3a985924a 100644 --- a/TestBenchFramework/BenchControl/ResultsWriters/Basic/Writer.cs +++ b/TestBenchFramework/BenchControl/ResultsWriters/Basic/Writer.cs @@ -13,6 +13,12 @@ namespace TBF.BenchControl.ResultsWriters.Basic readonly WriterCfg writerCfg; + /// + /// Result items to print + /// + IList resultItems; + bool combined; + /// /// Results to print /// @@ -34,12 +40,25 @@ namespace TBF.BenchControl.ResultsWriters.Basic /// Reference to the operation public IOperation WriteResultsOp(IList results) { - if ((results == null) || (results.Count == 0)) + if ((results == null) || (results.Count == 0) || + ((results[0].MetersKind != Entities.MetersKind.Single) && + (results[0].MetersKind != Entities.MetersKind.Combined))) { writer = null; return this; } + if (results[0].MetersKind == Entities.MetersKind.Single) + { + resultItems = Forms.ResultItemSpec.FromStrArray(Program.LocalSettings.RsltItems_Disk_SingleWM); + combined = false; + } + else + { + resultItems = Forms.ResultItemSpec.FromStrArray(Program.LocalSettings.RsltItems_Disk_CombinedWM); + combined = true; + } + this.results = results; now = DateTime.Now; try @@ -85,44 +104,26 @@ namespace TBF.BenchControl.ResultsWriters.Basic } writer.WriteLine("Bereich : 22,9 °C 947 mbar 43 %"); writer.WriteLine(""); - writer.WriteLine("Test Metode MIDFehler Durchfluss Test Zeit T1 T2 Dichte Masse Druck Volume Bor"); - writer.WriteLine(" [%] [m3/h] [s] [°C] [°C] [kg/m3] [kg] [MPa] [L] [m3/h]"); + + foreach (var item in resultItems) writer.Write(item.ClmnHeaderText); + writer.WriteLine(string.Empty); + writer.WriteLine("---------------------------------------------------------------------------------------------------------------------------------------"); foreach (var tr in results) { - if (tr.MetersKind == Entities.MetersKind.Single) + foreach (var item in resultItems) { - writer.WriteLine(string.Format("{0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11}", - tr.Name, - tr.Method, - tr.Meters[0].VolumeErrorPct, - tr.FlowMass, - tr.Time, - tr.TempInAvrg, - tr.TempDivAvrg, - tr.DensityOut, - tr.MassDiff, - tr.PressInAvrg, - tr.PressOutAvrg, - tr.VolumeCTV)); - } - else if (tr.MetersKind == Entities.MetersKind.Combined) - { - writer.WriteLine(string.Format("{0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11}", - tr.Name, - tr.Method, - tr.CombinedMeters[0].VolumeErrorPct, - tr.FlowMass, - tr.Time, - tr.TempInAvrg, - tr.TempDivAvrg, - tr.DensityOut, - tr.MassDiff, - tr.PressInAvrg, - tr.PressOutAvrg, - tr.VolumeCTV)); + if (combined) + { + writer.Write(item.PrintCombined(tr.CombinedMeters[0], tr.Meters[0], tr.Meters[1])); + } + else + { + writer.Write(item.Print(tr.Meters[0])); + } } + writer.WriteLine(string.Empty); } writer.WriteLine("---------------------------------------------------------------------------------------------------------------------------------------"); diff --git a/TestBenchFramework/BenchControl/Sequences/MainSeq.cs b/TestBenchFramework/BenchControl/Sequences/MainSeq.cs index cb7dc223d..f690bf318 100644 --- a/TestBenchFramework/BenchControl/Sequences/MainSeq.cs +++ b/TestBenchFramework/BenchControl/Sequences/MainSeq.cs @@ -352,7 +352,7 @@ namespace TBF.BenchControl.Sequences GenericDevices.IDataEntry dataEntryCmpnt = TbfComponents.FindComponent(StateMachine.Procedure.DataEntry) as GenericDevices.IDataEntry; if (dataEntryCmpnt != null) { - Bridge.OnActivity(this, "Enter the protocol data"); + Bridge.OnActivity(this, "Enter protocol data"); if (dataEntryCmpnt is IHasCycleEndForm) { @@ -377,37 +377,28 @@ namespace TBF.BenchControl.Sequences dataEntryCmpnt.UpdateTestResults(WaterMeters, results); } - //-------------------------------- + //------------------------------------------------------ + Bridge.OnActivity(this, "Saving and printing results"); IResultsWriter writer = TbfComponents.FindComponent(StateMachine.Procedure.ResultsWriter) as IResultsWriter; - if (writer != null) + IResultsPrinter printer = TbfComponents.FindComponent(StateMachine.Procedure.ResultsPrinter) as IResultsPrinter; + State savingAndPrintingRslts = State.Create("MainSeq : Saving and printing results"); + if (writer != null) savingAndPrintingRslts.AddOperation(writer.WriteResultsOp(results)); + if (printer != null) savingAndPrintingRslts.AddOperation(printer.PrintResultsOp(BenchId, WaterMeters, results, protocolTitle)); + savingAndPrintingRslts.AddOperation(checkUiOp).EnterState(); + do { - State.Create("MainSeq : Saving results") - .AddOperation(writer.WriteResultsOp(results)) - .AddOperation(checkUiOp) - .EnterState(); - { - e = StateMachine.WaitRunDevsRunOps(); - if (e.Contains(Event.Error)) goto error; - if (e.Contains(Event.UiCmdStop)) goto stop; - } + e = StateMachine.WaitRunDevsRunOps(); + if (e.Contains(Event.Error)) goto error; + if (e.Contains(Event.UiCmdStop)) goto stop; } + while (e.Contains(Event.Busy)); //-------------------------------- - IResultsPrinter printer = TbfComponents.FindComponent(StateMachine.Procedure.ResultsPrinter) as IResultsPrinter; - if (printer != null) - { - State.Create("MainSeq : Printing results") - .AddOperation(printer.PrintResultsOp(BenchId, WaterMeters, results, protocolTitle)) - .AddOperation(checkUiOp) - .EnterState(); - { - e = StateMachine.WaitRunDevsRunOps(); - if (e.Contains(Event.Error)) goto error; - if (e.Contains(Event.UiCmdStop)) goto stop; - } - } + Program.LocalSettings.CycleNr++; + Program.LocalSettings.Save(); - /// Purge - End + + //-------------------------------------------------------- switch (Transition(purgeEnd, TransitionContext.PurgeEnd)) { case Event.Error: goto error; diff --git a/TestBenchFramework/BenchControl/TestMethods/CombinedMeters/CombinedMetersSeq.cs b/TestBenchFramework/BenchControl/TestMethods/CombinedMeters/CombinedMetersSeq.cs index c6005a0d9..59a5f2d05 100644 --- a/TestBenchFramework/BenchControl/TestMethods/CombinedMeters/CombinedMetersSeq.cs +++ b/TestBenchFramework/BenchControl/TestMethods/CombinedMeters/CombinedMetersSeq.cs @@ -331,7 +331,7 @@ namespace TBF.BenchControl.TestMethods.CombinedMeters /// /// Populate TestResult data entity with data /// - tstRslt.TimeEnd = DateTime.Now; + tstRslt.CycleNr = Program.LocalSettings.CycleNr; UpdateTestRsltWithAveragedData(tstRslt); tstRslt.MassStart = Formulas.CorrectedValue(tstRslt.MassStartRaw, outPath.Balance.Corrections); tstRslt.MassEnd = Formulas.CorrectedValue(tstRslt.MassEndRaw, outPath.Balance.Corrections); diff --git a/TestBenchFramework/BenchControl/TestMethods/CombinedWithDetection/CombinedWithDetectionSeq.cs b/TestBenchFramework/BenchControl/TestMethods/CombinedWithDetection/CombinedWithDetectionSeq.cs index 3c51c7f19..ef968de7f 100644 --- a/TestBenchFramework/BenchControl/TestMethods/CombinedWithDetection/CombinedWithDetectionSeq.cs +++ b/TestBenchFramework/BenchControl/TestMethods/CombinedWithDetection/CombinedWithDetectionSeq.cs @@ -545,7 +545,7 @@ namespace TBF.BenchControl.TestMethods.CombinedWithDetection /// /// Populate TestResult data entity with data /// - tstRslt.TimeEnd = DateTime.Now; + tstRslt.CycleNr = Program.LocalSettings.CycleNr; UpdateTestRsltWithAveragedData(tstRslt); tstRslt.MassStart = Formulas.CorrectedValue(tstRslt.MassStartRaw, outPath.Balance.Corrections); tstRslt.MassEnd = Formulas.CorrectedValue(tstRslt.MassEndRaw, outPath.Balance.Corrections); diff --git a/TestBenchFramework/BenchControl/TestMethods/FixedStartMassCollection/FixedStartMassCollectionSeq.cs b/TestBenchFramework/BenchControl/TestMethods/FixedStartMassCollection/FixedStartMassCollectionSeq.cs index ae72472a2..7c6c50e11 100644 --- a/TestBenchFramework/BenchControl/TestMethods/FixedStartMassCollection/FixedStartMassCollectionSeq.cs +++ b/TestBenchFramework/BenchControl/TestMethods/FixedStartMassCollection/FixedStartMassCollectionSeq.cs @@ -422,7 +422,7 @@ namespace TBF.BenchControl.TestMethods.FixedStartMassCollection /// /// Populate TestResult data entity with data /// - tstRslt.TimeEnd = DateTime.Now; + tstRslt.CycleNr = Program.LocalSettings.CycleNr; UpdateTestRsltWithAveragedData(tstRslt); tstRslt.MassStart = Formulas.CorrectedValue(tstRslt.MassStartRaw, outPath.Balance.Corrections); tstRslt.MassEnd = Formulas.CorrectedValue(tstRslt.MassEndRaw, outPath.Balance.Corrections); diff --git a/TestBenchFramework/BenchControl/TestMethods/FlyingStart/FlyingStartSeq.cs b/TestBenchFramework/BenchControl/TestMethods/FlyingStart/FlyingStartSeq.cs index e3e80e8c5..f69cb3c6e 100644 --- a/TestBenchFramework/BenchControl/TestMethods/FlyingStart/FlyingStartSeq.cs +++ b/TestBenchFramework/BenchControl/TestMethods/FlyingStart/FlyingStartSeq.cs @@ -248,6 +248,7 @@ namespace TBF.BenchControl.TestMethods.FlyingStart /// Populate TestResult data entity with data /// tstRslt.TimeEnd = DateTime.Now; + tstRslt.CycleNr = Program.LocalSettings.CycleNr; UpdateTestRsltWithAveragedData(tstRslt); tstRslt.MassStart = 0; tstRslt.MassEnd = 0; diff --git a/TestBenchFramework/BenchControl/TestMethods/FlyingStartCollectionMethod/FlyingStartCollectionMethodSeq.cs b/TestBenchFramework/BenchControl/TestMethods/FlyingStartCollectionMethod/FlyingStartCollectionMethodSeq.cs index 5e7bfdadb..3f801d4db 100644 --- a/TestBenchFramework/BenchControl/TestMethods/FlyingStartCollectionMethod/FlyingStartCollectionMethodSeq.cs +++ b/TestBenchFramework/BenchControl/TestMethods/FlyingStartCollectionMethod/FlyingStartCollectionMethodSeq.cs @@ -330,7 +330,7 @@ namespace TBF.BenchControl.TestMethods.FlyingStartCollectionMethod /// /// Populate TestResult data entity with data /// - tstRslt.TimeEnd = DateTime.Now; + tstRslt.CycleNr = Program.LocalSettings.CycleNr; UpdateTestRsltWithAveragedData(tstRslt); tstRslt.MassStart = Formulas.CorrectedValue(tstRslt.MassStartRaw, outPath.Balance.Corrections); tstRslt.MassEnd = Formulas.CorrectedValue(tstRslt.MassEndRaw, outPath.Balance.Corrections); diff --git a/TestBenchFramework/BenchControl/TestMethods/ReferenceFlowmeterCalibration/ReferenceFlowmeterCalibrationSeq.cs b/TestBenchFramework/BenchControl/TestMethods/ReferenceFlowmeterCalibration/ReferenceFlowmeterCalibrationSeq.cs index 39d21c08f..151543b07 100644 --- a/TestBenchFramework/BenchControl/TestMethods/ReferenceFlowmeterCalibration/ReferenceFlowmeterCalibrationSeq.cs +++ b/TestBenchFramework/BenchControl/TestMethods/ReferenceFlowmeterCalibration/ReferenceFlowmeterCalibrationSeq.cs @@ -313,7 +313,7 @@ namespace TBF.BenchControl.TestMethods.ReferenceFlowmeterCalibration /// /// Populate TestResult data entity with data /// - tstRslt.TimeEnd = DateTime.Now; + tstRslt.CycleNr = Program.LocalSettings.CycleNr; UpdateTestRsltWithAveragedData(tstRslt); tstRslt.MassStart = Formulas.CorrectedValue(tstRslt.MassStartRaw, outPath.Balance.Corrections); tstRslt.MassEnd = Formulas.CorrectedValue(tstRslt.MassEndRaw, outPath.Balance.Corrections); diff --git a/TestBenchFramework/Entities/TestResult.cs b/TestBenchFramework/Entities/TestResult.cs index fda597d20..1c895a520 100644 --- a/TestBenchFramework/Entities/TestResult.cs +++ b/TestBenchFramework/Entities/TestResult.cs @@ -7,6 +7,7 @@ namespace TBF.Entities { public virtual int Id { get; protected set; } public virtual string Name { get; set; } + public virtual int CycleNr { get; set; } public virtual MetersKind MetersKind { get; set; } public virtual IList Meters { get; set; } public virtual IList CombinedMeters { get; set; } diff --git a/TestBenchFramework/Forms/ResultItemSpec.cs b/TestBenchFramework/Forms/ResultItemSpec.cs index 432494706..14de032d9 100644 --- a/TestBenchFramework/Forms/ResultItemSpec.cs +++ b/TestBenchFramework/Forms/ResultItemSpec.cs @@ -43,70 +43,67 @@ namespace TBF.Forms { AllItems = new List(); + /// Common + AllItems.Add(new ResultItemSpec("Test name", Strings.Name, x => x.TestResult.TestName, + (x, y, z) => x.TestResult.TestName)); + AllItems.Add(new ResultItemSpec("Procedure name", Strings.Procedure, x => x.TestResult.ProcedureName, + (x, y, z) => x.TestResult.ProcedureName)); + AllItems.Add(new ResultItemSpec("Tets cycle number", "Cycel nr.", x => x.TestResult.CycleNr.ToString(), + (x, y, z) => x.TestResult.CycleNr.ToString())); + /// Target values AllItems.Add(new ResultItemSpec("Q from", Strings.Q_from_m3h, x => x.TestResult.Qfrom.ToString("F3"), (x, y, z) => x.TestResult.Qfrom.ToString("F3"))); - AllItems.Add(new ResultItemSpec("Q to", Strings.Q_to_m3h, x => x.TestResult.Qto.ToString("F3"), (x, y, z) => x.TestResult.Qto.ToString("F3"))); + AllItems.Add(new ResultItemSpec("Test volume", "Volume [l]", x => x.TestResult.Volume.ToString("F1"), + (x, y, z) => x.TestResult.Volume.ToString("F1"))); + AllItems.Add(new ResultItemSpec("Error limit Lo", "ErrLimLo [%]", x => x.TestResult.ErrLimLo.ToString("F1"), + (x, y, z) => x.TestResult.ErrLimLo.ToString("F1"))); + AllItems.Add(new ResultItemSpec("Error limit Hi", "ErrLimHi [%]", x => x.TestResult.ErrLimHi.ToString("F1"), + (x, y, z) => x.TestResult.ErrLimHi.ToString("F1"))); /// Test results AllItems.Add(new ResultItemSpec("Start time", "T start", x => x.TestResult.TimeStart.ToShortTimeString(), (x, y, z) => z.TestResult.TimeStart.ToShortTimeString())); - AllItems.Add(new ResultItemSpec("End time", "T end", x => x.TestResult.TimeEnd.ToShortTimeString(), (x, y, z) => z.TestResult.TimeEnd.ToShortTimeString())); - AllItems.Add(new ResultItemSpec("Test time", "T [s]", x => x.TestResult.TimeEnd.ToShortTimeString(), (x, y, z) => z.TestResult.TimeEnd.ToShortTimeString())); - AllItems.Add(new ResultItemSpec("Flow", Strings.Flow_m3h, x => Utils.FloatToStr(x.TestResult.FlowVolume / 1000.0f, 4), (x, y, z) => Utils.FloatToStr(z.TestResult.FlowVolume / 1000.0f, 4))); - AllItems.Add(new ResultItemSpec("T in", Strings.T_in, x => x.TestResult.TempInAvrg.ToString("F2"), (x, y, z) => z.TestResult.TempInAvrg.ToString("F2"))); - AllItems.Add(new ResultItemSpec("T out", Strings.T_out, x => x.TestResult.TempOutAvrg.ToString("F2"), (x, y, z) => z.TestResult.TempOutAvrg.ToString("F2"))); - AllItems.Add(new ResultItemSpec("T div", Strings.T_div, x => x.TestResult.TempDivAvrg.ToString("F2"), (x, y, z) => z.TestResult.TempDivAvrg.ToString("F2"))); - AllItems.Add(new ResultItemSpec("P in", Strings.P_in, x => x.TestResult.PressInAvrg.ToString("F3"), (x, y, z) => z.TestResult.PressInAvrg.ToString("F3"))); - AllItems.Add(new ResultItemSpec("P out", Strings.P_out, x => x.TestResult.PressOutAvrg.ToString("F3"), (x, y, z) => z.TestResult.PressOutAvrg.ToString("F3"))); - AllItems.Add(new ResultItemSpec("Reference error", "E r [%]", x => x.TestResult.ErrorMaster.ToString("F3"), (x, y, z) => z.TestResult.ErrorMaster.ToString("F3"))); - AllItems.Add(new ResultItemSpec("Ambient temperature", "T amb", x => x.TestResult.AmbientTempAve.ToString("F1"), (x, y, z) => z.TestResult.AmbientTempAve.ToString("F1"))); - AllItems.Add(new ResultItemSpec("Ambient pressure", "P amb", x => x.TestResult.AmbientPressAve.ToString("F0"), (x, y, z) => z.TestResult.AmbientPressAve.ToString("F0"))); - AllItems.Add(new ResultItemSpec("Ambient humidity", "H amb [%]", x => x.TestResult.AmbientHumiAve.ToString("F1"), (x, y, z) => z.TestResult.AmbientHumiAve.ToString("F1"))); /// Single and combined meter results AllItems.Add(new ResultItemSpec("Volume", "V [l]", x => x.VolumeMeter.ToString("F3"), - (x, y, z) => z.VolumeMeter.ToString("F3"))); - + (x, y, z) => z.VolumeMeter.ToString("F3"))); AllItems.Add(new ResultItemSpec("Reference volume", "V ref [l]", x => x.VolumeRef.ToString("F3"), - (x, y, z) => z.VolumeRef.ToString("F3"))); - + (x, y, z) => z.VolumeRef.ToString("F3"))); AllItems.Add(new ResultItemSpec("Error", "Error [%]", x => x.VolumeErrorPct.ToString("F2"), (x, y, z) => z.VolumeErrorPct.ToString("F2"))); - AllItems.Add(new ResultItemSpec("Passed", "Result", x => (x.Passed ? Strings.Passed + "|Green" : Strings.Failed + "|Red"), (x, y, z) => (z.Passed ? Strings.Passed + "|Green" : Strings.Failed + "|Red"))); + /// Single water meters only results AllItems.Add(new ResultItemSpec("Serial Nr", "s/n", x => x.SerialNr, (x, y, z) => z.SerialNr)); AllItems.Add(new ResultItemSpec("End state", "End state", x => x.EndState, (x, y, z) => z.EndState)); - - /// Single water meters only results AllItems.Add(new ResultItemSpec("Pulses", "Pulses", x => x.PulsesMeter.ToString(), null)); AllItems.Add(new ResultItemSpec("Reference pulses", "Ref.pulses", x => x.PulsesMaster.ToString(), null)); diff --git a/TestBenchFramework/LocalSettings.cs b/TestBenchFramework/LocalSettings.cs index ea17cdfc8..b686dbb20 100644 --- a/TestBenchFramework/LocalSettings.cs +++ b/TestBenchFramework/LocalSettings.cs @@ -57,6 +57,8 @@ namespace TBF [XmlElementAttribute("LastProcedure")] public string LastProcedureName; + public int CycleNr; + public int RightPaneHorizSplitterDistance; /// MainWnd @@ -163,6 +165,7 @@ namespace TBF testBenches[i] = ls.testBenches[i]; LastBenchName = ls.LastBenchName; LastProcedureName = ls.LastProcedureName; + CycleNr = ls.CycleNr; MainWndLeft = ls.MainWndLeft; MainWndTop = ls.MainWndTop; diff --git a/TestBenchFramework/Mappings/TestResultMap.cs b/TestBenchFramework/Mappings/TestResultMap.cs index 36a39fb79..959aa5014 100644 --- a/TestBenchFramework/Mappings/TestResultMap.cs +++ b/TestBenchFramework/Mappings/TestResultMap.cs @@ -9,6 +9,7 @@ namespace TBF.Mappings { Id(x => x.Id); Map(x => x.Name); + Map(x => x.CycleNr); Map(x => x.MetersKind); HasMany(x => x.Meters) .Cascade.All();