[1mdiff --git a/TBF/Rig/TestMethods/FlyingStartMassCollection/FlyingStartMassCollectionSeq.cs b/TBF/Rig/TestMethods/FlyingStartMassCollection/FlyingStartMassCollectionSeq.cs[m
[1mindex c1206bd20..261e8efad 100644[m
[1m--- a/TBF/Rig/TestMethods/FlyingStartMassCollection/FlyingStartMassCollectionSeq.cs[m
[1m+++ b/TBF/Rig/TestMethods/FlyingStartMassCollection/FlyingStartMassCollectionSeq.cs[m
[36m@@ -1,26 +1,28 @@[m
[31m-﻿///[m
[32m+[m[32m﻿using Common;[m
[32m+[m[32musing Config.Entities;[m
[32m+[m[32musing log4net;[m
[32m+[m[32m///[m
 /// Copyright (c) 2013-2021 Sensus Slovensko a.s.[m
 ///[m
 using System;[m
 using System.Collections.Generic;[m
[32m+[m[32musing System.IO;[m
 using System.Text;[m
[31m-using log4net;[m
[31m-using Common;[m
[31m-using Config.Entities;[m
[31m-using TBF.Rig;[m
[32m+[m[32musing System.Xml.Serialization;[m
 using TBF.Boxes;[m
 using TBF.Resources;[m
[31m-using TBF.UiBridge;[m
[32m+[m[32musing TBF.Rig;[m
 using TBF.Rig.GenericDevices;[m
 using TBF.Rig.RegisterReaders.PoseidonReader;[m
 using TBF.Rig.RegisterReaders.PoseidonReader.implementations;[m
 using TBF.Rig.Uni.SharedDialogs.SmartMetersCommunication.common;[m
[32m+[m[32musing TBF.UiBridge;[m
 [m
 namespace TBF.Rig.TestMethods.FlyingStartMassCollection[m
 {[m
[31m-	public class FlyingStartMassCollectionSeq : Sequences.SequenceBase[m
[32m+[m[32m    public class FlyingStartMassCollectionSeq : Sequences.SequenceBase[m
     {[m
[31m-		private static readonly ILog log = LogManager.GetLogger(typeof(FlyingStartMassCollectionSeq));[m
[32m+[m[32m        private static readonly ILog log = LogManager.GetLogger(typeof(FlyingStartMassCollectionSeq));[m
 [m
         /// <summary>[m
         /// Check capabilities of devces in the output path required for this test method[m
[36m@@ -44,11 +46,11 @@[m [mnamespace TBF.Rig.TestMethods.FlyingStartMassCollection[m
             }[m
 [m
             if (test.Volume > devices.Scale.Capacity * Constants.TankFullFactor)[m
[31m-			{[m
[32m+[m[32m            {[m
                 /// Scale capacity is not sufficient[m
                 message = string.Format("{0}: {1}", test.Name, Strings.Test_volume_exceeds_the_scale_capacity);[m
                 return false;[m
[31m-			}[m
[32m+[m[32m            }[m
 [m
             if (!(devices.Diverter is IDiverter))[m
             {[m
[36m@@ -75,28 +77,28 @@[m [mnamespace TBF.Rig.TestMethods.FlyingStartMassCollection[m
             return true;[m
         }[m
 [m
[31m-		/// <summary>[m
[31m-		/// Flying start mass collection method sequence[m
[31m-		/// </summary>[m
[31m-		/// <param name="test">Test entity</param>[m
[31m-		/// <returns>[m
[31m-		///		Event.Done . . . . . . . OK[m
[31m-		///		Event.UiCmdStop  . . . . Stopped by the user using the on-screen button STOP[m
[31m-		///		Event.OpArgumentError  . Target flow is out of range[m
[31m-		///		Event.Error  . . . . . . Unspecified error[m
[31m-		/// </returns>[m
[31m-		public IList<Event> Execute(Test test, int repetitionNr, bool isLastRepetition,[m
[32m+[m[32m        /// <summary>[m
[32m+[m[32m        /// Flying start mass collection method sequence[m
[32m+[m[32m        /// </summary>[m
[32m+[m[32m        /// <param name="test">Test entity</param>[m
[32m+[m[32m        /// <returns>[m
[32m+[m[32m        ///		Event.Done . . . . . . . OK[m
[32m+[m[32m        ///		Event.UiCmdStop  . . . . Stopped by the user using the on-screen button STOP[m
[32m+[m[32m        ///		Event.OpArgumentError  . Target flow is out of range[m
[32m+[m[32m        ///		Event.Error  . . . . . . Unspecified error[m
[32m+[m[32m        /// </returns>[m
[32m+[m[32m        public IList<Event> Execute(Test test, int repetitionNr, bool isLastRepetition,[m
                                     bool isDelayedStart, Compound.CombinedTestParams compoundTestParams,[m
                                     HeatMeters.TestParams heatMetersTestParams, DebugMode debugLevel)[m
[31m-		{[m
[31m-			if (debugLevel == Common.DebugMode.Simulate)[m
[31m-			{[m
[31m-				return Simulate1(test, repetitionNr, isLastRepetition, compoundTestParams, heatMetersTestParams);[m
[31m-			}[m
[31m-			else if (debugLevel == Common.DebugMode.Inherit)[m
[31m-			{[m
[31m-				return Simulate2(test, repetitionNr, isLastRepetition, compoundTestParams, heatMetersTestParams);[m
[31m-			}[m
[32m+[m[32m        {[m
[32m+[m[32m            if (debugLevel == Common.DebugMode.Simulate)[m
[32m+[m[32m            {[m
[32m+[m[32m                return Simulate1(test, repetitionNr, isLastRepetition, compoundTestParams, heatMetersTestParams);[m
[32m+[m[32m            }[m
[32m+[m[32m            else if (debugLevel == Common.DebugMode.Inherit)[m
[32m+[m[32m            {[m
[32m+[m[32m                return Simulate2(test, repetitionNr, isLastRepetition, compoundTestParams, heatMetersTestParams);[m
[32m+[m[32m            }[m
 [m
             ControlBoard.Uni.UniCB cBrd = StateMachine.ControlBoardMain as ControlBoard.Uni.UniCB;[m
             IScale scale = cBrd.Devices.Scale as IScale;[m
[36m@@ -131,30 +133,31 @@[m [mnamespace TBF.Rig.TestMethods.FlyingStartMassCollection[m
             cBrd.SetFiltersPidShortPulses(filters, outPath.PidCoef, test.ShortPulses);[m
 [m
             IList<IOperation> readTempPressOps = new List<IOperation>();[m
[31m-            if(benchPath.TempMtrUp != null) readTempPressOps.Add(benchPath.TempMtrUp.ReadTempOp(ref TempUp));[m
[31m-            if(benchPath.TempMtrDown != null) readTempPressOps.Add(benchPath.TempMtrDown.ReadTempOp(ref TempDown));[m
[31m-            if(outPath.TempMtrDiv != null) readTempPressOps.Add(outPath.TempMtrDiv.ReadTempOp(ref TempDiv));[m
[31m-            if(benchPath.PressMtrUp != null) readTempPressOps.Add(benchPath.PressMtrUp.ReadPressureOp(ref PressUp));[m
[31m-            if(benchPath.PressMtrDown != null) readTempPressOps.Add(benchPath.PressMtrDown.ReadPressureOp(ref PressDown));[m
[31m-            if(benchPath.PressMtrDelta != null) readTempPressOps.Add(benchPath.PressMtrDelta.ReadPressureOp(ref PressDelta));[m
[31m-            if(benchPath.ElectricMtrUp != null) readTempPressOps.Add(benchPath.ElectricMtrUp.ReadPressureOp(ref ElectricUp));[m
[31m-            if(benchPath.ElectricMtrDown != null) readTempPressOps.Add(benchPath.ElectricMtrDown.ReadPressureOp(ref ElectricDown));[m
[31m-            if(benchPath.ElectricMtrDelta != null) readTempPressOps.Add(benchPath.ElectricMtrDelta.ReadPressureOp(ref ElectricDelta));[m
[31m-            if(heatMetersPath != null) readTempPressOps.Add(heatMetersPath.TMeterRefWarm1.ReadTempOp(ref TempRefHi1));[m
[31m-            if(heatMetersPath != null) readTempPressOps.Add(heatMetersPath.TMeterRefWarm2.ReadTempOp(ref TempRefHi2));[m
[31m-            if(heatMetersPath != null) readTempPressOps.Add(heatMetersPath.TMeterRefCold1.ReadTempOp(ref TempRefLo1));[m
[31m-            if(heatMetersPath != null) readTempPressOps.Add(heatMetersPath.TMeterRefCold2.ReadTempOp(ref TempRefLo2));[m
[32m+[m[32m            if (benchPath.TempMtrUp != null) readTempPressOps.Add(benchPath.TempMtrUp.ReadTempOp(ref TempUp));[m
[32m+[m[32m            if (benchPath.TempMtrDown != null) readTempPressOps.Add(benchPath.TempMtrDown.ReadTempOp(ref TempDown));[m
[32m+[m[32m            if (outPath.TempMtrDiv != null) readTempPressOps.Add(outPath.TempMtrDiv.ReadTempOp(ref TempDiv));[m
[32m+[m[32m            if (benchPath.PressMtrUp != null) readTempPressOps.Add(benchPath.PressMtrUp.ReadPressureOp(ref PressUp));[m
[32m+[m[32m            if (benchPath.PressMtrDown != null) readTempPressOps.Add(benchPath.PressMtrDown.ReadPressureOp(ref PressDown));[m
[32m+[m[32m            if (benchPath.PressMtrDelta != null) readTempPressOps.Add(benchPath.PressMtrDelta.ReadPressureOp(ref PressDelta));[m
[32m+[m[32m            if (benchPath.ElectricMtrUp != null) readTempPressOps.Add(benchPath.ElectricMtrUp.ReadPressureOp(ref ElectricUp));[m
[32m+[m[32m            if (benchPath.ElectricMtrDown != null) readTempPressOps.Add(benchPath.ElectricMtrDown.ReadPressureOp(ref ElectricDown));[m
[32m+[m[32m            if (benchPath.ElectricMtrDelta != null) readTempPressOps.Add(benchPath.ElectricMtrDelta.ReadPressureOp(ref ElectricDelta));[m
[32m+[m[32m            if (heatMetersPath != null) readTempPressOps.Add(heatMetersPath.TMeterRefWarm1.ReadTempOp(ref TempRefHi1));[m
[32m+[m[32m            if (heatMetersPath != null) readTempPressOps.Add(heatMetersPath.TMeterRefWarm2.ReadTempOp(ref TempRefHi2));[m
[32m+[m[32m            if (heatMetersPath != null) readTempPressOps.Add(heatMetersPath.TMeterRefCold1.ReadTempOp(ref TempRefLo1));[m
[32m+[m[32m            if (heatMetersPath != null) readTempPressOps.Add(heatMetersPath.TMeterRefCold2.ReadTempOp(ref TempRefLo2));[m
 [m
             int totalPulses = Convert.ToInt32(test.Volume / outPath.FlowMeter.LtrPerPulse);[m
 [m
             ///============================================================================================[m
[31m-            [m
[32m+[m
             /// Read pressure and temperature once before calling Bridge.OnTestSelected(...)[m
             State.Create(string.Format("{0}({1}) : Measuring process data", test.Method, test.Name))[m
                  .AddOperation(checkUiOp)[m
                  .AddOperations(readTempPressOps)[m
                  .EnterState();[m
[31m-            do {[m
[32m+[m[32m            do[m
[32m+[m[32m            {[m
                 e = StateMachine.WaitRunDevsRunOps();[m
                 if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }[m
                 if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }[m
[36m@@ -163,8 +166,8 @@[m [mnamespace TBF.Rig.TestMethods.FlyingStartMassCollection[m
 [m
             /// Start the test, initialize test results[m
 			Bridge.OnTestSelected(this, new TestSelectedEventArgs(test, repetitionNr, inPath, benchPath, outPath, sensPath, heatMetersPath));[m
[31m-			string testName = Results.Utils.GetTestName(test.Name, test.Repeats, repetitionNr);[m
[31m-			TestStartTime = DateTime.Now;[m
[32m+[m[32m            string testName = Results.Utils.GetTestName(test.Name, test.Repeats, repetitionNr);[m
[32m+[m[32m            TestStartTime = DateTime.Now;[m
 [m
             //------------------------------------------------[m
             Bridge.OnActivity(this, Strings.Checking_tank_capacity);[m
[36m@@ -189,35 +192,36 @@[m [mnamespace TBF.Rig.TestMethods.FlyingStartMassCollection[m
                      .AddOperation(cBrd.SetValvesOp(scale.DrainValve, null))[m
                      .AddOperations(readTempPressOps)[m
                      .EnterState();[m
[31m-                do {[m
[32m+[m[32m                do[m
[32m+[m[32m                {[m
                     e = StateMachine.WaitRunDevsRunOps();[m
[31m-                    if (e.Contains(Event.Error))        { retVal = Event.Error;		goto stopTest; }[m
[31m-                    if (TestAndLogUiCmdStop(test, e))   { retVal = Event.UiCmdStop; goto stopTest; }[m
[32m+[m[32m                    if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }[m
[32m+[m[32m                    if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }[m
                 }[m
                 while (e.Contains(Event.ValvesBusy));[m
 #endif[m
             }[m
 [m
 [m
[31m-			///[m
[31m-			/// Optionally display prompt to emerge temperature meters to appropriate baths for heat meters test[m
[31m-			///[m
[31m-			IOperation heatMetersPromptOp = null;[m
[31m-			if (heatMetersTestParams != null && !string.IsNullOrEmpty(heatMetersTestParams.Prompt))[m
[31m-			{[m
[31m-				/// Make sure the CycleBeginForm is closed[m
[31m-				if (UIFlowControl.Stop == WaitBeginFormClosed()) goto stopTest;[m
[32m+[m[32m            ///[m
[32m+[m[32m            /// Optionally display prompt to emerge temperature meters to appropriate baths for heat meters test[m
[32m+[m[32m            ///[m
[32m+[m[32m            IOperation heatMetersPromptOp = null;[m
[32m+[m[32m            if (heatMetersTestParams != null && !string.IsNullOrEmpty(heatMetersTestParams.Prompt))[m
[32m+[m[32m            {[m
[32m+[m[32m                /// Make sure the CycleBeginForm is closed[m
[32m+[m[32m                if (UIFlowControl.Stop == WaitBeginFormClosed()) goto stopTest;[m
 [m
[31m-				heatMetersPromptOp = new Operations.MessageBoxOp(heatMetersTestParams.Prompt);[m
[31m-			}[m
[32m+[m[32m                heatMetersPromptOp = new Operations.MessageBoxOp(heatMetersTestParams.Prompt);[m
[32m+[m[32m            }[m
 [m
 [m
             //------------------------------------------------[m
             Bridge.OnActivity(this, Strings.Starting_the_pump);[m
             //------------------------------------------------[m
 [m
[31m-			Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.FlowSetting));[m
[31m-			int flowSetTime0 = StateMachine.Time;[m
[32m+[m[32m            Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.FlowSetting));[m
[32m+[m[32m            int flowSetTime0 = StateMachine.Time;[m
 [m
 [m
             if (inPath.Pump is GenericDevices.IPumpFM)[m
[36m@@ -227,12 +231,13 @@[m [mnamespace TBF.Rig.TestMethods.FlyingStartMassCollection[m
             ///[m
             State.Create(string.Format("{0}({1}) : Starting pump {2}", test.Method, test.Name, (inPath.Pump != null) ? inPath.Pump.Name : "?"))[m
                  .AddOperation(checkUiOp)[m
[31m-//                 .AddOperation(new Operations.SetAllRegulValvesOp(inPath.RegulValves, inPath.RegulValvesPct, 60))[m
[32m+[m[32m                 //                 .AddOperation(new Operations.SetAllRegulValvesOp(inPath.RegulValves, inPath.RegulValvesPct, 60))[m
                  .AddOperations(readTempPressOps)[m
                  .AddOperation(heatMetersPromptOp)[m
                  .AddOperation(inPath.Pump != null ? cBrd.SetValvesOp(inPath.Pump, null) : null)[m
                  .EnterState();[m
[31m-            do {[m
[32m+[m[32m            do[m
[32m+[m[32m            {[m
                 e = StateMachine.WaitRunDevsRunOps();[m
                 Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.FlowSetting));[m
 [m
[36m@@ -249,8 +254,9 @@[m [mnamespace TBF.Rig.TestMethods.FlyingStartMassCollection[m
                      .AddOperation(new Operations.TimerOp(test.TimePump2StartV))[m
                      .AddOperations(readTempPressOps)[m
                      .AddOperation(heatMetersPromptOp)[m
[31m-	 				 .EnterState();[m
[31m-                do {[m
[32m+[m[32m                      .EnterState();[m
[32m+[m[32m                do[m
[32m+[m[32m                {[m
                     e = StateMachine.WaitRunDevsRunOps();[m
                     Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.FlowSetting));[m
 [m
[36m@@ -267,11 +273,12 @@[m [mnamespace TBF.Rig.TestMethods.FlyingStartMassCollection[m
                      .AddOperation(cBrd.SetValvesOp(benchPath.StopBFValve, null))[m
                      .AddOperations(readTempPressOps)[m
                      .AddOperation(heatMetersPromptOp)[m
[31m-					 .EnterState();[m
[31m-                do {[m
[32m+[m[32m                     .EnterState();[m
[32m+[m[32m                do[m
[32m+[m[32m                {[m
                     e = StateMachine.WaitRunDevsRunOps();[m
[31m-                    if (TestAndLogUiCmdStop(test, e))   { retVal = Event.UiCmdStop; goto stopTest; }[m
[31m-                    if (e.Contains(Event.Error))        { retVal = Event.Error; goto stopTest; }[m
[32m+[m[32m                    if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }[m
[32m+[m[32m                    if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }[m
                 }[m
                 while (!e.Contains(Event.ValvesSet));[m
             }[m
[36m@@ -284,8 +291,9 @@[m [mnamespace TBF.Rig.TestMethods.FlyingStartMassCollection[m
                      .AddOperation(new Operations.TimerOp(test.TimeBeforeFlow))[m
                      .AddOperations(readTempPressOps)[m
                      .AddOperation(heatMetersPromptOp)[m
[31m-					 .EnterState();[m
[31m-                do {[m
[32m+[m[32m                     .EnterState();[m
[32m+[m[32m                do[m
[32m+[m[32m                {[m
                     e = StateMachine.WaitRunDevsRunOps();[m
                     Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.FlowSetting));[m
 [m
[36m@@ -302,13 +310,14 @@[m [mnamespace TBF.Rig.TestMethods.FlyingStartMassCollection[m
                  .AddOperation(cBrd.SetFlowOp(test.QfromM3ph(), test.QtoM3ph(), RefFlow, FlowSettingTimeoutSec))[m
                  .AddOperations(readTempPressOps)[m
                  .AddOperation(heatMetersPromptOp)[m
[31m-				 .EnterState();[m
[31m-            do {[m
[32m+[m[32m                 .EnterState();[m
[32m+[m[32m            do[m
[32m+[m[32m            {[m
                 e = StateMachine.WaitRunDevsRunOps();[m
                 Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.FlowSetting));[m
 [m
[31m-                if (e.Contains(Event.OpArgumentError))  { retVal = Event.OpArgumentError; goto stopTest; }[m
[31m-                if (TestAndLogUiCmdStop(test, e))       { retVal = Event.UiCmdStop; goto stopTest; }[m
[32m+[m[32m                if (e.Contains(Event.OpArgumentError)) { retVal = Event.OpArgumentError; goto stopTest; }[m
[32m+[m[32m                if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }[m
                 if (e.Contains(Event.RegulValveTimeOut))[m
                 {[m
                     Bridge.OnError(this, Strings.Flow_adjustment_failed);[m
[36m@@ -334,12 +343,13 @@[m [mnamespace TBF.Rig.TestMethods.FlyingStartMassCollection[m
                 double Tw_last = 0;[m
                 double Tc_last = 0;[m
 [m
[31m-				State.Create(string.Format("{0}({1}) : Check temperature stabilized.", test.Method, test.Name))[m
[32m+[m[32m                State.Create(string.Format("{0}({1}) : Check temperature stabilized.", test.Method, test.Name))[m
                      .AddOperation(checkUiOp)[m
                      .AddOperations(readTempPressOps)[m
                      .AddOperation(heatMetersPromptOp)[m
[31m-					 .EnterState();[m
[31m-                do {[m
[32m+[m[32m                     .EnterState();[m
[32m+[m[32m                do[m
[32m+[m[32m                {[m
                     e = StateMachine.WaitRunDevsRunOps();[m
                     if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }[m
                     if (e.Contains(Event.Next)) goto temperature_set;[m
[36m@@ -368,63 +378,64 @@[m [mnamespace TBF.Rig.TestMethods.FlyingStartMassCollection[m
                 }[m
                 while (true);[m
             }[m
[31m-			else if (!string.IsNullOrEmpty(test.TempControl) && benchPath.TempMtrUp != null && benchPath.TempMtrDown != null)[m
[31m-			{[m
[31m-				//---------------------------------------------------[m
[31m-				Bridge.OnActivity(this, Strings.Setting_temperature);[m
[31m-				//---------------------------------------------------[m
[31m-[m
[31m-				State.Create(string.Format("{0}({1}) : Wait until the water temperature is within limits", test.Method, test.Name))[m
[31m-					 .AddOperation(checkUiOp)[m
[32m+[m[32m            else if (!string.IsNullOrEmpty(test.TempControl) && benchPath.TempMtrUp != null && benchPath.TempMtrDown != null)[m
[32m+[m[32m            {[m
[32m+[m[32m                //---------------------------------------------------[m
[32m+[m[32m                Bridge.OnActivity(this, Strings.Setting_temperature);[m
[32m+[m[32m                //---------------------------------------------------[m
[32m+[m
[32m+[m[32m                State.Create(string.Format("{0}({1}) : Wait until the water temperature is within limits", test.Method, test.Name))[m
[32m+[m[32m                     .AddOperation(checkUiOp)[m
                      .AddOperations(readTempPressOps)[m
                      .EnterState();[m
[31m-				do {[m
[31m-					e = StateMachine.WaitRunDevsRunOps();[m
[31m-					if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }[m
[31m-					if (e.Contains(Event.Next)) goto temperature_set;[m
[32m+[m[32m                do[m
[32m+[m[32m                {[m
[32m+[m[32m                    e = StateMachine.WaitRunDevsRunOps();[m
[32m+[m[32m                    if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }[m
[32m+[m[32m                    if (e.Contains(Event.Next)) goto temperature_set;[m
 [m
                     if ((test.TempLimLo <= TempUp.Val) && (TempUp.Val <= test.TempLimHi) &&[m
                         (test.TempLimLo <= TempDown.Val) && (TempDown.Val <= test.TempLimHi))[m
                     {[m
[31m-						goto temperature_set;[m
[31m-					}[m
[31m-				}[m
[31m-				while (true);[m
[31m-			}[m
[32m+[m[32m                        goto temperature_set;[m
[32m+[m[32m                    }[m
[32m+[m[32m                }[m
[32m+[m[32m                while (true);[m
[32m+[m[32m            }[m
 [m
         temperature_set:[m
 [m
             ///[m
[31m-			/// Prepare cameras, ROI-s and measurementOperations[m
[31m-			///[m
[32m+[m[32m            /// Prepare cameras, ROI-s and measurementOperations[m
[32m+[m[32m            ///[m
 [m
[31m-			/// Find successfully detected ROI-s[m
[31m-			IList<GenericDevices.IRegReaderLiveCamera> rois = new List<GenericDevices.IRegReaderLiveCamera>();[m
[31m-			foreach (var rr in sensPath.RegisterReaders)[m
[31m-			{[m
[32m+[m[32m            /// Find successfully detected ROI-s[m
[32m+[m[32m            IList<GenericDevices.IRegReaderLiveCamera> rois = new List<GenericDevices.IRegReaderLiveCamera>();[m
[32m+[m[32m            foreach (var rr in sensPath.RegisterReaders)[m
[32m+[m[32m            {[m
                 GenericDevices.IRegReaderLiveCamera cameraRoI = rr as GenericDevices.IRegReaderLiveCamera;[m
                 if ((cameraRoI != null) && cameraRoI.Detected)[m
                 {[m
                     rois.Add(cameraRoI);[m
                 }[m
[31m-			}[m
[32m+[m[32m            }[m
 [m
[31m-			/// Find cameras[m
[31m-			IList<GenericDevices.ICamera> cameras = new List<GenericDevices.ICamera>();[m
[32m+[m[32m            /// Find cameras[m
[32m+[m[32m            IList<GenericDevices.ICamera> cameras = new List<GenericDevices.ICamera>();[m
             foreach (var roi in rois)[m
             {[m
[31m-				if (roi.Camera != null && !cameras.Contains(roi.Camera))[m
[31m-				{[m
[31m-					cameras.Add(roi.Camera);[m
[31m-					roi.Camera.ClearRoiParams();[m
[31m-				}[m
[32m+[m[32m                if (roi.Camera != null && !cameras.Contains(roi.Camera))[m
[32m+[m[32m                {[m
[32m+[m[32m                    cameras.Add(roi.Camera);[m
[32m+[m[32m                    roi.Camera.ClearRoiParams();[m
[32m+[m[32m                }[m
             }[m
 [m
[31m-			/// Register ROI-parameters to cameras[m
[31m-			foreach (var roi in rois) roi.RegisterRoiToCamera();[m
[32m+[m[32m            /// Register ROI-parameters to cameras[m
[32m+[m[32m            foreach (var roi in rois) roi.RegisterRoiToCamera();[m
 [m
[31m-			/// Prepare measurementOperations[m
[31m-			IList<IOperation> cameraMeasurementOps = new List<IOperation>();[m
[32m+[m[32m            /// Prepare measurementOperations[m
[32m+[m[32m            IList<IOperation> cameraMeasurementOps = new List<IOperation>();[m
             foreach (var camera in cameras)[m
             {[m
                 cameraMeasurementOps.Add(camera.MeasurementOp());[m
[36m@@ -446,60 +457,62 @@[m [mnamespace TBF.Rig.TestMethods.FlyingStartMassCollection[m
             }[m
 [m
 [m
[31m-			if (drainTheTank)[m
[31m-			{[m
[31m-				//------------------------------------------------[m
[31m-				Bridge.OnActivity(this, Strings.Closing_the_tank);[m
[31m-				//------------------------------------------------[m
[32m+[m[32m            if (drainTheTank)[m
[32m+[m[32m            {[m
[32m+[m[32m                //------------------------------------------------[m
[32m+[m[32m                Bridge.OnActivity(this, Strings.Closing_the_tank);[m
[32m+[m[32m                //------------------------------------------------[m
 [m
[31m-				///[m
[31m-				/// Make sure tank draining completed[m
[31m-				///[m
[32m+[m[32m                ///[m
[32m+[m[32m                /// Make sure tank draining completed[m
[32m+[m[32m                ///[m
                 switch (DrainTheTank(scale, readTempPressOps))[m
[31m-				{[m
[31m-					case Event.Error: { retVal = Event.Error; goto stopTest; }[m
[31m-					case Event.UiCmdStop: { retVal = Event.UiCmdStop; goto stopTest; }[m
[31m-				}[m
[32m+[m[32m                {[m
[32m+[m[32m                    case Event.Error: { retVal = Event.Error; goto stopTest; }[m
[32m+[m[32m                    case Event.UiCmdStop: { retVal = Event.UiCmdStop; goto stopTest; }[m
[32m+[m[32m                }[m
 [m
[31m-				drainTheTank = false;[m
[31m-			}[m
[31m-			else[m
[31m-			{[m
[31m-				/// Close the drain valve anyway[m
[31m-				State.Create(string.Format("{0}({1}) : Close the drain valve", test.Method, test.Name))[m
[31m-					 .AddOperation(checkUiOp)[m
[32m+[m[32m                drainTheTank = false;[m
[32m+[m[32m            }[m
[32m+[m[32m            else[m
[32m+[m[32m            {[m
[32m+[m[32m                /// Close the drain valve anyway[m
[32m+[m[32m                State.Create(string.Format("{0}({1}) : Close the drain valve", test.Method, test.Name))[m
[32m+[m[32m                     .AddOperation(checkUiOp)[m
                      .AddOperations(readTempPressOps)[m
                      .AddOperation(cBrd.SetValvesOp(null, scale.DrainValve))[m
                      .EnterState();[m
[31m-				do {[m
[31m-					e = StateMachine.WaitRunDevsRunOps();[m
[31m-					if (e.Contains(Event.Error))	  { retVal = Event.Error; goto stopTest;	 }[m
[31m-					if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }[m
[31m-				}[m
[31m-				while (e.Contains(Event.ValvesBusy));[m
[31m-			}[m
[32m+[m[32m                do[m
[32m+[m[32m                {[m
[32m+[m[32m                    e = StateMachine.WaitRunDevsRunOps();[m
[32m+[m[32m                    if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }[m
[32m+[m[32m                    if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }[m
[32m+[m[32m                }[m
[32m+[m[32m                while (e.Contains(Event.ValvesBusy));[m
[32m+[m[32m            }[m
 [m
 [m
[31m-			//----------------------------------------------------[m
[31m-			Bridge.OnActivity(this, Strings.Measuring_the_weight);[m
[31m-			//----------------------------------------------------[m
[32m+[m[32m            //----------------------------------------------------[m
[32m+[m[32m            Bridge.OnActivity(this, Strings.Measuring_the_weight);[m
[32m+[m[32m            //----------------------------------------------------[m
 [m
             LogProcessDataTestInfo(processDataLogger, test.Procedure.Name, test.Name);[m
 [m
[31m-			if (heatMetersPath == null) LogProcessDataHeader(processDataLogger, "Start mass");[m
[31m-			else LogProcessDataHeaderHeatMeters(processDataLogger, "Start mass");[m
[31m-    [m
[31m-			State.Create(string.Format("{0}({1}) : Measuring the start mass", test.Method, test.Name))[m
[31m-				 .AddOperation(checkUiOp)[m
[32m+[m[32m            if (heatMetersPath == null) LogProcessDataHeader(processDataLogger, "Start mass");[m
[32m+[m[32m            else LogProcessDataHeaderHeatMeters(processDataLogger, "Start mass");[m
[32m+[m
[32m+[m[32m            State.Create(string.Format("{0}({1}) : Measuring the start mass", test.Method, test.Name))[m
[32m+[m[32m                 .AddOperation(checkUiOp)[m
                  .AddOperations(readTempPressOps)[m
                  .AddOperations(cameraMeasurementOps)[m
                  .AddOperation(scale.ReadStableMassOp(ref StartMass, test.TimeFlow2Mass, test.MassMethod, test.MassRepeats, test.MassSpread))[m
                  .AddOperation(processDataLoggingOp)[m
                  .EnterState();[m
[31m-			do {[m
[31m-				e = StateMachine.WaitRunDevsRunOps();[m
[31m-				if (e.Contains(Event.Error))	   { retVal = Event.Error;	   goto stopTest; }[m
[31m-				if (TestAndLogUiCmdStop(test,e))   { retVal = Event.UiCmdStop; goto stopTest; }[m
[32m+[m[32m            do[m
[32m+[m[32m            {[m
[32m+[m[32m                e = StateMachine.WaitRunDevsRunOps();[m
[32m+[m[32m                if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }[m
[32m+[m[32m                if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }[m
                 if (e.Contains(Event.ScaleTimeout))[m
                 {[m
                     Bridge.OnError(this, Strings.Mass_measurement_timeout);[m
[36m@@ -513,9 +526,9 @@[m [mnamespace TBF.Rig.TestMethods.FlyingStartMassCollection[m
             log.WarnFormat("Start mass = {0}kg", StartMass);[m
 [m
 [m
[31m-			if (heatMetersPath == null)[m
[32m+[m[32m            if (heatMetersPath == null)[m
                 LogProcessDataHeader(processDataLogger, "Measurement");[m
[31m-			else[m
[32m+[m[32m            else[m
                 LogProcessDataHeaderHeatMeters(processDataLogger, "Measurement");[m
 [m
             //------------------------------------------------[m
[36m@@ -531,18 +544,19 @@[m [mnamespace TBF.Rig.TestMethods.FlyingStartMassCollection[m
 [m
             /// Measurement loop[m
             State.Create(string.Format("{0}({1}) : FlyingStartStopTestWithDivOp is running", test.Method, test.Name))[m
[31m-				 .AddOperation(checkUiOp)[m
[32m+[m[32m                 .AddOperation(checkUiOp)[m
                  .AddOperations(readTempPressOps)[m
                  .AddOperations(readDatastreamOps)[m
                  .AddOperations(cameraMeasurementOps)[m
                  .AddOperation(cBrd.FlyingStartStopTestOp(test, test.QfromM3ph(), test.QtoM3ph(), totalPulses, true, isDelayedStart, false, 0, true, DiverterStart, DiverterEnd))[m
                  .AddOperation(processDataLoggingOp)[m
                  .EnterState();[m
[31m-            do {[m
[32m+[m[32m            do[m
[32m+[m[32m            {[m
                 e = StateMachine.WaitRunDevsRunOps();[m
                 if (e.Contains(Event.OpArgumentError)) { retVal = Event.OpArgumentError; goto stopTest; }[m
[31m-                if (e.Contains(Event.Error))           { retVal = Event.Error;           goto stopTest; }[m
[31m-                if (TestAndLogUiCmdStop(test, e))      { retVal = Event.UiCmdStop;       goto stopTest; }[m
[32m+[m[32m                if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }[m
[32m+[m[32m                if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }[m
 [m
                 /// Show remaining time[m
                 if ((remainingTime = Math.Max(estimtdEndTime - StateMachine.Time, 0)) > 60)[m
[36m@@ -602,32 +616,34 @@[m [mnamespace TBF.Rig.TestMethods.FlyingStartMassCollection[m
                      .AddOperations(readTempPressOps)[m
                      .AddOperation(cBrd.SetValvesOp(StateMachine.DefaultValvesOpen, StateMachine.DefaultValvesClose))[m
                      .EnterState();[m
[31m-                do {[m
[32m+[m[32m                do[m
[32m+[m[32m                {[m
                     e = StateMachine.WaitRunDevsRunOps();[m
[31m-                    if (e.Contains(Event.Error))    { retVal = Event.Error;     goto stopTest; }[m
[31m-                    if (TestAndLogUiCmdStop(e))     { retVal = Event.UiCmdStop; goto stopTest; }[m
[32m+[m[32m                    if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }[m
[32m+[m[32m                    if (TestAndLogUiCmdStop(e)) { retVal = Event.UiCmdStop; goto stopTest; }[m
                 }[m
                 while (!e.Contains(Event.ValvesSet));[m
             }[m
 [m
[31m-			//------------------------------------------------[m
[31m-			Bridge.OnActivity(this, Strings.Measuring_the_weight);[m
[31m-			//------------------------------------------------[m
[32m+[m[32m            //------------------------------------------------[m
[32m+[m[32m            Bridge.OnActivity(this, Strings.Measuring_the_weight);[m
[32m+[m[32m            //------------------------------------------------[m
 [m
[31m-			if (heatMetersPath == null) LogProcessDataHeader(processDataLogger, "End mass");[m
[31m-			else LogProcessDataHeaderHeatMeters(processDataLogger, "End mass");[m
[32m+[m[32m            if (heatMetersPath == null) LogProcessDataHeader(processDataLogger, "End mass");[m
[32m+[m[32m            else LogProcessDataHeaderHeatMeters(processDataLogger, "End mass");[m
 [m
             State.Create(string.Format("{0}({1}) : Measuring the end mass", test.Method, test.Name))[m
[31m-				 .AddOperation(checkUiOp)[m
[32m+[m[32m                 .AddOperation(checkUiOp)[m
                  .AddOperations(readTempPressOps)[m
                  .AddOperation(scale.ReadStableMassOp(ref EndMass, test.TimeStop2Mass, test.MassMethod, test.MassRepeats, test.MassSpread))[m
                  .AddOperation(new Operations.TimerOp(StableMassMsrmntTimeoutSec))[m
                  .AddOperation(processDataLoggingOp)[m
                  .EnterState();[m
[31m-			do {[m
[31m-				e = StateMachine.WaitRunDevsRunOps();[m
[31m-				if (e.Contains(Event.Error))	 { retVal = Event.Error;	 goto stopTest; }[m
[31m-				if (TestAndLogUiCmdStop(test,e)) { retVal = Event.UiCmdStop; goto stopTest; }[m
[32m+[m[32m            do[m
[32m+[m[32m            {[m
[32m+[m[32m                e = StateMachine.WaitRunDevsRunOps();[m
[32m+[m[32m                if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }[m
[32m+[m[32m                if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }[m
                 if (e.Contains(Event.ScaleTimeout))[m
                 {[m
                     Bridge.OnError(this, Strings.Mass_measurement_timeout);[m
[36m@@ -639,7 +655,7 @@[m [mnamespace TBF.Rig.TestMethods.FlyingStartMassCollection[m
             ///[m
             tMass2 = StateMachine.Time;[m
             log.WarnFormat("End mass = {0}kg", EndMass);[m
[31m-			TestEndTime = DateTime.Now;[m
[32m+[m[32m            TestEndTime = DateTime.Now;[m
 [m
             if (test.DoDrainingAfter)[m
             {[m
[36m@@ -648,47 +664,48 @@[m [mnamespace TBF.Rig.TestMethods.FlyingStartMassCollection[m
                      .AddOperation(cBrd.SetValvesOp(scale.DrainValve, null))[m
                      .AddOperations(readTempPressOps)[m
                      .EnterState();[m
[31m-                do {[m
[32m+[m[32m                do[m
[32m+[m[32m                {[m
                     e = StateMachine.WaitRunDevsRunOps();[m
                     if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }[m
                 }[m
                 while (e.Contains(Event.ValvesBusy));[m
             }[m
 [m
[31m-			//------------------------------------------------[m
[31m-			Bridge.OnActivity(this, Strings.Test_completed);[m
[31m-			//------------------------------------------------[m
[32m+[m[32m            //------------------------------------------------[m
[32m+[m[32m            Bridge.OnActivity(this, Strings.Test_completed);[m
[32m+[m[32m            //------------------------------------------------[m
 [m
[31m-			/// Make sure the CycleBeginForm is closed so that water meter data (s/n) can be copied into results[m
[31m-			if (heatMetersPromptOp == null)[m
[31m-			{[m
[31m-				if (UIFlowControl.Stop == WaitBeginFormClosed()) goto stopTest;[m
[31m-			}[m
[32m+[m[32m            /// Make sure the CycleBeginForm is closed so that water meter data (s/n) can be copied into results[m
[32m+[m[32m            if (heatMetersPromptOp == null)[m
[32m+[m[32m            {[m
[32m+[m[32m                if (UIFlowControl.Stop == WaitBeginFormClosed()) goto stopTest;[m
[32m+[m[32m            }[m
 [m
[31m-			///[m
[31m-			/// Populate TestResult data entity with data[m
[31m-			/// [m
[31m-			Results.Entities.TestRslt tstRslt = BatchRslts.GetTestRslt(testName, test.Part);[m
[32m+[m[32m            ///[m
[32m+[m[32m            /// Populate TestResult data entity with data[m
[32m+[m[32m            ///[m[41m [m
[32m+[m[32m            Results.Entities.TestRslt tstRslt = BatchRslts.GetTestRslt(testName, test.Part);[m
 [m
             bool stopCycle = false;[m
             if (tstRslt != null)[m
             {[m
                 Results.Utils.GetCounterStates(tstRslt, Program.LocalSettings.Counters);[m
 [m
[31m-				/// Raw data[m
[32m+[m[32m                /// Raw data[m
                 UpdateTempPressDensAmb(tstRslt);[m
[31m-                tstRslt.MethodClass    = TbfComponents.FindComponent(test.Method).ClassName;[m
[31m-                tstRslt.StartTime      = TestStartTime;[m
[31m-				tstRslt.EndTime        = TestEndTime;[m
[31m-				tstRslt.FlowSetTime    = flowSetTime;[m
[31m-                tstRslt.TestTime       = cBrd.TestTime;					        /// [s] measurement time[m
[31m-                tstRslt.PulsesMaster   = Convert.ToDouble(cBrd.RefPulses);	    /// Pulses of the master flow meter (test total)[m
[31m-				tstRslt.MassStartRaw   = StartMass.Val;[m
[31m-				tstRslt.MassEndRaw     = EndMass.Val;[m
[32m+[m[32m                tstRslt.MethodClass = TbfComponents.FindComponent(test.Method).ClassName;[m
[32m+[m[32m                tstRslt.StartTime = TestStartTime;[m
[32m+[m[32m                tstRslt.EndTime = TestEndTime;[m
[32m+[m[32m                tstRslt.FlowSetTime = flowSetTime;[m
[32m+[m[32m                tstRslt.TestTime = cBrd.TestTime;					        /// [s] measurement time[m
[32m+[m[32m                tstRslt.PulsesMaster = Convert.ToDouble(cBrd.RefPulses);	    /// Pulses of the master flow meter (test total)[m
[32m+[m				[32mtstRslt.MassStartRaw = StartMass.Val;[m
[32m+[m[32m                tstRslt.MassEndRaw = EndMass.Val;[m
                 tstRslt.TimeBtwnMassMsrmnts = tMass2 - tMass1;[m
                 tstRslt.ConstMasterRaw = outPath.FlowMeter.LtrPerPulse;[m
[31m-                tstRslt.VolumeMaster   = tstRslt.ConstMasterRaw * tstRslt.PulsesMaster; /// [l] volume from the master flow meter[m
[31m-                double flowMID         = 3.6 * tstRslt.VolumeMaster / tstRslt.TestTime; /// [m3/h] flow before correction from the master flow meter[m
[32m+[m[32m                tstRslt.VolumeMaster = tstRslt.ConstMasterRaw * tstRslt.PulsesMaster; /// [l] volume from the master flow meter[m
[32m+[m[32m                double flowMID = 3.6 * tstRslt.VolumeMaster / tstRslt.TestTime; /// [m3/h] flow before correction from the master flow meter[m
 [m
                 /// Corrected data[m
                 tstRslt.MassStart = MeasurementCorrection.CorrectedValue(tstRslt.MassStartRaw, scale.Corrections);[m
[36m@@ -698,23 +715,37 @@[m [mnamespace TBF.Rig.TestMethods.FlyingStartMassCollection[m
                 tstRslt.ConstMasterCorr = outPath.FlowMeter.LtrPerPulseCorrected(flowMID, tstRslt.TempDownMean);[m
 [m
                 /// Main result calculation[m
[31m-                tstRslt.VolumeCTV    = 1000 * tstRslt.Batch.Buoyancy * mass / tstRslt.DensityLine;[m
[32m+[m[32m                tstRslt.VolumeCTV = 1000 * tstRslt.Batch.Buoyancy * mass / tstRslt.DensityLine;[m
                 if ((outPath.Diverter != null) && (tstRslt.TestTime > float.Epsilon))[m
                 {[m
                     tstRslt.TestTimeCorrection = outPath.Diverter.TestTimeCorrection(flowMID);[m
                     tstRslt.VolumeCTV *= tstRslt.TestTime + tstRslt.TestTimeCorrection;[m
                     tstRslt.VolumeCTV /= tstRslt.TestTime;[m
                 }[m
[31m-                tstRslt.Flow        = 3.6 * tstRslt.VolumeCTV / tstRslt.TestTime;       /// Flow from VolumeCTV and time[m
[32m+[m[32m                tstRslt.Flow = 3.6 * tstRslt.VolumeCTV / tstRslt.TestTime;       /// Flow from VolumeCTV and time[m
                 tstRslt.ErrorMaster = Formulas.ErrorFromVolumes(tstRslt.VolumeMaster, tstRslt.VolumeCTV);[m
                 tstRslt.ConstMaster = (tstRslt.PulsesMaster != 0) ? (tstRslt.VolumeCTV / tstRslt.PulsesMaster) : tstRslt.ConstMasterCorr;[m
[31m-                                                                                        /// Master pulses per liter from the measured mass[m
[32m+[m[32m                /// Master pulses per liter from the measured mass[m
[32m+[m
[32m+[m[32m                /// Main result calculation for mass[m
[32m+[m[32m                tstRslt.MassCTV = tstRslt.Batch.Buoyancy * mass;[m
[32m+[m[32m                if ((outPath.Diverter != null) && (tstRslt.TestTime > float.Epsilon))[m
[32m+[m[32m                {[m
[32m+[m[32m                    tstRslt.TestTimeCorrection = outPath.Diverter.TestTimeCorrection(flowMID);[m
[32m+[m[32m                    tstRslt.MassCTV *= tstRslt.TestTime + tstRslt.TestTimeCorrection;[m
[32m+[m[32m                    tstRslt.MassCTV /= tstRslt.TestTime;[m
[32m+[m[32m                }[m
[32m+[m[32m                tstRslt.MassFlow = 3.6 * tstRslt.MassCTV / tstRslt.TestTime;       /// Flow from MassCTV and time[m
[32m+[m[32m                tstRslt.MassErrorMaster = Formulas.ErrorFromVolumes(tstRslt.VolumeMaster, tstRslt.MassCTV);[m
[32m+[m[32m                tstRslt.MassConstMaster = (tstRslt.PulsesMaster != 0) ? (tstRslt.MassCTV / tstRslt.PulsesMaster) : tstRslt.ConstMasterCorr;[m
[32m+[m
[32m+[m
                 /// Flow statistics correction[m
[31m-                tstRslt.FlowMean  = Convert.ToSingle(tstRslt.ConstMaster * RefFlowStat.Average / tstRslt.ConstMasterRaw);[m
[32m+[m[32m                tstRslt.FlowMean = Convert.ToSingle(tstRslt.ConstMaster * RefFlowStat.Average / tstRslt.ConstMasterRaw);[m
                 tstRslt.FlowStart = Convert.ToSingle(tstRslt.ConstMaster * RefFlowStat.First / tstRslt.ConstMasterRaw);[m
[31m-                tstRslt.FlowEnd   = Convert.ToSingle(tstRslt.ConstMaster * RefFlowStat.Last / tstRslt.ConstMasterRaw);[m
[31m-                tstRslt.FlowMin   = Convert.ToSingle(tstRslt.ConstMaster * RefFlowStat.Min / tstRslt.ConstMasterRaw);[m
[31m-                tstRslt.FlowMax   = Convert.ToSingle(tstRslt.ConstMaster * RefFlowStat.Max / tstRslt.ConstMasterRaw);[m
[32m+[m[32m                tstRslt.FlowEnd = Convert.ToSingle(tstRslt.ConstMaster * RefFlowStat.Last / tstRslt.ConstMasterRaw);[m
[32m+[m[32m                tstRslt.FlowMin = Convert.ToSingle(tstRslt.ConstMaster * RefFlowStat.Min / tstRslt.ConstMasterRaw);[m
[32m+[m[32m                tstRslt.FlowMax = Convert.ToSingle(tstRslt.ConstMaster * RefFlowStat.Max / tstRslt.ConstMasterRaw);[m
 [m
                 tstRslt.DiverterStart = outPath.Diverter.SwitchTimeStart.Val;[m
                 tstRslt.DivStart10 = 0;[m
[36m@@ -734,114 +765,114 @@[m [mnamespace TBF.Rig.TestMethods.FlyingStartMassCollection[m
                     : 0;[m
                 tstRslt.InfoFlags = infoFlags;[m
 [m
[31m-				if (compoundTestParams != null)[m
[31m-				{[m
[31m-					///[m
[31m-					/// Compound meters[m
[31m-					///[m
[31m-					for (int i = 0; i < BatchRslts.WMPositionsCount; i++)[m
[31m-					{[m
[31m-						if (!test.IsPartCompatible(Utils.PartNr(i + 1, BatchRslts.Batch.Compound))) continue;[m
[32m+[m[32m                if (compoundTestParams != null)[m
[32m+[m[32m                {[m
[32m+[m[32m                    ///[m
[32m+[m[32m                    /// Compound meters[m
[32m+[m[32m                    ///[m
[32m+[m[32m                    for (int i = 0; i < BatchRslts.WMPositionsCount; i++)[m
[32m+[m[32m                    {[m
[32m+[m[32m                        if (!test.IsPartCompatible(Utils.PartNr(i + 1, BatchRslts.Batch.Compound))) continue;[m
 [m
[31m-						var mainMeterRslt = BatchRslts.GetMeterTestRslt(testName, i, CompoundMeterId.CompoundMain);[m
[31m-						var auxMeterRslt = BatchRslts.GetMeterTestRslt(testName, i, CompoundMeterId.CompoundAux);[m
[32m+[m[32m                        var mainMeterRslt = BatchRslts.GetMeterTestRslt(testName, i, CompoundMeterId.CompoundMain);[m
[32m+[m[32m                        var auxMeterRslt = BatchRslts.GetMeterTestRslt(testName, i, CompoundMeterId.CompoundAux);[m
 [m
[31m-						for (int isAux = 0; isAux <= 1; isAux++)		/// 0=main, 1=aux[m
[32m+[m[32m                        for (int isAux = 0; isAux <= 1; isAux++)		/// 0=main, 1=aux[m
 						{[m
[31m-							IRegReader regReader = sensPath.RegisterReaders[2 * i + isAux];[m
[31m-							var oneMTR = (isAux == 0) ? mainMeterRslt : auxMeterRslt;[m
[32m+[m[32m                            IRegReader regReader = sensPath.RegisterReaders[2 * i + isAux];[m
[32m+[m[32m                            var oneMTR = (isAux == 0) ? mainMeterRslt : auxMeterRslt;[m
 [m
[31m-							if (oneMTR != null && regReader != null)[m
[31m-							{[m
[32m+[m[32m                            if (oneMTR != null && regReader != null)[m
[32m+[m[32m                            {[m
                                 oneMTR.RegReaderType = (int)regReader.RegisterReaderType;[m
                                 if (regReader is PoseidonReader poseidon) //is Poseidon reader family[m
                                 {[m
[31m-	                                oneMTR.PulsesPerLiter = 0;[m
[31m-[m
[31m-	                                /// Optionally supress pulses from the large water meter[m
[31m-	                                oneMTR.PulsesMeter = 0;[m
[31m-	                                oneMTR.PulsesMaster = 0;[m
[31m-	                                oneMTR.TestTime = cBrd.TestTime;[m
[31m-	                                oneMTR.VolumeStart = 0;[m
[31m-	                                oneMTR.VolumeEnd = 0;[m
[31m-	                                oneMTR.VolumeRef = tstRslt.VolumeCTV;[m
[31m-[m
[31m-	                                if (oneMTR.PulsesMaster != 0)[m
[31m-	                                {[m
[31m-		                                oneMTR.PulsesMeter *= (tstRslt.PulsesMaster / oneMTR.PulsesMaster);[m
[31m-		                                oneMTR.PulsesMaster = tstRslt.PulsesMaster;[m
[31m-	                                }[m
[31m-[m
[31m-	                                oneMTR.VolumeMeter = poseidon.WMVolume;[m
[31m-	                                [m
[31m-	                                oneMTR.Error =[m
[31m-		                                Formulas.ErrorFromVolumes(oneMTR.VolumeMeter,[m
[31m-			                                tstRslt.VolumeCTV); /// Main/Aux meter error is not usedfor evaluation[m
[32m+[m[32m                                    oneMTR.PulsesPerLiter = 0;[m
[32m+[m
[32m+[m[32m                                    /// Optionally supress pulses from the large water meter[m
[32m+[m[32m                                    oneMTR.PulsesMeter = 0;[m
[32m+[m[32m                                    oneMTR.PulsesMaster = 0;[m
[32m+[m[32m                                    oneMTR.TestTime = cBrd.TestTime;[m
[32m+[m[32m                                    oneMTR.VolumeStart = 0;[m
[32m+[m[32m                                    oneMTR.VolumeEnd = 0;[m
[32m+[m[32m                                    oneMTR.VolumeRef = tstRslt.VolumeCTV;[m
[32m+[m
[32m+[m[32m                                    if (oneMTR.PulsesMaster != 0)[m
[32m+[m[32m                                    {[m
[32m+[m[32m                                        oneMTR.PulsesMeter *= (tstRslt.PulsesMaster / oneMTR.PulsesMaster);[m
[32m+[m[32m                                        oneMTR.PulsesMaster = tstRslt.PulsesMaster;[m
[32m+[m[32m                                    }[m
[32m+[m
[32m+[m[32m                                    oneMTR.VolumeMeter = poseidon.WMVolume;[m
[32m+[m
[32m+[m[32m                                    oneMTR.Error =[m
[32m+[m[32m                                        Formulas.ErrorFromVolumes(oneMTR.VolumeMeter,[m
[32m+[m[32m                                            tstRslt.VolumeCTV); /// Main/Aux meter error is not usedfor evaluation[m
                                 }[m
                                 else[m
                                 {[m
[31m-	                                oneMTR.PulsesPerLiter = regReader.PulsesPerLtr;[m
[31m-[m
[31m-	                                /// Optionally supress pulses from the large water meter[m
[31m-	                                oneMTR.PulsesMeter = (isAux == 0 && compoundTestParams.SupressTrills)[m
[31m-		                                ? 0[m
[31m-		                                : Convert.ToDouble(regReader.WMPulses);[m
[31m-	                                oneMTR.PulsesMaster = Convert.ToDouble(regReader.WMRefPulses);[m
[31m-	                                oneMTR.TestTime = cBrd.TestTime;[m
[31m-	                                oneMTR.VolumeStart = 0;[m
[31m-	                                oneMTR.VolumeEnd = 0;[m
[31m-	                                oneMTR.VolumeRef = tstRslt.VolumeCTV;[m
[31m-[m
[31m-	                                if (oneMTR.PulsesMaster != 0)[m
[31m-	                                {[m
[31m-		                                oneMTR.PulsesMeter *= (tstRslt.PulsesMaster / oneMTR.PulsesMaster);[m
[31m-		                                oneMTR.PulsesMaster = tstRslt.PulsesMaster;[m
[31m-	                                }[m
[31m-[m
[31m-	                                oneMTR.VolumeMeter = oneMTR.PulsesMeter * regReader.LtrsPerPulse; /// liter[m
[31m-[m
[31m-	                                oneMTR.Error =[m
[31m-		                                Formulas.ErrorFromVolumes(oneMTR.VolumeMeter,[m
[31m-			                                tstRslt.VolumeCTV); /// Main/Aux meter error is not usedfor evaluation[m
[32m+[m[32m                                    oneMTR.PulsesPerLiter = regReader.PulsesPerLtr;[m
[32m+[m
[32m+[m[32m                                    /// Optionally supress pulses from the large water meter[m
[32m+[m[32m                                    oneMTR.PulsesMeter = (isAux == 0 && compoundTestParams.SupressTrills)[m
[32m+[m[32m                                        ? 0[m
[32m+[m[32m                                        : Convert.ToDouble(regReader.WMPulses);[m
[32m+[m[32m                                    oneMTR.PulsesMaster = Convert.ToDouble(regReader.WMRefPulses);[m
[32m+[m[32m                                    oneMTR.TestTime = cBrd.TestTime;[m
[32m+[m[32m                                    oneMTR.VolumeStart = 0;[m
[32m+[m[32m                                    oneMTR.VolumeEnd = 0;[m
[32m+[m[32m                                    oneMTR.VolumeRef = tstRslt.VolumeCTV;[m
[32m+[m
[32m+[m[32m                                    if (oneMTR.PulsesMaster != 0)[m
[32m+[m[32m                                    {[m
[32m+[m[32m                                        oneMTR.PulsesMeter *= (tstRslt.PulsesMaster / oneMTR.PulsesMaster);[m
[32m+[m[32m                                        oneMTR.PulsesMaster = tstRslt.PulsesMaster;[m
[32m+[m[32m                                    }[m
[32m+[m
[32m+[m[32m                                    oneMTR.VolumeMeter = oneMTR.PulsesMeter * regReader.LtrsPerPulse; /// liter[m
[32m+[m
[32m+[m[32m                                    oneMTR.Error =[m
[32m+[m[32m                                        Formulas.ErrorFromVolumes(oneMTR.VolumeMeter,[m
[32m+[m[32m                                            tstRslt.VolumeCTV); /// Main/Aux meter error is not usedfor evaluation[m
                                 }[m
[31m-							}[m
[31m-						}[m
[32m+[m[32m                            }[m
[32m+[m[32m                        }[m
 [m
[31m-						var compoundMTR = BatchRslts.GetMeterTestRslt(testName, i, CompoundMeterId.Compound);[m
[32m+[m[32m                        var compoundMTR = BatchRslts.GetMeterTestRslt(testName, i, CompoundMeterId.Compound);[m
 [m
[31m-						if (compoundMTR != null && mainMeterRslt != null && auxMeterRslt != null)[m
[31m-						{[m
[31m-							compoundMTR.VolumeRef    = tstRslt.VolumeCTV;[m
[31m-							compoundMTR.VolumeMeter  = mainMeterRslt.VolumeMeter + auxMeterRslt.VolumeMeter;[m
[31m-							compoundMTR.PulsesMaster = tstRslt.PulsesMaster;[m
[31m-							compoundMTR.TestTime     = tstRslt.TestTime;[m
[31m-                            compoundMTR.Error        = Formulas.ErrorFromVolumes(compoundMTR.VolumeMeter, compoundMTR.VolumeRef);[m
[31m-							compoundMTR.Passed       = (compoundMTR.Error >= test.GetErrLimLo(tstRslt.VolumeCTV, tstRslt.TestTime) + test.Uncertainty)[m
[31m-													&& (compoundMTR.Error <= test.GetErrLimHi(tstRslt.VolumeCTV, tstRslt.TestTime) - test.Uncertainty)[m
[32m+[m[32m                        if (compoundMTR != null && mainMeterRslt != null && auxMeterRslt != null)[m
[32m+[m[32m                        {[m
[32m+[m[32m                            compoundMTR.VolumeRef = tstRslt.VolumeCTV;[m
[32m+[m[32m                            compoundMTR.VolumeMeter = mainMeterRslt.VolumeMeter + auxMeterRslt.VolumeMeter;[m
[32m+[m[32m                            compoundMTR.PulsesMaster = tstRslt.PulsesMaster;[m
[32m+[m[32m                            compoundMTR.TestTime = tstRslt.TestTime;[m
[32m+[m[32m                            compoundMTR.Error = Formulas.ErrorFromVolumes(compoundMTR.VolumeMeter, compoundMTR.VolumeRef);[m
[32m+[m[32m                            compoundMTR.Passed = (compoundMTR.Error >= test.GetErrLimLo(tstRslt.VolumeCTV, tstRslt.TestTime) + test.Uncertainty)[m
[32m+[m[32m                                                    && (compoundMTR.Error <= test.GetErrLimHi(tstRslt.VolumeCTV, tstRslt.TestTime) - test.Uncertainty)[m
                                                     && (tstRslt.ErrorFlags == 0);[m
[31m-                            mainMeterRslt.Passed     = auxMeterRslt.Passed = compoundMTR.Passed;[m
[31m-							mainMeterRslt.TestDone   = auxMeterRslt.TestDone = compoundMTR.TestDone = true;[m
[32m+[m[32m                            mainMeterRslt.Passed = auxMeterRslt.Passed = compoundMTR.Passed;[m
[32m+[m[32m                            mainMeterRslt.TestDone = auxMeterRslt.TestDone = compoundMTR.TestDone = true;[m
                             tstRslt.TestDone = true;[m
[31m-						}[m
[31m-					}[m
[31m-				}[m
[31m-				else if (heatMetersTestParams != null)[m
[31m-				{[m
[32m+[m[32m                        }[m
[32m+[m[32m                    }[m
[32m+[m[32m                }[m
[32m+[m[32m                else if (heatMetersTestParams != null)[m
[32m+[m[32m                {[m
                     ///[m
                     /// Heat meters[m
                     ///[m
                     tstRslt.RefEnergy = Energy.Sum * tstRslt.VolumeCTV / VolumeForEnergy.Sum;   /// [J] = [J] * [l] / [l][m
 [m
[31m-					tstRslt.Custom1  = (float)TempRefHiStat.Average;[m
[31m-					tstRslt.Custom2  = (float)TempRefHiStat.First;[m
[31m-					tstRslt.Custom3  = (float)TempRefHiStat.Last;[m
[31m-					tstRslt.Custom4  = (float)TempRefHiStat.Min;[m
[31m-					tstRslt.Custom5  = (float)TempRefHiStat.Max;[m
[31m-					tstRslt.Custom6  = (float)TempRefLoStat.Average;[m
[31m-					tstRslt.Custom7  = (float)TempRefLoStat.First;[m
[31m-					tstRslt.Custom8  = (float)TempRefLoStat.Last;[m
[31m-					tstRslt.Custom9  = (float)TempRefLoStat.Min;[m
[31m-					tstRslt.Custom10 = (float)TempRefLoStat.Max;																								[m
[32m+[m[32m                    tstRslt.Custom1 = (float)TempRefHiStat.Average;[m
[32m+[m[32m                    tstRslt.Custom2 = (float)TempRefHiStat.First;[m
[32m+[m[32m                    tstRslt.Custom3 = (float)TempRefHiStat.Last;[m
[32m+[m[32m                    tstRslt.Custom4 = (float)TempRefHiStat.Min;[m
[32m+[m[32m                    tstRslt.Custom5 = (float)TempRefHiStat.Max;[m
[32m+[m[32m                    tstRslt.Custom6 = (float)TempRefLoStat.Average;[m
[32m+[m[32m                    tstRslt.Custom7 = (float)TempRefLoStat.First;[m
[32m+[m[32m                    tstRslt.Custom8 = (float)TempRefLoStat.Last;[m
[32m+[m[32m                    tstRslt.Custom9 = (float)TempRefLoStat.Min;[m
[32m+[m[32m                    tstRslt.Custom10 = (float)TempRefLoStat.Max;[m
 [m
                     for (int i = 0; i < BatchRslts.WMPositionsCount; i++)[m
                     {[m
[36m@@ -868,10 +899,10 @@[m [mnamespace TBF.Rig.TestMethods.FlyingStartMassCollection[m
                             volumeRslt.TestTime = cBrd.TestTimeWM(i + 1);                                   /// [s][m
 [m
                             volumeRslt.Error = Formulas.ErrorFromVolumes(volumeRslt.VolumeMeter, volumeRslt.VolumeRef);[m
[31m-							volumeRslt.Passed = !heatMetersTestParams.EvaluateVolume ||[m
[31m-												((volumeRslt.Error >= test.GetErrLimLo(tstRslt.VolumeCTV, tstRslt.TestTime) + test.Uncertainty) &&[m
[31m-												 (volumeRslt.Error <= test.GetErrLimHi(tstRslt.VolumeCTV, tstRslt.TestTime) - test.Uncertainty) &&[m
[31m-        										 (tstRslt.ErrorFlags == 0));[m
[32m+[m[32m                            volumeRslt.Passed = !heatMetersTestParams.EvaluateVolume ||[m
[32m+[m[32m                                                ((volumeRslt.Error >= test.GetErrLimLo(tstRslt.VolumeCTV, tstRslt.TestTime) + test.Uncertainty) &&[m
[32m+[m[32m                                                 (volumeRslt.Error <= test.GetErrLimHi(tstRslt.VolumeCTV, tstRslt.TestTime) - test.Uncertainty) &&[m
[32m+[m[32m                                                 (tstRslt.ErrorFlags == 0));[m
                             volumeRslt.TestDone = true;[m
                             tstRslt.TestDone = true;[m
                         }[m
[36m@@ -883,103 +914,131 @@[m [mnamespace TBF.Rig.TestMethods.FlyingStartMassCollection[m
                             energyRslt.PulsesMaster = Convert.ToDouble(energyRegReader.WMRefPulses);[m
                             energyRslt.VolumeStart = 0;[m
                             energyRslt.VolumeEnd = 0;[m
[31m-							energyRslt.VolumeRef = tstRslt.RefEnergy * (energyRslt.PulsesMaster / tstRslt.PulsesMaster);	                            /// [J][m
[32m+[m[32m                            energyRslt.VolumeRef = tstRslt.RefEnergy * (energyRslt.PulsesMaster / tstRslt.PulsesMaster);	                            /// [J][m
 							energyRslt.VolumeMeter = energyRslt.PulsesMeter * Common.Units.ConvertFrom(Common.Unit.kWh, energyRegReader.LtrsPerPulse);	/// [J][m
                             energyRslt.TestTime = cBrd.TestTimeWM(i + 1);                                   /// [s][m
 [m
                             energyRslt.Error = Formulas.ErrorFromVolumes(energyRslt.VolumeMeter, energyRslt.VolumeRef);[m
[31m-							energyRslt.Passed = (energyRslt.Error >= heatMetersTestParams.ErrorLimitLo)[m
[31m-											 && (energyRslt.Error <= heatMetersTestParams.ErrorLimitHi)[m
[32m+[m[32m                            energyRslt.Passed = (energyRslt.Error >= heatMetersTestParams.ErrorLimitLo)[m
[32m+[m[32m                                             && (energyRslt.Error <= heatMetersTestParams.ErrorLimitHi)[m
                                              && (tstRslt.ErrorFlags == 0);[m
                             energyRslt.TestDone = true;[m
                             tstRslt.TestDone = true;[m
                         }[m
                     }[m
                 }[m
[31m-				else[m
[31m-				{[m
[31m-					///[m
[31m-					/// Single meters[m
[31m-					///[m
[31m-					for (int i = 0; i < BatchRslts.WMPositionsCount; i++)[m
[31m-					{[m
[31m-						if (!test.IsPartCompatible(Utils.PartNr(i + 1, BatchRslts.Batch.Compound))) continue;[m
[31m-[m
[31m-						/// MetersKind.Single meters[m
[31m-						Results.Entities.MeterTestRslt meterRslt = BatchRslts.GetMeterTestRslt(testName, i, Common.CompoundMeterId.Single);[m
[31m-						GenericDevices.IRegReader regReader = sensPath.RegisterReaders[i];[m
[32m+[m[32m                else[m
[32m+[m[32m                {[m
[32m+[m[32m                    ///[m
[32m+[m[32m                    /// Single meters[m
[32m+[m[32m                    ///[m
[32m+[m[32m                    for (int i = 0; i < BatchRslts.WMPositionsCount; i++)[m
[32m+[m[32m                    {[m
[32m+[m[32m                        if (!test.IsPartCompatible(Utils.PartNr(i + 1, BatchRslts.Batch.Compound))) continue;[m
[32m+[m
[32m+[m[32m                        /// MetersKind.Single meters[m
[32m+[m[32m                        Results.Entities.MeterTestRslt meterRslt = BatchRslts.GetMeterTestRslt(testName, i, Common.CompoundMeterId.Single);[m
[32m+[m[32m                        GenericDevices.IRegReader regReader = sensPath.RegisterReaders[i];[m
                         GenericDevices.IRegReaderDatastream dstrReader = regReader as GenericDevices.IRegReaderDatastream;[m
                         TestMethods.iPerlCommunication.iPerlHead.IperlHead iPerl = regReader as TestMethods.iPerlCommunication.iPerlHead.IperlHead;[m
                         GenericDevices.IRegReaderLiveCamera cameraRoi = regReader as GenericDevices.IRegReaderLiveCamera;[m
 [m
[31m-						if (meterRslt != null && regReader != null)[m
[31m-						{[m
[32m+[m[32m                        if (meterRslt != null && regReader != null)[m
[32m+[m[32m                        {[m
                             meterRslt.RegReaderType = (int)regReader.RegisterReaderType;[m
[31m-                            meterRslt.PulsesPerLiter = regReader.PulsesPerLtr;[m
[31m-							meterRslt.PulsesMeter = Convert.ToDouble(regReader.WMPulses);[m
[32m+[m[32m                            ComponentProcedure procParamsEntity = test.Procedure.GetProcedureParamsEntity(regReader.Name);[m
[32m+[m
[32m+[m[32m                            try[m
[32m+[m[32m                            {[m
[32m+[m[32m                                if (regReader.RegisterReaderType == RegisterReaderType.Pulses)[m
[32m+[m[32m                                {[m
[32m+[m[32m                                    XmlSerializer Serializer = XmlSerializer.FromTypes(new[] { typeof(RRProcParams) })[0];[m
[32m+[m[32m                                    RRProcParams tmp = Serializer.Deserialize(new StringReader(procParamsEntity.Parameters.ToString())) as RRProcParams;[m
[32m+[m[32m                                    regReader.PulsesPerLtr = tmp.PulsesPerLtr;[m
[32m+[m[32m                                    regReader.QuantityUnits = tmp.Units;[m
[32m+[m[32m                                }[m
[32m+[m[32m                                else[m
[32m+[m[32m                                {[m
[32m+[m[32m                                    //MessageBox.Show("Cannot create or initialize a printer", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);[m
[32m+[m[32m                                }[m
[32m+[m[32m                            }[m
[32m+[m[32m                            catch (Exception ex)[m
[32m+[m[32m                            {[m
[32m+[m[32m                                /*log.DebugFormat([m
[32m+[m[32m                                    "Error during Procedure parameters deserialization. CmpntName='{0}', Procedure='{1}', Parameters='{2}', Exception: {3}",[m
[32m+[m[32m                                    dbEntity?.CmpntName,[m
[32m+[m[32m                                    dbEntity?.Procedure,[m
[32m+[m[32m                                    dbEntity?.Parameters,[m
[32m+[m[32m                                    ex[m
[32m+[m[32m                                );*/[m
[32m+[m[32m                            }[m
[32m+[m
[32m+[m[32m                            meterRslt.PulsesPerLiter = regReader.PulsesPerLtr;//...MF 11.12.2025 toto chybalo, v .csv bol stlpec naplneny nulami[m
[32m+[m[32m                            meterRslt.QuantityUnits = regReader.QuantityUnits;[m
[32m+[m[32m                            meterRslt.PulsesMeter = Convert.ToDouble(regReader.WMPulses);[m
 [m
                             if (dstrReader != null)[m
[31m-							{[m
[31m-[m
[31m-								if (dstrReader is SmartReader poseidon) //is Poseidon reader family[m
[31m-								{[m
[31m-									log.Info("Poseidon reader detected - Results");[m
[31m-									meterRslt.TimestampStart = poseidon.TimestampSecStart;[m
[31m-									meterRslt.TimestampEnd = !poseidon.NoSamples[m
[31m-										? poseidon.TimestampSecEnd[m
[31m-										: (poseidon.TimestampSecStart + tstRslt.TestTime);[m
[31m-									meterRslt.TestTime = meterRslt.TimestampEnd - meterRslt.TimestampStart;[m
[31m-									meterRslt.VolumeStart = poseidon.VolumeLtrStart; /// liter[m
[32m+[m[32m                            {[m
[32m+[m
[32m+[m[32m                                if (dstrReader is SmartReader poseidon) //is Poseidon reader family[m
[32m+[m[32m                                {[m
[32m+[m[32m                                    log.Info("Poseidon reader detected - Results");[m
[32m+[m[32m                                    meterRslt.TimestampStart = poseidon.TimestampSecStart;[m
[32m+[m[32m                                    meterRslt.TimestampEnd = !poseidon.NoSamples[m
[32m+[m[32m                                        ? poseidon.TimestampSecEnd[m
[32m+[m[32m                                        : (poseidon.TimestampSecStart + tstRslt.TestTime);[m
[32m+[m[32m                                    meterRslt.TestTime = meterRslt.TimestampEnd - meterRslt.TimestampStart;[m
[32m+[m[32m                                    meterRslt.VolumeStart = poseidon.VolumeLtrStart; /// liter[m
 									meterRslt.VolumeEnd = poseidon.VolumeLtrStart + poseidon.WMVolume; //dstrReader.VolumeLtrEnd; /// liter[m
[31m-									meterRslt.VolumeMeter = poseidon.WMVolume;[m
[31m-[m
[31m-									if (!(meterRslt.TestTime == 0 || tstRslt.TestTime == 0))[m
[31m-									{[m
[31m-										meterRslt.VolumeRef = tstRslt.VolumeCTV * meterRslt.TestTime / tstRslt.TestTime;[m
[31m-										meterRslt.PulsesMaster =[m
[31m-											tstRslt.PulsesMaster * meterRslt.TestTime / tstRslt.TestTime;[m
[31m-									}[m
[31m-									else[m
[31m-									{[m
[31m-										meterRslt.VolumeRef = tstRslt.VolumeCTV;[m
[31m-										meterRslt.PulsesMaster = tstRslt.PulsesMaster;[m
[31m-									}[m
[31m-[m
[31m-									log.Info($"meterRslt.TimestampStart = {meterRslt.TimestampStart} \n" +[m
[31m-									         $"meterRslt.TimestampEnd = {meterRslt.TimestampEnd }\n" +[m
[31m-									         $"meterRslt.TestTime = {meterRslt.TestTime}\n" +[m
[31m-									         $"meterRslt.VolumeStart = {meterRslt.VolumeStart}\n" +[m
[31m-									         $"meterRslt.VolumeEnd = {meterRslt.VolumeEnd}\n" +[m
[31m-									         $"meterRslt.VolumeMeter = {meterRslt.VolumeMeter}\n" +[m
[31m-									         $"meterRslt.VolumeRef = {meterRslt.VolumeRef}\n" +[m
[31m-									         $"meterRslt.PulsesMaster = {meterRslt.PulsesMaster}\n");[m
[31m-									[m
[31m-									[m
[31m-								}[m
[31m-								else[m
[31m-								{[m
[31m-									meterRslt.TimestampStart = dstrReader.TimestampSecStart;[m
[31m-									meterRslt.TimestampEnd = !dstrReader.NoSamples[m
[31m-										? dstrReader.TimestampSecEnd[m
[31m-										: (dstrReader.TimestampSecStart + tstRslt.TestTime);[m
[31m-									meterRslt.TestTime = meterRslt.TimestampEnd - meterRslt.TimestampStart;[m
[31m-									meterRslt.VolumeStart = dstrReader.VolumeLtrStart; /// liter[m
[32m+[m[32m                                    meterRslt.VolumeMeter = poseidon.WMVolume;[m
[32m+[m
[32m+[m[32m                                    if (!(meterRslt.TestTime == 0 || tstRslt.TestTime == 0))[m
[32m+[m[32m                                    {[m
[32m+[m[32m                                        meterRslt.VolumeRef = tstRslt.VolumeCTV * meterRslt.TestTime / tstRslt.TestTime;[m
[32m+[m[32m                                        meterRslt.PulsesMaster =[m
[32m+[m[32m                                            tstRslt.PulsesMaster * meterRslt.TestTime / tstRslt.TestTime;[m
[32m+[m[32m                                    }[m
[32m+[m[32m                                    else[m
[32m+[m[32m                                    {[m
[32m+[m[32m                                        meterRslt.VolumeRef = tstRslt.VolumeCTV;[m
[32m+[m[32m                                        meterRslt.PulsesMaster = tstRslt.PulsesMaster;[m
[32m+[m[32m                                    }[m
[32m+[m
[32m+[m[32m                                    log.Info($"meterRslt.TimestampStart = {meterRslt.TimestampStart} \n" +[m
[32m+[m[32m                                             $"meterRslt.TimestampEnd = {meterRslt.TimestampEnd}\n" +[m
[32m+[m[32m                                             $"meterRslt.TestTime = {meterRslt.TestTime}\n" +[m
[32m+[m[32m                                             $"meterRslt.VolumeStart = {meterRslt.VolumeStart}\n" +[m
[32m+[m[32m                                             $"meterRslt.VolumeEnd = {meterRslt.VolumeEnd}\n" +[m
[32m+[m[32m                                             $"meterRslt.VolumeMeter = {meterRslt.VolumeMeter}\n" +[m
[32m+[m[32m                                             $"meterRslt.VolumeRef = {meterRslt.VolumeRef}\n" +[m
[32m+[m[32m                                             $"meterRslt.PulsesMaster = {meterRslt.PulsesMaster}\n");[m
[32m+[m
[32m+[m
[32m+[m[32m                                }[m
[32m+[m[32m                                else[m
[32m+[m[32m                                {[m
[32m+[m[32m                                    meterRslt.TimestampStart = dstrReader.TimestampSecStart;[m
[32m+[m[32m                                    meterRslt.TimestampEnd = !dstrReader.NoSamples[m
[32m+[m[32m                                        ? dstrReader.TimestampSecEnd[m
[32m+[m[32m                                        : (dstrReader.TimestampSecStart + tstRslt.TestTime);[m
[32m+[m[32m                                    meterRslt.TestTime = meterRslt.TimestampEnd - meterRslt.TimestampStart;[m
[32m+[m[32m                                    meterRslt.VolumeStart = dstrReader.VolumeLtrStart; /// liter[m
 									meterRslt.VolumeEnd = dstrReader.VolumeLtrEnd; /// liter[m
 									meterRslt.VolumeMeter =[m
[31m-										Math.Abs(dstrReader.VolumeLtrEnd - dstrReader.VolumeLtrStart);[m
[31m-									meterRslt.VolumeRef = tstRslt.VolumeCTV * meterRslt.TestTime / tstRslt.TestTime;[m
[31m-									meterRslt.PulsesMaster =[m
[31m-										tstRslt.PulsesMaster * meterRslt.TestTime / tstRslt.TestTime;[m
[31m-								}[m
[32m+[m[32m                                        Math.Abs(dstrReader.VolumeLtrEnd - dstrReader.VolumeLtrStart);[m
[32m+[m[32m                                    meterRslt.VolumeRef = tstRslt.VolumeCTV * meterRslt.TestTime / tstRslt.TestTime;[m
[32m+[m[32m                                    meterRslt.PulsesMaster =[m
[32m+[m[32m                                        tstRslt.PulsesMaster * meterRslt.TestTime / tstRslt.TestTime;[m
[32m+[m[32m                                }[m
 [m
[31m-								if (iPerl != null)[m
[32m+[m[32m                                if (iPerl != null)[m
                                 {[m
                                     if (iPerl.ResultCode != 0 && (meterRslt.WaterMeter.ResultCode & (int)Results.Entities.ResultCode.OptoErrorCodeMask) == 0)[m
                                     {[m
                                         meterRslt.WaterMeter.ResultCode |= iPerl.ResultCode;[m
                                     }[m
 #if IPERL[m
[31m-								    meterRslt.WaterMeter.CalibFactor = iPerl.CalibFactor;[m
[32m+[m[32m                                    meterRslt.WaterMeter.CalibFactor = iPerl.CalibFactor;[m
                                     meterRslt.ExtraDataPath = iPerl.ExtraDataPath;[m
                                     if (TestMethods.iPerlCommunication.iPerlHead.IperlHead.FeatureVectorSize >= 1) meterRslt.X1 = iPerl.X[0];[m
                                     if (TestMethods.iPerlCommunication.iPerlHead.IperlHead.FeatureVectorSize >= 2) meterRslt.X2 = iPerl.X[1];[m
[36m@@ -1005,18 +1064,18 @@[m [mnamespace TBF.Rig.TestMethods.FlyingStartMassCollection[m
                                                  meterRslt.VolumeMeter,[m
                                                  meterRslt.VolumeRef);[m
                             }[m
[31m-							else if (cameraRoi != null)[m
[31m-							{[m
[31m-								meterRslt.TimestampStart = cameraRoi.TimestampStart;					/// [s][m
[31m-								meterRslt.TimestampEnd   = cameraRoi.TimestampEnd;						/// [s][m
[31m-								meterRslt.VolumeStart    = cameraRoi.VolumeStart;						/// [l][m
[31m-								meterRslt.VolumeEnd      = cameraRoi.VolumeEnd;							/// [l][m
[31m-								meterRslt.VolumeMeter    = cameraRoi.VolumeEnd - cameraRoi.VolumeStart;	/// [l][m
[32m+[m[32m                            else if (cameraRoi != null)[m
[32m+[m[32m                            {[m
[32m+[m[32m                                meterRslt.TimestampStart = cameraRoi.TimestampStart;					/// [s][m
[32m+[m								[32mmeterRslt.TimestampEnd = cameraRoi.TimestampEnd;						/// [s][m
[32m+[m								[32mmeterRslt.VolumeStart = cameraRoi.VolumeStart;						/// [l][m
[32m+[m								[32mmeterRslt.VolumeEnd = cameraRoi.VolumeEnd;							/// [l][m
[32m+[m								[32mmeterRslt.VolumeMeter = cameraRoi.VolumeEnd - cameraRoi.VolumeStart;	/// [l][m
 [m
                                 if (meterRslt.VolumeMeter != 0)[m
                                 {[m
                                     /// Normal measurement with camera[m
[31m-                                    meterRslt.TestTime  = cameraRoi.TimestampEnd - cameraRoi.TimestampStart;	/// [s][m
[32m+[m[32m                                    meterRslt.TestTime = cameraRoi.TimestampEnd - cameraRoi.TimestampStart;	/// [s][m
                                     meterRslt.VolumeRef = tstRslt.VolumeCTV * meterRslt.TestTime / tstRslt.TestTime;[m
                                     meterRslt.PulsesMaster = tstRslt.PulsesMaster * meterRslt.TestTime / tstRslt.TestTime;[m
                                 }[m
[36m@@ -1038,11 +1097,11 @@[m [mnamespace TBF.Rig.TestMethods.FlyingStartMassCollection[m
                                                  meterRslt.VolumeMeter,[m
                                                  meterRslt.VolumeRef);[m
                             }[m
[31m-							else[m
[31m-							{[m
[32m+[m[32m                            else[m
[32m+[m[32m                            {[m
                                 meterRslt.PulsesMaster = Convert.ToDouble(regReader.WMRefPulses);[m
                                 meterRslt.VolumeStart = 0;[m
[31m-								meterRslt.VolumeEnd   = 0;[m
[32m+[m[32m                                meterRslt.VolumeEnd = 0;[m
                                 meterRslt.VolumeMeter = meterRslt.PulsesMeter * regReader.LtrsPerPulse;	/// [l][m
 [m
                                 if (regReader.WMPulses >= 1)[m
[36m@@ -1050,43 +1109,67 @@[m [mnamespace TBF.Rig.TestMethods.FlyingStartMassCollection[m
                                     /// Normal measurement[m
                                     meterRslt.TestTime = cBrd.TestTimeWM(regReader.Position);[m
                                     meterRslt.VolumeRef = meterRslt.PulsesMaster * tstRslt.ConstMaster;	/// [l][m
[32m+[m[32m                                    meterRslt.MassRef = meterRslt.PulsesMaster * tstRslt.MassConstMaster;   /// [kg][m
                                 }[m
                                 else[m
                                 {[m
                                     /// None or one pulse from the water meter[m
                                     meterRslt.TestTime = tstRslt.TestTime;[m
                                     meterRslt.VolumeRef = tstRslt.VolumeCTV;                            /// [l][m
[32m+[m[32m                                    meterRslt.MassRef = tstRslt.MassCTV;[m
                                 }[m
 [m
[31m-                                log.DebugFormat("Pulses: Pref4meter={0} Vmeter={1} Vref4meter={2} Ttime4meter={3} Ttime={4}",[m
[32m+[m[32m                                log.DebugFormat("Pulses: Pref4meter={0} Vmeter={1} Vref4meter={2} Mmeter={3} Mref4meter={4} Ttime4meter={5} Ttime={6}",[m
                                                  meterRslt.PulsesMaster,[m
                                                  meterRslt.VolumeMeter,[m
                                                  meterRslt.VolumeRef,[m
[32m+[m[32m                                                 meterRslt.MassMeter,[m
[32m+[m[32m                                                 meterRslt.MassRef,[m
                                                  meterRslt.TestTime,[m
                                                  tstRslt.TestTime);[m
                             }[m
 [m
[31m-                            meterRslt.Error = Formulas.ErrorFromVolumes(meterRslt.VolumeMeter, meterRslt.VolumeRef);[m
[31m-                            meterRslt.Passed = (meterRslt.Error >= test.GetErrLimLo(tstRslt.VolumeCTV, tstRslt.TestTime) + test.Uncertainty)[m
[31m-											&& (meterRslt.Error <= test.GetErrLimHi(tstRslt.VolumeCTV, tstRslt.TestTime) - test.Uncertainty)[m
[31m-                                            && (tstRslt.ErrorFlags == 0);[m
[32m+[m[32m                            double Error = 0;[m
[32m+[m[32m                            if (meterRslt.GetQuantityFromUnits() == "Mass")[m
[32m+[m[32m                                Error = Formulas.ErrorFromVolumes(meterRslt.MassMeter, meterRslt.MassRef);[m
[32m+[m[32m                            else[m
[32m+[m[32m                                Error = Formulas.ErrorFromVolumes(meterRslt.VolumeMeter, meterRslt.VolumeRef);[m
[32m+[m
[32m+[m[32m                            meterRslt.Error = Error;[m
[32m+[m
[32m+[m[32m                            var ErrLimLo_Volume = test.GetErrLimLo(tstRslt.VolumeCTV, tstRslt.TestTime);[m
[32m+[m[32m                            var ErrLimHi_Volume = test.GetErrLimHi(tstRslt.VolumeCTV, tstRslt.TestTime);[m
[32m+[m[32m                            var ErrLimLo_Mass = test.GetErrLimLo(tstRslt.MassCTV, tstRslt.TestTime);[m
[32m+[m[32m                            var ErrLimHi_Mass = test.GetErrLimHi(tstRslt.MassCTV, tstRslt.TestTime);[m
[32m+[m
[32m+[m[32m                            bool Passed;[m
[32m+[m[32m                            if (meterRslt.GetQuantityFromUnits() == "Mass")[m
[32m+[m[32m                                Passed = (meterRslt.Error >= ErrLimLo_Volume + test.Uncertainty) &&[m
[32m+[m[32m                                (meterRslt.Error <= ErrLimHi_Volume - test.Uncertainty) &&[m
[32m+[m[32m                                (tstRslt.ErrorFlags == 0);[m
[32m+[m[32m                            else[m
[32m+[m[32m                                Passed = (meterRslt.Error >= ErrLimLo_Mass + test.Uncertainty) &&[m
[32m+[m[32m                                (meterRslt.Error <= ErrLimHi_Mass - test.Uncertainty) &&[m
[32m+[m[32m                                (tstRslt.ErrorFlags == 0);[m
[32m+[m
[32m+[m[32m                            meterRslt.Passed = Passed;[m
                             meterRslt.TestDone = true;[m
                             tstRslt.TestDone = true;[m
 #if ORACLE_DB[m
                             meterRslt.ErrorBC = meterRslt.Error;[m
 #endif[m
                         }[m
[31m-					}[m
[31m-				}[m
[31m-[m
[31m-				tstRslt.Components = Results.Entities.Components.UpdateList(BatchRslts.ComponentsList,[m
[31m-								new Results.Entities.Components((BenchInfo != null) ? BenchInfo.TestBenchId : 1,[m
[31m-																(BenchInfo != null) ? BenchInfo.TestBenchName : "testbench",[m
[31m-																inPath.Pump != null ? inPath.Pump.Name : string.Empty,[m
[31m-																outPath.FlowMeter != null ? outPath.FlowMeter.Name : string.Empty,[m
[31m-																cBrd.Devices.Scale.Name,[m
[31m-																outPath.RegValve != null ? outPath.RegValve.Name : string.Empty,[m
[31m-																outPath.Diverter != null ? outPath.Diverter.Name : string.Empty));[m
[32m+[m[32m                    }[m
[32m+[m[32m                }[m
[32m+[m
[32m+[m[32m                tstRslt.Components = Results.Entities.Components.UpdateList(BatchRslts.ComponentsList,[m
[32m+[m[32m                                new Results.Entities.Components((BenchInfo != null) ? BenchInfo.TestBenchId : 1,[m
[32m+[m[32m                                                                (BenchInfo != null) ? BenchInfo.TestBenchName : "testbench",[m
[32m+[m[32m                                                                inPath.Pump != null ? inPath.Pump.Name : string.Empty,[m
[32m+[m[32m                                                                outPath.FlowMeter != null ? outPath.FlowMeter.Name : string.Empty,[m
[32m+[m[32m                                                                cBrd.Devices.Scale.Name,[m
[32m+[m[32m                                                                outPath.RegValve != null ? outPath.RegValve.Name : string.Empty,[m
[32m+[m[32m                                                                outPath.Diverter != null ? outPath.Diverter.Name : string.Empty));[m
 [m
                 /// Update water meter error flags[m
                 if (ErrorFlagsComp != null)[m
[36m@@ -1105,24 +1188,24 @@[m [mnamespace TBF.Rig.TestMethods.FlyingStartMassCollection[m
                     }[m
                 }[m
 [m
[31m-				/// Update results[m
[31m-				Bridge.OnTestCompleted(this, new TestCompletedEventArgs(testName, tstRslt));[m
[31m-			}[m
[32m+[m[32m                /// Update results[m
[32m+[m[32m                Bridge.OnTestCompleted(this, new TestCompletedEventArgs(testName, tstRslt));[m
[32m+[m[32m            }[m
 [m
[31m-			Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.TransitionAfter));[m
[32m+[m[32m            Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.TransitionAfter));[m
 [m
[31m-			/// Append the results to the CSV-file[m
[31m-			allResults.Info(TestResult2CsvLine(testName, test.Part));[m
[32m+[m[32m            /// Append the results to the CSV-file[m
[32m+[m[32m            allResults.Info(TestResult2CsvLine(testName, test.Part));[m
 [m
             if (stopCycle) retVal = Event.ErrorFlagsStop;[m
 [m
[31m-		stopTest:[m
[32m+[m[32m            stopTest:[m
 [m
[31m-			StopRecordingStatistics();		/// Make sure graph files are closed[m
[32m+[m[32m            StopRecordingStatistics();      /// Make sure graph files are closed[m
 [m
[31m-			///[m
[31m-			///  Quit this sequence[m
[31m-			///[m
[32m+[m[32m                                            ///[m
[32m+[m[32m                                            ///  Quit this sequence[m
[32m+[m[32m                                            ///[m
             if (isLastRepetition || retVal == Event.UiCmdStop[m
                                  || retVal == Event.OpArgumentError[m
                                  || retVal == Event.RecoverableError[m
[36m@@ -1133,18 +1216,18 @@[m [mnamespace TBF.Rig.TestMethods.FlyingStartMassCollection[m
                 cBrd.StopAll(false);[m
             }[m
 [m
[31m-			return new List<Event> { retVal };[m
[31m-		}[m
[32m+[m[32m            return new List<Event> { retVal };[m
[32m+[m[32m        }[m
 [m
 [m
[31m-		IList<Event> Simulate1(Config.Entities.Test test, int repetitionNr, bool isLastRepetition,[m
[31m-							   Compound.CombinedTestParams compoundTestParams,[m
[31m-							   HeatMeters.TestParams heatMetersTestParams)[m
[31m-		{[m
[31m-			///[m
[31m-			/// Test method simulation[m
[31m-			/// [m
[31m-			Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.FlowSetting));[m
[32m+[m[32m        IList<Event> Simulate1(Config.Entities.Test test, int repetitionNr, bool isLastRepetition,[m
[32m+[m[32m                               Compound.CombinedTestParams compoundTestParams,[m
[32m+[m[32m                               HeatMeters.TestParams heatMetersTestParams)[m
[32m+[m[32m        {[m
[32m+[m[32m            ///[m
[32m+[m[32m            /// Test method simulation[m
[32m+[m[32m            ///[m[41m [m
[32m+[m[32m            Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.FlowSetting));[m
 [m
             foreach (var rr in sensPath.RegisterReaders)[m
             {[m
[36m@@ -1157,12 +1240,12 @@[m [mnamespace TBF.Rig.TestMethods.FlyingStartMassCollection[m
             StateMachine.WaitRunDevsRunOps();[m
             StateMachine.WaitRunDevsRunOps();[m
 [m
[31m-            [m
[31m-			if (compoundTestParams != null)[m
[31m-			{[m
[32m+[m
[32m+[m[32m            if (compoundTestParams != null)[m
[32m+[m[32m            {[m
                 if (test.Name.ToLower().Contains("nok")) MakeSimulatedCompound(test, 1, test.Part, 4.7f, 0.9f);[m
                 else MakeSimulatedCompound(test, repetitionNr, test.Part, 0.7f, 1.0f);[m
[31m-			}[m
[32m+[m[32m            }[m
             else if (heatMetersTestParams != null)[m
             {[m
                 MakeSimulatedHeatMeters(test, repetitionNr, test.Part, 1.5f, 1000000, heatMetersTestParams.ErrorLimitLo, heatMetersTestParams.ErrorLimitHi, heatMetersTestParams.EvaluateVolume);[m
[36m@@ -1170,91 +1253,91 @@[m [mnamespace TBF.Rig.TestMethods.FlyingStartMassCollection[m
             else[m
             {[m
                 float errorPctBase = -1.0f;[m
[31m-				if (test.Name.ToLower().Contains("q3")) errorPctBase = -0.5f;[m
[32m+[m[32m                if (test.Name.ToLower().Contains("q3")) errorPctBase = -0.5f;[m
                 else if (test.Name.ToLower().Contains("q2")) errorPctBase = 0.5f;[m
                 else if (test.Name.ToLower().Contains("q1")) errorPctBase = -5.1f;[m
 [m
                 MakeSimulated(test, repetitionNr, test.Part, errorPctBase + repetitionNr * 0.1f);[m
             }[m
 [m
[31m-			Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.Completed));[m
[31m-			Bridge.OnTestCompleted(this, new TestCompletedEventArgs(test.Name, BatchRslts.GetTestRslt(Results.Utils.GetTestName(test.Name, 1, 1), 0)));[m
[31m-			allResults.Info(TestResult2CsvLine(test.Name, 0));	/// Append the results to the CSV-file[m
[32m+[m[32m            Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.Completed));[m
[32m+[m[32m            Bridge.OnTestCompleted(this, new TestCompletedEventArgs(test.Name, BatchRslts.GetTestRslt(Results.Utils.GetTestName(test.Name, 1, 1), 0)));[m
[32m+[m[32m            allResults.Info(TestResult2CsvLine(test.Name, 0));  /// Append the results to the CSV-file[m
 [m
[31m-			//-------------------------------------------------------------------[m
[31m-			Bridge.OnActivity(this, string.Format("{0} Simulation", test.Name));[m
[31m-			//-------------------------------------------------------------------[m
[32m+[m[32m            //-------------------------------------------------------------------[m
[32m+[m[32m            Bridge.OnActivity(this, string.Format("{0} Simulation", test.Name));[m
[32m+[m[32m            //-------------------------------------------------------------------[m
 [m
[31m-			State.Create(string.Format("{0}({1}) : Simulation", test.Method, test.Name))[m
[31m-					.AddOperation(checkUiOp)[m
[31m-					.EnterState();[m
[31m-			IList<Event> e = StateMachine.WaitRunDevsRunOps();[m
[32m+[m[32m            State.Create(string.Format("{0}({1}) : Simulation", test.Method, test.Name))[m
[32m+[m[32m                    .AddOperation(checkUiOp)[m
[32m+[m[32m                    .EnterState();[m
[32m+[m[32m            IList<Event> e = StateMachine.WaitRunDevsRunOps();[m
 [m
             return new List<Event> { TestAndLogUiCmdStop(test, e) ? Event.UiCmdStop : Event.Done };[m
[31m-		}[m
[32m+[m[32m        }[m
 [m
 [m
[31m-		IList<Event> Simulate2(Config.Entities.Test test, int repetitionNr, bool isLastRepetition,[m
[31m-							   Compound.CombinedTestParams compoundTestParams,[m
[31m-							   HeatMeters.TestParams heatMetersTestParams)[m
[31m-		{[m
[31m-			IList<Event> e;[m
[31m-			Event retVal = Event.Done;[m
[32m+[m[32m        IList<Event> Simulate2(Config.Entities.Test test, int repetitionNr, bool isLastRepetition,[m
[32m+[m[32m                               Compound.CombinedTestParams compoundTestParams,[m
[32m+[m[32m                               HeatMeters.TestParams heatMetersTestParams)[m
[32m+[m[32m        {[m
[32m+[m[32m            IList<Event> e;[m
[32m+[m[32m            Event retVal = Event.Done;[m
 [m
[31m-			///[m
[31m-			/// Test method with flow chart simulation[m
[31m-			/// [m
[31m-			Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.FlowSetting));[m
[32m+[m[32m            ///[m
[32m+[m[32m            /// Test method with flow chart simulation[m
[32m+[m[32m            ///[m[41m [m
[32m+[m[32m            Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.FlowSetting));[m
 [m
 [m
[31m-			/// Simulate flow[m
[32m+[m[32m            /// Simulate flow[m
             StartNewStatistics(null, BatchRslts.Batch.BatchNr, test, repetitionNr, 0);[m
 [m
[31m-			IntBox remainingTime = new IntBox((int)test.TestTime);[m
[31m-			State.Create(string.Format("{0}({1}) : Simulation", test.Method, test.Name))[m
[31m-				 .AddOperation(checkUiOp)[m
[31m-				 .AddOperation(new Operations.TimerOp((int)test.TestTime, remainingTime))[m
[31m-				 .EnterState();[m
[31m-			do[m
[31m-			{[m
[31m-				e = StateMachine.WaitRunDevsRunOps();[m
[31m-				if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; break; }[m
[31m-[m
[31m-				Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.Test));[m
[31m-[m
[31m-				if (remainingTime.Val > 60)[m
[31m-				{[m
[31m-					Bridge.OnActivity(this, string.Format("{0} ... {1} {2} {3} {4}", Strings.Test_in_progress, remainingTime.Val / 60, "min", remainingTime.Val % 60, Strings.sec));[m
[31m-				}[m
[31m-				else[m
[31m-				{[m
[31m-					Bridge.OnActivity(this, string.Format("{0} ... {1} s", Strings.Test_in_progress, remainingTime.Val));[m
[31m-				}[m
[31m-				//------------------------------------------------[m
[31m-[m
[31m-				RefFlow.Val = (1.0 + 0.2 * Math.Sin(2 * Math.PI * (float)remainingTime.Val / test.TestTime)) * (test.QfromM3ph() + test.QtoM3ph()) / 2.0;[m
[32m+[m[32m            IntBox remainingTime = new IntBox((int)test.TestTime);[m
[32m+[m[32m            State.Create(string.Format("{0}({1}) : Simulation", test.Method, test.Name))[m
[32m+[m[32m                 .AddOperation(checkUiOp)[m
[32m+[m[32m                 .AddOperation(new Operations.TimerOp((int)test.TestTime, remainingTime))[m
[32m+[m[32m                 .EnterState();[m
[32m+[m[32m            do[m
[32m+[m[32m            {[m
[32m+[m[32m                e = StateMachine.WaitRunDevsRunOps();[m
[32m+[m[32m                if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; break; }[m
[32m+[m
[32m+[m[32m                Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.Test));[m
[32m+[m
[32m+[m[32m                if (remainingTime.Val > 60)[m
[32m+[m[32m                {[m
[32m+[m[32m                    Bridge.OnActivity(this, string.Format("{0} ... {1} {2} {3} {4}", Strings.Test_in_progress, remainingTime.Val / 60, "min", remainingTime.Val % 60, Strings.sec));[m
[32m+[m[32m                }[m
[32m+[m[32m                else[m
[32m+[m[32m                {[m
[32m+[m[32m                    Bridge.OnActivity(this, string.Format("{0} ... {1} s", Strings.Test_in_progress, remainingTime.Val));[m
[32m+[m[32m                }[m
[32m+[m[32m                //------------------------------------------------[m
[32m+[m
[32m+[m[32m                RefFlow.Val = (1.0 + 0.2 * Math.Sin(2 * Math.PI * (float)remainingTime.Val / test.TestTime)) * (test.QfromM3ph() + test.QtoM3ph()) / 2.0;[m
                 PressUp.Val = 2.7f;[m
                 PressDown.Val = 2.2f;[m
 [m
[31m-				UpdateAllStatistics();[m
[31m-			}[m
[31m-			while (!e.Contains(Event.TimerExpired));[m
[32m+[m[32m                UpdateAllStatistics();[m
[32m+[m[32m            }[m
[32m+[m[32m            while (!e.Contains(Event.TimerExpired));[m
 [m
[31m-			StopRecordingStatistics();[m
[32m+[m[32m            StopRecordingStatistics();[m
 [m
[31m-			if (retVal != Event.UiCmdStop)[m
[31m-			{[m
[31m-				float errorPctBase = -1.0f;[m
[32m+[m[32m            if (retVal != Event.UiCmdStop)[m
[32m+[m[32m            {[m
[32m+[m[32m                float errorPctBase = -1.0f;[m
 [m
[31m-				if      (test.Name.ToLower().Contains("q3")) errorPctBase = -0.5f;[m
[31m-				else if (test.Name.ToLower().Contains("q2")) errorPctBase =  0.5f;[m
[31m-				else if (test.Name.ToLower().Contains("q1")) errorPctBase = -5.1f;[m
[32m+[m[32m                if (test.Name.ToLower().Contains("q3")) errorPctBase = -0.5f;[m
[32m+[m[32m                else if (test.Name.ToLower().Contains("q2")) errorPctBase = 0.5f;[m
[32m+[m[32m                else if (test.Name.ToLower().Contains("q1")) errorPctBase = -5.1f;[m
 [m
[31m-				MakeSimulated(test, repetitionNr, test.Part, errorPctBase + repetitionNr * 0.1f);[m
[32m+[m[32m                MakeSimulated(test, repetitionNr, test.Part, errorPctBase + repetitionNr * 0.1f);[m
 [m
[31m-				Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.Completed));[m
[31m-				Bridge.OnTestCompleted(this, new TestCompletedEventArgs(test.Name, BatchRslts.GetTestRslt(Results.Utils.GetTestName(test.Name, 1, 1), 0)));[m
[31m-				allResults.Info(TestResult2CsvLine(test.Name, 0));	/// Append the results to the CSV-file[m
[32m+[m[32m                Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.Completed));[m
[32m+[m[32m                Bridge.OnTestCompleted(this, new TestCompletedEventArgs(test.Name, BatchRslts.GetTestRslt(Results.Utils.GetTestName(test.Name, 1, 1), 0)));[m
[32m+[m[32m                allResults.Info(TestResult2CsvLine(test.Name, 0));	/// Append the results to the CSV-file[m
 			}[m
 [m
             return new List<Event> { retVal };      /// default 'retVal' value is Event.Done[m
[1mdiff --git a/TBF/Rig/TestMethods/StandingStartMassCollection/StandingStartMassCollectionSeq.cs b/TBF/Rig/TestMethods/StandingStartMassCollection/StandingStartMassCollectionSeq.cs[m
[1m--- a/TBF/Rig/TestMethods/StandingStartMassCollection/StandingStartMassCollectionSeq.cs[m
[1m+++ b/TBF/Rig/TestMethods/StandingStartMassCollection/StandingStartMassCollectionSeq.cs[m
[36m@@ -1,13 +1,14 @@[m
[31m-﻿///[m
[32m+[m[32m﻿using Common;[m
[32m+[m[32musing Config.Entities;[m
[32m+[m[32musing log4net;[m
[32m+[m[32m///[m
 /// Copyright (c) 2013-2021 Sensus Slovensko a.s.[m
 ///[m
 using System;[m
 using System.Collections.Generic;[m
 using System.IO;[m
 using System.Threading;[m
[31m-using log4net;[m
[31m-using Common;[m
[31m-using Config.Entities;[m
[32m+[m[32musing System.Xml.Serialization;[m
 using TBF.Boxes;[m
 using TBF.Resources;[m
 using TBF.Rig.GenericDevices;[m
[36m@@ -74,21 +75,21 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
             return true;[m
         }[m
 [m
[31m-		/// <summary>[m
[31m-		/// Fixed start mass collection method sequence[m
[31m-		/// </summary>[m
[31m-		/// <param name="test">Test entity</param>[m
[31m-		/// <returns>[m
[31m-		///		Event.Done . . . . . . . OK[m
[31m-		///		Event.MakeSecondPass . . OK, 2nd pass (=evaluation) required[m
[31m-		///		Event.UiCmdStop  . . . . Stopped by the user using the on-screen button STOP[m
[31m-		///		Event.OpArgumentError  . Target flow is out of range[m
[31m-		///		Event.Error  . . . . . . Unspecified error[m
[31m-		/// </returns>[m
[31m-		public IList<Event> Execute(Config.Entities.Test test, int repetitionNr, bool isLastRepetition,[m
[32m+[m[32m        /// <summary>[m
[32m+[m[32m        /// Fixed start mass collection method sequence[m
[32m+[m[32m        /// </summary>[m
[32m+[m[32m        /// <param name="test">Test entity</param>[m
[32m+[m[32m        /// <returns>[m
[32m+[m[32m        ///		Event.Done . . . . . . . OK[m
[32m+[m[32m        ///		Event.MakeSecondPass . . OK, 2nd pass (=evaluation) required[m
[32m+[m[32m        ///		Event.UiCmdStop  . . . . Stopped by the user using the on-screen button STOP[m
[32m+[m[32m        ///		Event.OpArgumentError  . Target flow is out of range[m
[32m+[m[32m        ///		Event.Error  . . . . . . Unspecified error[m
[32m+[m[32m        /// </returns>[m
[32m+[m[32m        public IList<Event> Execute(Config.Entities.Test test, int repetitionNr, bool isLastRepetition,[m
                                     bool compound,[m
[31m-									HeatMeters.TestParams heatMetersTestParams,[m
[31m-									Common.DebugMode debugLevel)[m
[32m+[m[32m                                    HeatMeters.TestParams heatMetersTestParams,[m
[32m+[m[32m                                    Common.DebugMode debugLevel)[m
         {[m
             ControlBoard.IControlBoard cBrd = StateMachine.ControlBoardMain;[m
             IScale scale = cBrd.Devices.Scale as IScale;[m
[36m@@ -101,7 +102,7 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
             }[m
 [m
             IList<Event> e;                                 /// Events from currently running operations[m
[31m-            int waterMetersCount = Math.Min(BenchInfo.WaterMetersCount, sensPath.RegisterReaders.Length);                                                            [m
[32m+[m[32m            int waterMetersCount = Math.Min(BenchInfo.WaterMetersCount, sensPath.RegisterReaders.Length);[m
             DateTimeBox timeStampStart = new DateTimeBox();[m
             DateTimeBox timeStampEnd = new DateTimeBox();[m
             FloatBox startSwitchTime = new FloatBox();[m
[36m@@ -154,7 +155,8 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                  .AddOperation(checkUiOp)[m
                  .AddOperations(readTempPressOps)[m
                  .EnterState();[m
[31m-            do {[m
[32m+[m[32m            do[m
[32m+[m[32m            {[m
                 e = StateMachine.WaitRunDevsRunOps();[m
                 if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }[m
                 if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }[m
[36m@@ -172,53 +174,54 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
             IOperation heatMetersPromptOp = null;[m
             if (heatMetersTestParams != null && !string.IsNullOrEmpty(heatMetersTestParams.Prompt))[m
             {[m
[31m-				/// Make sure the CycleBeginForm is closed[m
[31m-				if (UIFlowControl.Stop == WaitBeginFormClosed()) goto stopTest;[m
[32m+[m[32m                /// Make sure the CycleBeginForm is closed[m
[32m+[m[32m                if (UIFlowControl.Stop == WaitBeginFormClosed()) goto stopTest;[m
 [m
[31m-				heatMetersPromptOp = new Operations.MessageBoxOp(heatMetersTestParams.Prompt);[m
[32m+[m[32m                heatMetersPromptOp = new Operations.MessageBoxOp(heatMetersTestParams.Prompt);[m
             }[m
 [m
 [m
             if (test.DoDraining || (scale.Mass + test.Volume >= scale.Capacity * Constants.TankFullFactor))[m
[31m-			{[m
[32m+[m[32m            {[m
                 ///[m
                 /// There is not enough room in the tank OR unconditional draining ... drain the water tank[m
                 ///[m
                 IList<IOperation> ops = new List<IOperation>(readTempPressOps);[m
                 ops.Add(heatMetersPromptOp);[m
[31m-				switch (DrainTheTank(scale, ops))[m
[31m-				{[m
[31m-					case Event.Error:	  { retVal = Event.Error;	  goto stopTest; }[m
[31m-					case Event.UiCmdStop: { retVal = Event.UiCmdStop; goto stopTest; }[m
[31m-				}[m
[31m-			}[m
[31m-			///[m
[31m-			/// Make sure the drain valve is closed[m
[31m-			///[m
[31m-			State.Create(string.Format("{0}({1}) : Make sure the drain valve is closed", test.Method, test.Name))[m
[31m-				 .AddOperation(checkUiOp)[m
[32m+[m[32m                switch (DrainTheTank(scale, ops))[m
[32m+[m[32m                {[m
[32m+[m[32m                    case Event.Error: { retVal = Event.Error; goto stopTest; }[m
[32m+[m[32m                    case Event.UiCmdStop: { retVal = Event.UiCmdStop; goto stopTest; }[m
[32m+[m[32m                }[m
[32m+[m[32m            }[m
[32m+[m[32m            ///[m
[32m+[m[32m            /// Make sure the drain valve is closed[m
[32m+[m[32m            ///[m
[32m+[m[32m            State.Create(string.Format("{0}({1}) : Make sure the drain valve is closed", test.Method, test.Name))[m
[32m+[m[32m                 .AddOperation(checkUiOp)[m
                  .AddOperations(readTempPressOps)[m
[31m-				 .AddOperation(heatMetersPromptOp)[m
[31m-				 .AddOperation(cBrd.SetValvesOp(null, scale.DrainValve))[m
[31m-				 .EnterState();[m
[31m-			do {[m
[31m-				e = StateMachine.WaitRunDevsRunOps();[m
[31m-				Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.JustStarted));[m
[32m+[m[32m                 .AddOperation(heatMetersPromptOp)[m
[32m+[m[32m                 .AddOperation(cBrd.SetValvesOp(null, scale.DrainValve))[m
[32m+[m[32m                 .EnterState();[m
[32m+[m[32m            do[m
[32m+[m[32m            {[m
[32m+[m[32m                e = StateMachine.WaitRunDevsRunOps();[m
[32m+[m[32m                Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.JustStarted));[m
 [m
[31m-				if (e.Contains(Event.Error))	  { retVal = Event.Error;	  goto stopTest; }[m
[31m-				if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }[m
[31m-			}[m
[31m-			while (!e.Contains(Event.ValvesSet));[m
[32m+[m[32m                if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }[m
[32m+[m[32m                if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }[m
[32m+[m[32m            }[m
[32m+[m[32m            while (!e.Contains(Event.ValvesSet));[m
 [m
 [m
             //------------------------------------------------[m
             Bridge.OnActivity(this, Strings.Starting_the_pump);[m
             //------------------------------------------------[m
 [m
[31m-			Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.FlowSetting));[m
[31m-			int flowSetTime0 = StateMachine.Time;[m
[32m+[m[32m            Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.FlowSetting));[m
[32m+[m[32m            int flowSetTime0 = StateMachine.Time;[m
 [m
[31m-			if (inPath.Pump is GenericDevices.IPumpFM) (inPath.Pump as GenericDevices.IPumpFM).TurnOn(test.PumpPower);[m
[32m+[m[32m            if (inPath.Pump is GenericDevices.IPumpFM) (inPath.Pump as GenericDevices.IPumpFM).TurnOn(test.PumpPower);[m
             ///[m
             State.Create(string.Format("{0}({1}) : Starting the pump", test.Method, test.Name))[m
                  .AddOperation(checkUiOp)[m
[36m@@ -227,14 +230,15 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                  .AddOperation(heatMetersPromptOp)[m
                  .AddOperation(inPath.Pump != null ? cBrd.SetValvesOp(inPath.Pump, null) : null)[m
                  .EnterState();[m
[31m-            do {[m
[32m+[m[32m            do[m
[32m+[m[32m            {[m
                 e = StateMachine.WaitRunDevsRunOps();[m
                 Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.FlowSetting));[m
 [m
                 if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }[m
[31m-                if (e.Contains(Event.Error))      { retVal = Event.Error;     goto stopTest; }[m
[32m+[m[32m                if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }[m
             }[m
[31m-			while (e.Contains(Event.ValvesBusy) /* || !e.Contains(Event.AllPositionsReached)*/);[m
[32m+[m[32m            while (e.Contains(Event.ValvesBusy) /* || !e.Contains(Event.AllPositionsReached)*/);[m
 [m
 [m
             if (test.TimePump2StartV > 0)[m
[36m@@ -245,7 +249,8 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                      .AddOperation(new Operations.TimerOp(test.TimePump2StartV))[m
                      .AddOperation(heatMetersPromptOp)[m
                      .EnterState();[m
[31m-                do {[m
[32m+[m[32m                do[m
[32m+[m[32m                {[m
                     e = StateMachine.WaitRunDevsRunOps();[m
                     Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.FlowSetting));[m
 [m
[36m@@ -263,10 +268,11 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                      .AddOperation(cBrd.SetValvesOp(benchPath.StopBFValve, null))[m
                      .AddOperation(heatMetersPromptOp)[m
                      .EnterState();[m
[31m-                do {[m
[32m+[m[32m                do[m
[32m+[m[32m                {[m
                     e = StateMachine.WaitRunDevsRunOps();[m
                     if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }[m
[31m-                    if (e.Contains(Event.Error))      { retVal = Event.Error;     goto stopTest; }[m
[32m+[m[32m                    if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }[m
                 }[m
                 while (!e.Contains(Event.ValvesSet));[m
             }[m
[36m@@ -280,7 +286,8 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                      .AddOperation(new Operations.TimerOp(test.TimeBeforeFlow))[m
                      .AddOperation(heatMetersPromptOp)[m
                      .EnterState();[m
[31m-                do {[m
[32m+[m[32m                do[m
[32m+[m[32m                {[m
                     e = StateMachine.WaitRunDevsRunOps();[m
                     Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.FlowSetting));[m
 [m
[36m@@ -302,8 +309,9 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                  .AddOperations(readTempPressOps)[m
                  .AddOperation(cBrd.SetValvesOp(inPath.Pump, null))[m
                  .AddOperation(heatMetersPromptOp)[m
[31m-				 .EnterState();[m
[31m-            do {[m
[32m+[m[32m                 .EnterState();[m
[32m+[m[32m            do[m
[32m+[m[32m            {[m
                 e = StateMachine.WaitRunDevsRunOps();[m
                 Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.FlowSetting));[m
 [m
[36m@@ -317,7 +325,8 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                  .AddOperation(cBrd.OpenStartValveOp())[m
                  .AddOperation(heatMetersPromptOp)[m
                  .EnterState();[m
[31m-            do {[m
[32m+[m[32m            do[m
[32m+[m[32m            {[m
                 e = StateMachine.WaitRunDevsRunOps();[m
                 Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.FlowSetting));[m
 [m
[36m@@ -329,14 +338,15 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                  .AddOperation(checkUiOp)[m
                  .AddOperations(readTempPressOps)[m
                  .AddOperation(cBrd.SetFlowOp(test.QfromM3ph(), test.QtoM3ph(), RefFlow, FlowSettingTimeoutSec))[m
[31m-				 .AddOperation(heatMetersPromptOp)[m
[31m-				 .EnterState();[m
[31m-            do {[m
[32m+[m[32m                 .AddOperation(heatMetersPromptOp)[m
[32m+[m[32m                 .EnterState();[m
[32m+[m[32m            do[m
[32m+[m[32m            {[m
                 e = StateMachine.WaitRunDevsRunOps();[m
                 Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.FlowSetting));[m
 [m
                 if (e.Contains(Event.OpArgumentError)) { retVal = Event.OpArgumentError; goto stopTest; }[m
[31m-                if (TestAndLogUiCmdStop(test, e))      { retVal = Event.UiCmdStop;       goto stopTest; }[m
[32m+[m[32m                if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }[m
                 if (e.Contains(Event.RegulValveTimeOut))[m
                 {[m
                     Bridge.OnError(this, Strings.Flow_adjustment_failed);[m
[36m@@ -362,15 +372,16 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                 //---------------------------------------------------[m
 [m
                 int lastTimeSec = StateMachine.Time;[m
[31m-				double Tw_last = 0;[m
[31m-				double Tc_last = 0;[m
[32m+[m[32m                double Tw_last = 0;[m
[32m+[m[32m                double Tc_last = 0;[m
 [m
                 State.Create(string.Format("{0}({1}) : Checking if the temperature is stable", test.Method, test.Name))[m
                      .AddOperation(checkUiOp)[m
                      .AddOperations(readTempPressOps)[m
[31m-					 .AddOperation(heatMetersPromptOp)[m
[31m-					 .EnterState();[m
[31m-                do {[m
[32m+[m[32m                     .AddOperation(heatMetersPromptOp)[m
[32m+[m[32m                     .EnterState();[m
[32m+[m[32m                do[m
[32m+[m[32m                {[m
                     e = StateMachine.WaitRunDevsRunOps();[m
                     if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }[m
                     if (e.Contains(Event.Next))[m
[36m@@ -378,56 +389,57 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                         break;          /// Simulate temperature is within range[m
                     }[m
 [m
[31m-					if (TempRefHi1.Val != 0 && TempRefHi2.Val != 0 && TempRefLo1.Val != 0 && TempRefLo2.Val != 0)[m
[31m-					{[m
[31m-						if (StateMachine.Time - lastTimeSec > 10 || StateMachine.Time - lastTimeSec < 0)[m
[31m-						{[m
[31m-							double Tw = (TempRefHi1.Val + TempRefHi2.Val) / 2;[m
[31m-							double Tc = (TempRefLo1.Val + TempRefLo2.Val) / 2;[m
[31m-							if ((heatMetersTestParams.TempWarmLo <= Tw) && (Tw <= heatMetersTestParams.TempWarmHi) &&[m
[31m-								(heatMetersTestParams.TempColdLo <= Tc) && (Tc <= heatMetersTestParams.TempColdHi) &&[m
[31m-								(Math.Abs(Tw - Tw_last) <= heatMetersTestParams.ChangeInTimeWarm) &&[m
[31m-								(Math.Abs(Tc - Tc_last) <= heatMetersTestParams.ChangeInTimeCold) &&[m
[31m-								(Math.Abs(TempRefHi1.Val - TempRefHi2.Val) <= heatMetersTestParams.DeltaTempWarm) &&[m
[31m-								(Math.Abs(TempRefLo1.Val - TempRefLo2.Val) <= heatMetersTestParams.DeltaTempCold))[m
[31m-							{[m
[32m+[m[32m                    if (TempRefHi1.Val != 0 && TempRefHi2.Val != 0 && TempRefLo1.Val != 0 && TempRefLo2.Val != 0)[m
[32m+[m[32m                    {[m
[32m+[m[32m                        if (StateMachine.Time - lastTimeSec > 10 || StateMachine.Time - lastTimeSec < 0)[m
[32m+[m[32m                        {[m
[32m+[m[32m                            double Tw = (TempRefHi1.Val + TempRefHi2.Val) / 2;[m
[32m+[m[32m                            double Tc = (TempRefLo1.Val + TempRefLo2.Val) / 2;[m
[32m+[m[32m                            if ((heatMetersTestParams.TempWarmLo <= Tw) && (Tw <= heatMetersTestParams.TempWarmHi) &&[m
[32m+[m[32m                                (heatMetersTestParams.TempColdLo <= Tc) && (Tc <= heatMetersTestParams.TempColdHi) &&[m
[32m+[m[32m                                (Math.Abs(Tw - Tw_last) <= heatMetersTestParams.ChangeInTimeWarm) &&[m
[32m+[m[32m                                (Math.Abs(Tc - Tc_last) <= heatMetersTestParams.ChangeInTimeCold) &&[m
[32m+[m[32m                                (Math.Abs(TempRefHi1.Val - TempRefHi2.Val) <= heatMetersTestParams.DeltaTempWarm) &&[m
[32m+[m[32m                                (Math.Abs(TempRefLo1.Val - TempRefLo2.Val) <= heatMetersTestParams.DeltaTempCold))[m
[32m+[m[32m                            {[m
                                 break;          /// Temperature is withing required range[m
 							}[m
 [m
[31m-							lastTimeSec = StateMachine.Time;[m
[31m-							Tw_last = Tw;[m
[31m-							Tc_last = Tc;[m
[31m-						}[m
[31m-					}[m
[32m+[m[32m                            lastTimeSec = StateMachine.Time;[m
[32m+[m[32m                            Tw_last = Tw;[m
[32m+[m[32m                            Tc_last = Tc;[m
[32m+[m[32m                        }[m
[32m+[m[32m                    }[m
                 }[m
                 while (true);[m
             }[m
[31m-			else if (!string.IsNullOrEmpty(test.TempControl) && benchPath.TempMtrUp != null && benchPath.TempMtrDown != null)[m
[31m-			{[m
[31m-				//---------------------------------------------------[m
[31m-				Bridge.OnActivity(this, Strings.Setting_temperature);[m
[31m-				//---------------------------------------------------[m
[31m-[m
[31m-				State.Create(string.Format("{0}({1}) : Wait until the water temperature is within limits", test.Method, test.Name))[m
[31m-					 .AddOperation(checkUiOp)[m
[32m+[m[32m            else if (!string.IsNullOrEmpty(test.TempControl) && benchPath.TempMtrUp != null && benchPath.TempMtrDown != null)[m
[32m+[m[32m            {[m
[32m+[m[32m                //---------------------------------------------------[m
[32m+[m[32m                Bridge.OnActivity(this, Strings.Setting_temperature);[m
[32m+[m[32m                //---------------------------------------------------[m
[32m+[m
[32m+[m[32m                State.Create(string.Format("{0}({1}) : Wait until the water temperature is within limits", test.Method, test.Name))[m
[32m+[m[32m                     .AddOperation(checkUiOp)[m
                      .AddOperations(readTempPressOps)[m
[31m-					 .EnterState();[m
[31m-				do {[m
[31m-					e = StateMachine.WaitRunDevsRunOps();[m
[31m-					if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }[m
[32m+[m[32m                     .EnterState();[m
[32m+[m[32m                do[m
[32m+[m[32m                {[m
[32m+[m[32m                    e = StateMachine.WaitRunDevsRunOps();[m
[32m+[m[32m                    if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }[m
                     if (e.Contains(Event.Next))[m
                     {[m
                         break;          /// Simulate temperature is within range[m
                     }[m
 [m
[31m-					if (TempUp.Val >= test.TempLimLo && TempUp.Val <= test.TempLimHi &&[m
[31m-						TempDown.Val >= test.TempLimLo && TempDown.Val <= test.TempLimHi)[m
[31m-					{[m
[32m+[m[32m                    if (TempUp.Val >= test.TempLimLo && TempUp.Val <= test.TempLimHi &&[m
[32m+[m[32m                        TempDown.Val >= test.TempLimLo && TempDown.Val <= test.TempLimHi)[m
[32m+[m[32m                    {[m
                         break;          /// Temperature set withing required range[m
                     }[m
[31m-				}[m
[31m-				while (true);[m
[31m-			}[m
[32m+[m[32m                }[m
[32m+[m[32m                while (true);[m
[32m+[m[32m            }[m
 [m
             ///[m
             /// Temperature is withing required range at this point[m
[36m@@ -435,7 +447,7 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
 [m
             //-----------------------------------------------------------------[m
             Bridge.OnActivity(this, Strings.Stopping_flow_for_the_fixed_start);[m
[31m-			//-----------------------------------------------------------------[m
[32m+[m[32m            //-----------------------------------------------------------------[m
             State.Create(string.Format("{0}({1}) : Stop flow regulation", test.Method, test.Name))[m
                  .AddOperation(checkUiOp)[m
                  .AddOperations(readTempPressOps)[m
[36m@@ -451,10 +463,11 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                  .AddOperation(checkUiOp)[m
                  .AddOperations(readTempPressOps)[m
                  .AddOperation(cBrd.CloseStartValveOp())[m
[31m-				 .EnterState();[m
[31m-            do {[m
[32m+[m[32m                 .EnterState();[m
[32m+[m[32m            do[m
[32m+[m[32m            {[m
                 e = StateMachine.WaitRunDevsRunOps();[m
[31m-                if (e.Contains(Event.Error))      { retVal = Event.Error;     goto stopTest; }[m
[32m+[m[32m                if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }[m
                 if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }[m
             }[m
             while (!e.Contains(Event.ValvesSet));[m
[36m@@ -483,10 +496,10 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
             if (heatMetersPath == null) LogProcessDataHeader(processDataLogger, "Start mass");[m
             else LogProcessDataHeaderHeatMeters(processDataLogger, "Start mass");[m
 [m
[31m-			///[m
[31m-			/// Enter water meter begin states and read the start mass at the same time[m
[31m-			///[m
[31m-			GenericDevices.IHasWMStatesForm dataEntryCmpnt = TbfComponents.FindComponent(StateMachine.Procedure.DataEntry) as GenericDevices.IHasWMStatesForm;[m
[32m+[m[32m            ///[m
[32m+[m[32m            /// Enter water meter begin states and read the start mass at the same time[m
[32m+[m[32m            ///[m
[32m+[m[32m            GenericDevices.IHasWMStatesForm dataEntryCmpnt = TbfComponents.FindComponent(StateMachine.Procedure.DataEntry) as GenericDevices.IHasWMStatesForm;[m
             IOperation readStartMassOp = scale.ReadStableMassOp(ref StartMass, test.TimeFlow2Mass, test.MassMethod, test.MassRepeats, test.MassSpread);[m
 [m
             if (dataEntryCmpnt != null)[m
[36m@@ -515,7 +528,7 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                             triggerValve = roi.GetValve();[m
                             if (triggerValve != null && !triggerSend)[m
                             {[m
[31m-                                OpenValveGrabImage(cBrd,testInProgress, triggerValve, e,[m
[32m+[m[32m                                OpenValveGrabImage(cBrd, testInProgress, triggerValve, e,[m
                                     string.Format("{0}({1}) : Grabbing images - valve open", test.Method, test.Name));[m
                                 triggerSend = true;[m
                             }[m
[36m@@ -533,27 +546,28 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                         }[m
                     }[m
                     state2.EnterState();[m
[31m-                    do {[m
[32m+[m[32m                    do[m
[32m+[m[32m                    {[m
                         e = StateMachine.WaitRunDevsRunOps();[m
 [m
                         Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.Test));[m
 [m
[31m-                        if (e.Contains(Event.Error))      { retVal = Event.Error;     break; }[m
[32m+[m[32m                        if (e.Contains(Event.Error)) { retVal = Event.Error; break; }[m
                         if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; break; }[m
                     }[m
                     while (e.Contains(Event.CameraBusy));[m
 [m
                     (dataEntryCmpnt as GenericDevices.IDataEntryForCamera).StartImages = startImages;[m
                 }[m
[31m-                [m
[32m+[m
                 ///valve trigger camera close[m
                 if (triggerValve != null)[m
                 {[m
[31m-                    CloseValveGrabImage(cBrd,testInProgress,triggerValve, e,[m
[32m+[m[32m                    CloseValveGrabImage(cBrd, testInProgress, triggerValve, e,[m
                         string.Format("{0}({1}) : Grabbing images - valve close", test.Method, test.Name));[m
                 }[m
                 ///////[m
[31m-                [m
[32m+[m
 [m
                 Bridge.OnActivity(this, Strings.Enter_water_meter_data);[m
                 long readStartTime = StateMachine.Time;[m
[36m@@ -564,13 +578,14 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                      .AddOperation((dataEntryCmpnt as GenericDevices.IHasWMStatesForm).ShowTestStartFormOp(sensPath.RegisterReaders))[m
                      .AddOperation(processDataLoggingOp)[m
                      .EnterState();[m
[31m-                do {[m
[32m+[m[32m                do[m
[32m+[m[32m                {[m
                     e = StateMachine.WaitRunDevsRunOps();[m
                     if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }[m
                 }[m
                 while (!e.Contains(Event.ModelessFormClosed));[m
                 long readEndTime = StateMachine.Time;[m
[31m-                [m
[32m+[m
                 log.Debug("Read poseidon - took:" + (readEndTime - readStartTime));[m
 [m
                 if (heatMetersTestParams != null)[m
[36m@@ -612,7 +627,7 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                         {[m
                             (rr as Rig.Network.Camera.RoiForFixedStartKeyence.Roi).BeginWMState =[m
                                 dataEntryCmpnt.WMStartState(i);[m
[31m-                            log.DebugFormat(" StandingStartMassCollectionSeq.cs - BeginWMState [{0}] -> RoiForFixedStartKeyence.Roi",dataEntryCmpnt.WMStartState(i));[m
[32m+[m[32m                            log.DebugFormat(" StandingStartMassCollectionSeq.cs - BeginWMState [{0}] -> RoiForFixedStartKeyence.Roi", dataEntryCmpnt.WMStartState(i));[m
                         }[m
                         if (rr is Rig.Network.Camera.RoiForFixedStartCJMS11.Roi)[m
                             (rr as Rig.Network.Camera.RoiForFixedStartCJMS11.Roi).BeginWMState = dataEntryCmpnt.WMStartState(i);[m
[36m@@ -638,7 +653,7 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                                     string destFName = string.IsNullOrEmpty((dataEntryCmpnt as IDataEntryForCamera).TestStartImgName(i, testName))[m
                                         ? fileName : (dataEntryCmpnt as IDataEntryForCamera).TestStartImgName(i, testName);[m
                                     File.Copy(Path.Combine(srcDir, fileName), Path.Combine(destDir, destFName), true);[m
[31m-                                    log.DebugFormat("Save images sourceFile: {0}, destFile: {1} ",Path.Combine(srcDir, fileName), Path.Combine(destDir, destFName));[m
[32m+[m[32m                                    log.DebugFormat("Save images sourceFile: {0}, destFile: {1} ", Path.Combine(srcDir, fileName), Path.Combine(destDir, destFName));[m
                                 }[m
                             }[m
                             catch (Exception exc)[m
[36m@@ -681,7 +696,8 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                      .AddOperation(scale.ReadStableMassOp(ref StartMass, test.TimeFlow2Mass, test.MassMethod, test.MassRepeats, test.MassSpread))[m
                      .AddOperation(processDataLoggingOp)[m
                      .EnterState();[m
[31m-                do {[m
[32m+[m[32m                do[m
[32m+[m[32m                {[m
                     e = StateMachine.WaitRunDevsRunOps();[m
                     if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }[m
                     if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }[m
[36m@@ -724,11 +740,12 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                  .AddOperation(controlFlowOp)[m
                  .AddOperation(processDataLoggingOp)[m
                  .EnterState();[m
[31m-            do {[m
[32m+[m[32m            do[m
[32m+[m[32m            {[m
                 e = StateMachine.WaitRunDevsRunOps();[m
                 if (e.Contains(Event.OpArgumentError)) { retVal = Event.OpArgumentError; goto stopTest; }[m
[31m-                if (e.Contains(Event.Error))           { retVal = Event.Error;           goto stopTest; }[m
[31m-                if (TestAndLogUiCmdStop(test, e))      { retVal = Event.UiCmdStop;       goto stopTest; }[m
[32m+[m[32m                if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }[m
[32m+[m[32m                if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }[m
 [m
                 /// Show remaining time[m
                 if ((remainingTime = Math.Max(estimtdEndTime - StateMachine.Time, 0)) > 60)[m
[36m@@ -767,8 +784,8 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
 [m
                 Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.Test));[m
             }[m
[31m-            while ((cBrd.DebugLevel==DebugMode.Simulate && !e.Contains(Event.FlowReached)) || [m
[31m-                   (cBrd.DebugLevel!=DebugMode.Simulate && cBrd.RefPulses < initialPulsesCount + totalPulses && !e.Contains(Event.TestCompleted) && !e.Contains(Event.Next)));[m
[32m+[m[32m            while ((cBrd.DebugLevel == DebugMode.Simulate && !e.Contains(Event.FlowReached)) ||[m
[32m+[m[32m                   (cBrd.DebugLevel != DebugMode.Simulate && cBrd.RefPulses < initialPulsesCount + totalPulses && !e.Contains(Event.TestCompleted) && !e.Contains(Event.Next)));[m
 [m
             /// Measurement loop end[m
             log.WarnFormat("Start valve switch time on test start = {0} ms", cBrd.ValveOpenCloseTime);[m
[36m@@ -783,7 +800,8 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                  .AddOperation(cBrd.CloseStartValveOp(timeStampEnd, stopSwitchTime))[m
                  .AddOperation(processDataLoggingOp)[m
                  .EnterState();[m
[31m-            do {[m
[32m+[m[32m            do[m
[32m+[m[32m            {[m
                 e = StateMachine.WaitRunDevsRunOps();[m
                 if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }[m
             }[m
[36m@@ -807,9 +825,10 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                  .AddOperation(new Operations.TimerOp(StableMassMsrmntTimeoutSec))[m
                  .AddOperation(processDataLoggingOp)[m
                  .EnterState();[m
[31m-            do {[m
[32m+[m[32m            do[m
[32m+[m[32m            {[m
                 e = StateMachine.WaitRunDevsRunOps();[m
[31m-                if (e.Contains(Event.Error))      { retVal = Event.Error;     goto stopTest; }[m
[32m+[m[32m                if (e.Contains(Event.Error)) { retVal = Event.Error; goto stopTest; }[m
                 if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }[m
                 if (e.Contains(Event.ScaleTimeout))[m
                 {[m
[36m@@ -844,7 +863,7 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
             double buoyancy = Formulas.Buoyancy();[m
             double massOfEvaporatedWater = (double)(tMass2 - tMass1) * outPath.Scale.EvaporationRate(TempDivStat.Average);[m
             double volumeCTV = 1000.0 * buoyancy * (massEnd - massStart + massOfEvaporatedWater) / densityOut;[m
[31m-			if (debugLevel == Common.DebugMode.Simulate) volumeCTV = test.Volume;[m
[32m+[m[32m            if (debugLevel == Common.DebugMode.Simulate) volumeCTV = test.Volume;[m
 [m
             double refEnergy = Energy.Sum * volumeCTV / VolumeForEnergy.Sum;					/// [J]=[J]*[l]/[l][m
 [m
[36m@@ -853,33 +872,33 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
             ///[m
             if (dataEntryCmpnt != null)[m
             {[m
[31m-				string fileName = string.Format("{0}-{1}-end.bmp", test.Name, repetitionNr); //string.Format("{0}-end.bmp", test.Name);[m
[31m-                [m
[32m+[m[32m                string fileName = string.Format("{0}-{1}-end.bmp", test.Name, repetitionNr); //string.Format("{0}-end.bmp", test.Name);[m
[32m+[m
                 IValve triggerValve = null;[m
                 bool triggerSend = false;[m
[31m-				if (dataEntryCmpnt is GenericDevices.IDataEntryForCamera)[m
[31m-				{[m
[31m-					string[] endImages = new string[sensPath.RegisterReaders.Length];[m
[31m-[m
[31m-					State state2 = State.Create(string.Format("{0}({1}) : Grabbing images", test.Method, test.Name))[m
[31m-									   .AddOperation(checkUiOp);[m
[31m-					for (int i = 0; i < sensPath.RegisterReaders.Length; i++)[m
[31m-					{[m
[31m-						GenericDevices.IRegReaderStillCamera roi = sensPath.RegisterReaders[i] as GenericDevices.IRegReaderStillCamera;[m
[31m-						if (roi != null)[m
[31m-						{[m
[32m+[m[32m                if (dataEntryCmpnt is GenericDevices.IDataEntryForCamera)[m
[32m+[m[32m                {[m
[32m+[m[32m                    string[] endImages = new string[sensPath.RegisterReaders.Length];[m
[32m+[m
[32m+[m[32m                    State state2 = State.Create(string.Format("{0}({1}) : Grabbing images", test.Method, test.Name))[m
[32m+[m[32m                                       .AddOperation(checkUiOp);[m
[32m+[m[32m                    for (int i = 0; i < sensPath.RegisterReaders.Length; i++)[m
[32m+[m[32m                    {[m
[32m+[m[32m                        GenericDevices.IRegReaderStillCamera roi = sensPath.RegisterReaders[i] as GenericDevices.IRegReaderStillCamera;[m
[32m+[m[32m                        if (roi != null)[m
[32m+[m[32m                        {[m
                             ///if exist valve trigger camera open[m
                             triggerValve = roi.GetValve();[m
                             if (triggerValve != null && !triggerSend)[m
                             {[m
[31m-                                OpenValveGrabImage(cBrd,testInProgress,triggerValve, e,[m
[32m+[m[32m                                OpenValveGrabImage(cBrd, testInProgress, triggerValve, e,[m
                                     string.Format("{0}({1}) : Grabbing images - valve open", test.Method, test.Name));[m
                                 triggerSend = true;[m
                             }[m
[31m-							string directory = Path.Combine(Program.TempImagesDir, BatchRslts.Batch.BatchNr.ToString(), (i + 1).ToString());[m
[31m-							Directory.CreateDirectory(directory);[m
[31m-							endImages[i] = Path.Combine(directory, fileName);[m
[31m-							state2.AddOperation(roi.GrabImageOp(endImages[i]));[m
[32m+[m[32m                            string directory = Path.Combine(Program.TempImagesDir, BatchRslts.Batch.BatchNr.ToString(), (i + 1).ToString());[m
[32m+[m[32m                            Directory.CreateDirectory(directory);[m
[32m+[m[32m                            endImages[i] = Path.Combine(directory, fileName);[m
[32m+[m[32m                            state2.AddOperation(roi.GrabImageOp(endImages[i]));[m
                             state2.AddOperation(testInProgress);[m
                         }[m
                         else[m
[36m@@ -890,47 +909,49 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                             endImages[i] = Path.Combine(directory, fileName);[m
                         }[m
                     }[m
[31m-					state2.EnterState();[m
[31m-					do {[m
[31m-						e = StateMachine.WaitRunDevsRunOps();[m
[32m+[m[32m                    state2.EnterState();[m
[32m+[m[32m                    do[m
[32m+[m[32m                    {[m
[32m+[m[32m                        e = StateMachine.WaitRunDevsRunOps();[m
[32m+[m
[32m+[m[32m                        Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.Test));[m
 [m
[31m-						Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Progress.Test));[m
[32m+[m[32m                        if (e.Contains(Event.Error)) { retVal = Event.Error; break; }[m
[32m+[m[32m                        if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; break; }[m
[32m+[m[32m                    }[m
[32m+[m[32m                    while (e.Contains(Event.CameraBusy));[m
 [m
[31m-						if (e.Contains(Event.Error)) { retVal = Event.Error; break; }[m
[31m-						if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; break; }[m
[31m-					}[m
[31m-					while (e.Contains(Event.CameraBusy));[m
[32m+[m[32m                    (dataEntryCmpnt as GenericDevices.IDataEntryForCamera).EndImages = endImages;[m
[32m+[m[32m                }[m
 [m
[31m-					(dataEntryCmpnt as GenericDevices.IDataEntryForCamera).EndImages = endImages;[m
[31m-				}[m
[31m-                [m
                 ///valve trigger camera close[m
                 if (triggerValve != null)[m
                 {[m
[31m-                    CloseValveGrabImage(cBrd,testInProgress, triggerValve, e,[m
[32m+[m[32m                    CloseValveGrabImage(cBrd, testInProgress, triggerValve, e,[m
                         string.Format("{0}({1}) : Grabbing images - valve close", test.Method, test.Name));[m
                 }[m
                 ///////[m
[31m-                [m
[31m-				Bridge.OnActivity(this, Strings.Enter_water_meter_data);[m
[32m+[m
[32m+[m[32m                Bridge.OnActivity(this, Strings.Enter_water_meter_data);[m
                 State state = State.Create(string.Format("{0}({1}) : Entering the end-state", test.Method, test.Name));[m
                 if (heatMetersTestParams != null && dataEntryCmpnt is GenericDevices.IHasHeatMtrStatesForm)[m
                 {[m
                     state.AddOperation((dataEntryCmpnt as GenericDevices.IHasHeatMtrStatesForm).[m
[31m-						ShowTestEndFormOp(sensPath.RegisterReaders,[m
[31m-										  volumeCTV, test.ErrLimLo + test.Uncertainty, test.ErrLimHi - test.Uncertainty,[m
[32m+[m[32m                        ShowTestEndFormOp(sensPath.RegisterReaders,[m
[32m+[m[32m                                          volumeCTV, test.ErrLimLo + test.Uncertainty, test.ErrLimHi - test.Uncertainty,[m
                                           refEnergy, test.ErrLimLo + test.Uncertainty, test.ErrLimHi - test.Uncertainty));[m
                 }[m
                 else[m
                 {[m
[31m-					state.AddOperation(dataEntryCmpnt.ShowTestEndFormOp(sensPath.RegisterReaders,[m
[31m-																	    volumeCTV, test.ErrLimLo + test.Uncertainty, test.ErrLimHi - test.Uncertainty));[m
[32m+[m[32m                    state.AddOperation(dataEntryCmpnt.ShowTestEndFormOp(sensPath.RegisterReaders,[m
[32m+[m[32m                                                                        volumeCTV, test.ErrLimLo + test.Uncertainty, test.ErrLimHi - test.Uncertainty));[m
                 }[m
                 state.AddOperation(checkUiOp)[m
                      .AddOperations(readTempPressOps)[m
                      .AddOperation(testInProgress)[m
                      .EnterState();[m
[31m-                do {[m
[32m+[m[32m                do[m
[32m+[m[32m                {[m
                     e = StateMachine.WaitRunDevsRunOps();[m
                     if (TestAndLogUiCmdStop(test, e)) { retVal = Event.UiCmdStop; goto stopTest; }[m
                 }[m
[36m@@ -958,41 +979,41 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                 {[m
                     for (int i = 0; i < waterMetersCount; i++)[m
                     {[m
[31m-						GenericDevices.IRegReader rr = sensPath.RegisterReaders[i];[m
[31m-                        [m
[32m+[m[32m                        GenericDevices.IRegReader rr = sensPath.RegisterReaders[i];[m
[32m+[m
                         if (rr is ICommonRegReader)[m
                             (rr as ICommonRegReader).EndWMState = dataEntryCmpnt.WMEndState(i);[m
 [m
 [m
[31m-						if (rr is Rig.RegisterReaders.StandingStartStop.RegisterReader)[m
[31m-							(rr as Rig.RegisterReaders.StandingStartStop.RegisterReader).EndWMState = dataEntryCmpnt.WMEndState(i);[m
[32m+[m[32m                        if (rr is Rig.RegisterReaders.StandingStartStop.RegisterReader)[m
[32m+[m[32m                            (rr as Rig.RegisterReaders.StandingStartStop.RegisterReader).EndWMState = dataEntryCmpnt.WMEndState(i);[m
 [m
[31m-						if (rr is Rig.Network.Camera.RoiForFixedStart.Roi)[m
[31m-							(rr as Rig.Network.Camera.RoiForFixedStart.Roi).EndWMState = dataEntryCmpnt.WMEndState(i);[m
[32m+[m[32m                        if (rr is Rig.Network.Camera.RoiForFixedStart.Roi)[m
[32m+[m[32m                            (rr as Rig.Network.Camera.RoiForFixedStart.Roi).EndWMState = dataEntryCmpnt.WMEndState(i);[m
 [m
                         if (rr is Rig.Network.Camera.RoiForFixedStartKeyence.Roi)[m
                         {[m
                             (rr as Rig.Network.Camera.RoiForFixedStartKeyence.Roi).EndWMState =[m
                                 dataEntryCmpnt.WMEndState(i);[m
[31m-                            log.DebugFormat(" StandingStartMassCollectionSeq.cs - EndWMState [{0}] -> RoiForFixedStartKeyence.Roi",dataEntryCmpnt.WMEndState(i));[m
[32m+[m[32m                            log.DebugFormat(" StandingStartMassCollectionSeq.cs - EndWMState [{0}] -> RoiForFixedStartKeyence.Roi", dataEntryCmpnt.WMEndState(i));[m
                         }[m
[31m-                        if(rr is Rig.Network.Camera.RoiForFixedStartCJMS11.Roi)[m
[32m+[m[32m                        if (rr is Rig.Network.Camera.RoiForFixedStartCJMS11.Roi)[m
                             (rr as Rig.Network.Camera.RoiForFixedStartCJMS11.Roi).EndWMState = dataEntryCmpnt.WMEndState(i);[m
 [m
                     }[m
                 }[m
 [m
[31m-				if (dataEntryCmpnt is IDataEntryForCamera && (dataEntryCmpnt as IDataEntryForCamera).SaveImages)[m
[31m-				{[m
[32m+[m[32m                if (dataEntryCmpnt is IDataEntryForCamera && (dataEntryCmpnt as IDataEntryForCamera).SaveImages)[m
[32m+[m[32m                {[m
                     log.Debug("Save images  EndWMState...");[m
[31m-					/// SaveImages==true ... copy images to the directory that will be archived at the end of the cycle[m
[31m-					for (int i = 0; i < sensPath.RegisterReaders.Length; i++)[m
[31m-					{[m
[31m-						var roi = sensPath.RegisterReaders[i] as IRegReaderStillCamera;[m
[31m-						if (roi != null)[m
[31m-						{[m
[31m-							string srcDir = Path.Combine(Program.TempImagesDir, BatchRslts.Batch.BatchNr.ToString(), (i + 1).ToString());[m
[31m-							string destDir = Path.Combine(Program.ImagesDir, BatchRslts.Batch.BatchNr.ToString(), (i + 1).ToString());[m
[32m+[m[32m                    /// SaveImages==true ... copy images to the directory that will be archived at the end of the cycle[m
[32m+[m[32m                    for (int i = 0; i < sensPath.RegisterReaders.Length; i++)[m
[32m+[m[32m                    {[m
[32m+[m[32m                        var roi = sensPath.RegisterReaders[i] as IRegReaderStillCamera;[m
[32m+[m[32m                        if (roi != null)[m
[32m+[m[32m                        {[m
[32m+[m[32m                            string srcDir = Path.Combine(Program.TempImagesDir, BatchRslts.Batch.BatchNr.ToString(), (i + 1).ToString());[m
[32m+[m[32m                            string destDir = Path.Combine(Program.ImagesDir, BatchRslts.Batch.BatchNr.ToString(), (i + 1).ToString());[m
                             try[m
                             {[m
                                 if (File.Exists(Path.Combine(srcDir, fileName)))[m
[36m@@ -1001,7 +1022,7 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                                     string destFName = string.IsNullOrEmpty((dataEntryCmpnt as IDataEntryForCamera).TestEndImgName(i, testName))[m
                                         ? fileName : (dataEntryCmpnt as IDataEntryForCamera).TestEndImgName(i, testName);[m
                                     File.Copy(Path.Combine(srcDir, fileName), Path.Combine(destDir, destFName), true);[m
[31m-                                    log.DebugFormat("Save images sourceFile: {0}, destFile: {1} ",Path.Combine(srcDir, fileName), Path.Combine(destDir, destFName));[m
[32m+[m[32m                                    log.DebugFormat("Save images sourceFile: {0}, destFile: {1} ", Path.Combine(srcDir, fileName), Path.Combine(destDir, destFName));[m
                                 }[m
                             }[m
                             catch (Exception exc)[m
[36m@@ -1009,8 +1030,8 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                                 log.ErrorFormat("Failed to copy image {0} to {1}: {2}", fileName, destDir, exc.Message);[m
                             }[m
                         }[m
[31m-					}[m
[31m-				}[m
[32m+[m[32m                    }[m
[32m+[m[32m                }[m
 [m
                 //...MF...kvapkanie[m
                 //------------------------------------------------[m
[36m@@ -1059,14 +1080,14 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
 [m
                 /// Raw data[m
                 UpdateTempPressDensAmb(tstRslt);[m
[31m-                tstRslt.MethodClass  = TbfComponents.FindComponent(test.Method).ClassName;[m
[31m-                tstRslt.StartTime    = TestStartTime;[m
[31m-                tstRslt.EndTime      = TestEndTime;[m
[31m-                tstRslt.FlowSetTime  = flowSetTime;[m
[31m-                tstRslt.TestTime     = Math.Max(1.0, DateTimeBox.DurationSec(timeStampStart, timeStampEnd));    /// Min. 1s to prevent division by zero[m
[32m+[m[32m                tstRslt.MethodClass = TbfComponents.FindComponent(test.Method).ClassName;[m
[32m+[m[32m                tstRslt.StartTime = TestStartTime;[m
[32m+[m[32m                tstRslt.EndTime = TestEndTime;[m
[32m+[m[32m                tstRslt.FlowSetTime = flowSetTime;[m
[32m+[m[32m                tstRslt.TestTime = Math.Max(1.0, DateTimeBox.DurationSec(timeStampStart, timeStampEnd));    /// Min. 1s to prevent division by zero[m
                 tstRslt.PulsesMaster = Convert.ToDouble(cBrd.RefPulses);	                                    /// Pulses of the master flow meter (test total)[m
                 tstRslt.MassStartRaw = StartMass.Val;[m
[31m-                tstRslt.MassEndRaw   = EndMass.Val;[m
[32m+[m[32m                tstRslt.MassEndRaw = EndMass.Val;[m
                 tstRslt.TimeBtwnMassMsrmnts = tMass2 - tMass1;[m
 [m
                 /// Corrected values[m
[36m@@ -1077,6 +1098,8 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                 /// Main results[m
                 tstRslt.VolumeCTV = volumeCTV;							/// [l] 1000.0f is because density is in [kg/m3][m
                 tstRslt.Flow = 3.6 * volumeCTV / tstRslt.TestTime;	    /// [m3/h][m
[32m+[m[32m                tstRslt.MassCTV = massCTV;							    /// [kg] 1000.0f is because density is in [kg/m3][m
[32m+[m[32m                tstRslt.MassFlow = 3.6 * massCTV / tstRslt.TestTime;	/// [kg/h][m
 [m
                 if (cBrd is ControlBoard.Uni.UniCB)[m
                 {[m
[36m@@ -1085,6 +1108,7 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                     tstRslt.ConstMasterCorr = outPath.FlowMeter.LtrPerPulseCorrected(tstRslt.Flow, tstRslt.TempDownMean);[m
                     tstRslt.VolumeMaster = tstRslt.ConstMasterRaw * tstRslt.PulsesMaster;						/// [l] volume from the master flow meter[m
                     tstRslt.ConstMaster = (tstRslt.VolumeMaster != 0) ? (tstRslt.ConstMasterRaw * tstRslt.VolumeCTV / tstRslt.VolumeMaster) : tstRslt.ConstMasterCorr;[m
[32m+[m[32m                    tstRslt.MassConstMaster = (tstRslt.PulsesMaster != 0) ? (tstRslt.MassCTV / tstRslt.PulsesMaster) : tstRslt.ConstMasterCorr;[m
                 }[m
                 else[m
                 {[m
[36m@@ -1095,11 +1119,12 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                     tstRslt.ConstMaster = 1;[m
                 }[m
                 tstRslt.ErrorMaster = Formulas.ErrorFromVolumes(tstRslt.VolumeMaster, tstRslt.VolumeCTV);[m
[32m+[m[32m                tstRslt.MassErrorMaster = Formulas.ErrorFromVolumes(tstRslt.VolumeMaster, tstRslt.MassCTV);[m
 [m
                 tstRslt.FlowMean = (float)RefFlowStat.Average;[m
[31m-				tstRslt.FlowStart = (float)RefFlowStat.First;[m
[31m-				tstRslt.FlowEnd = (float)RefFlowStat.Last;[m
[31m-				tstRslt.FlowMin = (float)RefFlowStat.Min;[m
[32m+[m[32m                tstRslt.FlowStart = (float)RefFlowStat.First;[m
[32m+[m[32m                tstRslt.FlowEnd = (float)RefFlowStat.Last;[m
[32m+[m[32m                tstRslt.FlowMin = (float)RefFlowStat.Min;[m
                 tstRslt.FlowMax = (float)RefFlowStat.Max;[m
 [m
                 tstRslt.DiverterStart = startSwitchTime.Val;[m
[36m@@ -1124,7 +1149,7 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                         for (int isAux = 0; isAux <= 1; isAux++)		/// 0=main, 1=aux[m
                         {[m
                             Results.Entities.MeterTestRslt meterRslt = (isAux == 0) ? mainMeterRslt : auxMeterRslt;[m
[31m-							GenericDevices.IRegReader regReader = sensPath.RegisterReaders[2 * i + isAux];[m
[32m+[m[32m                            GenericDevices.IRegReader regReader = sensPath.RegisterReaders[2 * i + isAux];[m
 [m
                             if (meterRslt != null && regReader != null)[m
                             {[m
[36m@@ -1166,63 +1191,63 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                     ///[m
                     tstRslt.RefEnergy = Energy.Sum * tstRslt.VolumeCTV / VolumeForEnergy.Sum;   /// [J] = [J] * [l] / [l][m
 [m
[31m-					tstRslt.Custom1  = (float)TempRefHiStat.Average;[m
[31m-					tstRslt.Custom2  = (float)TempRefHiStat.First;[m
[31m-					tstRslt.Custom3  = (float)TempRefHiStat.Last;[m
[31m-					tstRslt.Custom4  = (float)TempRefHiStat.Min;[m
[31m-					tstRslt.Custom5  = (float)TempRefHiStat.Max;[m
[31m-					tstRslt.Custom6  = (float)TempRefLoStat.Average;[m
[31m-					tstRslt.Custom7  = (float)TempRefLoStat.First;[m
[31m-					tstRslt.Custom8  = (float)TempRefLoStat.Last;[m
[31m-					tstRslt.Custom9  = (float)TempRefLoStat.Min;[m
[31m-					tstRslt.Custom10 = (float)TempRefLoStat.Max;																								[m
[32m+[m[32m                    tstRslt.Custom1 = (float)TempRefHiStat.Average;[m
[32m+[m[32m                    tstRslt.Custom2 = (float)TempRefHiStat.First;[m
[32m+[m[32m                    tstRslt.Custom3 = (float)TempRefHiStat.Last;[m
[32m+[m[32m                    tstRslt.Custom4 = (float)TempRefHiStat.Min;[m
[32m+[m[32m                    tstRslt.Custom5 = (float)TempRefHiStat.Max;[m
[32m+[m[32m                    tstRslt.Custom6 = (float)TempRefLoStat.Average;[m
[32m+[m[32m                    tstRslt.Custom7 = (float)TempRefLoStat.First;[m
[32m+[m[32m                    tstRslt.Custom8 = (float)TempRefLoStat.Last;[m
[32m+[m[32m                    tstRslt.Custom9 = (float)TempRefLoStat.Min;[m
[32m+[m[32m                    tstRslt.Custom10 = (float)TempRefLoStat.Max;[m
 [m
                     for (int i = 0; i < BatchRslts.WMPositionsCount; i++)[m
                     {[m
                         if (!test.IsPartCompatible(Utils.PartNr(i + 1, BatchRslts.Batch.Compound))) continue;[m
 [m
                         Results.Entities.MeterTestRslt volumeRslt = BatchRslts.GetMeterTestRslt(testName, i, Common.CompoundMeterId.HeatMeterVolume);[m
[31m-						Results.Entities.MeterTestRslt energyRslt = BatchRslts.GetMeterTestRslt(testName, i, Common.CompoundMeterId.HeatMeterEnergy);[m
[32m+[m[32m                        Results.Entities.MeterTestRslt energyRslt = BatchRslts.GetMeterTestRslt(testName, i, Common.CompoundMeterId.HeatMeterEnergy);[m
 [m
[31m-						GenericDevices.IRegReader volumeRegReader =[m
[32m+[m[32m                        GenericDevices.IRegReader volumeRegReader =[m
                             (sensPath.RegisterReaders.Length > 2 * i) ? sensPath.RegisterReaders[2 * i] : null;[m
 [m
[31m-						GenericDevices.IRegReader energyRegReader =[m
[32m+[m[32m                        GenericDevices.IRegReader energyRegReader =[m
                             (sensPath.RegisterReaders.Length > 2 * i + 1) ? sensPath.RegisterReaders[2 * i + 1] : null;[m
 [m
                         if (volumeRslt != null && volumeRegReader != null)[m
                         {[m
[31m-							volumeRslt.PulsesPerLiter = volumeRegReader.PulsesPerLtr;[m
[31m-							volumeRslt.VolumeStart = volumeRegReader.BeginWMState;[m
[31m-							volumeRslt.VolumeEnd = volumeRegReader.EndWMState;[m
[31m-							volumeRslt.VolumeMeter = volumeRslt.VolumeEnd - volumeRslt.VolumeStart;[m
[31m-							volumeRslt.VolumeRef = tstRslt.VolumeCTV;[m
[31m-							volumeRslt.PulsesMeter = volumeRslt.VolumeMeter;[m
[31m-							volumeRslt.PulsesMaster = tstRslt.PulsesMaster;		/// <----------------- ???[m
[32m+[m[32m                            volumeRslt.PulsesPerLiter = volumeRegReader.PulsesPerLtr;[m
[32m+[m[32m                            volumeRslt.VolumeStart = volumeRegReader.BeginWMState;[m
[32m+[m[32m                            volumeRslt.VolumeEnd = volumeRegReader.EndWMState;[m
[32m+[m[32m                            volumeRslt.VolumeMeter = volumeRslt.VolumeEnd - volumeRslt.VolumeStart;[m
[32m+[m[32m                            volumeRslt.VolumeRef = tstRslt.VolumeCTV;[m
[32m+[m[32m                            volumeRslt.PulsesMeter = volumeRslt.VolumeMeter;[m
[32m+[m[32m                            volumeRslt.PulsesMaster = tstRslt.PulsesMaster;		/// <----------------- ???[m
 							volumeRslt.TestTime = tstRslt.TestTime;[m
 [m
                             volumeRslt.Error = Formulas.ErrorFromVolumes(volumeRslt.VolumeMeter, volumeRslt.VolumeRef);[m
[31m-							volumeRslt.Passed = !heatMetersTestParams.EvaluateVolume ||[m
[31m-												((volumeRslt.Error >= test.GetErrLimLo(tstRslt.VolumeCTV, tstRslt.TestTime) + test.Uncertainty) &&[m
[31m-												 (volumeRslt.Error <= test.GetErrLimHi(tstRslt.VolumeCTV, tstRslt.TestTime) - test.Uncertainty) &&[m
[31m-        										 (tstRslt.ErrorFlags == 0));[m
[31m-							volumeRslt.TestDone = true;[m
[32m+[m[32m                            volumeRslt.Passed = !heatMetersTestParams.EvaluateVolume ||[m
[32m+[m[32m                                                ((volumeRslt.Error >= test.GetErrLimLo(tstRslt.VolumeCTV, tstRslt.TestTime) + test.Uncertainty) &&[m
[32m+[m[32m                                                 (volumeRslt.Error <= test.GetErrLimHi(tstRslt.VolumeCTV, tstRslt.TestTime) - test.Uncertainty) &&[m
[32m+[m[32m                                                 (tstRslt.ErrorFlags == 0));[m
[32m+[m[32m                            volumeRslt.TestDone = true;[m
                             tstRslt.TestDone = true;[m
                         }[m
 [m
                         if (energyRslt != null && energyRegReader != null && dataEntryCmpnt is GenericDevices.IHasHeatMtrStatesForm)[m
[31m-						{[m
[31m-							volumeRslt.PulsesPerLiter = energyRegReader.PulsesPerLtr;[m
[31m-							energyRslt.VolumeStart = (dataEntryCmpnt as GenericDevices.IHasHeatMtrStatesForm).EnergyStartState(i);[m
[31m-							energyRslt.VolumeEnd = (dataEntryCmpnt as GenericDevices.IHasHeatMtrStatesForm).EnergyEndState(i);[m
[31m-							energyRslt.VolumeMeter = energyRslt.VolumeEnd - energyRslt.VolumeStart;[m
[31m-							energyRslt.VolumeRef = tstRslt.RefEnergy;[m
[31m-							energyRslt.PulsesMeter = energyRslt.VolumeMeter;[m
[32m+[m[32m                        {[m
[32m+[m[32m                            volumeRslt.PulsesPerLiter = energyRegReader.PulsesPerLtr;[m
[32m+[m[32m                            energyRslt.VolumeStart = (dataEntryCmpnt as GenericDevices.IHasHeatMtrStatesForm).EnergyStartState(i);[m
[32m+[m[32m                            energyRslt.VolumeEnd = (dataEntryCmpnt as GenericDevices.IHasHeatMtrStatesForm).EnergyEndState(i);[m
[32m+[m[32m                            energyRslt.VolumeMeter = energyRslt.VolumeEnd - energyRslt.VolumeStart;[m
[32m+[m[32m                            energyRslt.VolumeRef = tstRslt.RefEnergy;[m
[32m+[m[32m                            energyRslt.PulsesMeter = energyRslt.VolumeMeter;[m
                             energyRslt.PulsesMaster = tstRslt.PulsesMaster;		/// <----------------- ???[m
 [m
                             energyRslt.Error = Formulas.ErrorFromVolumes(energyRslt.VolumeMeter, energyRslt.VolumeRef);[m
[31m-							energyRslt.Passed = (energyRslt.Error >= heatMetersTestParams.ErrorLimitLo)[m
[31m-											 && (energyRslt.Error <= heatMetersTestParams.ErrorLimitHi)[m
[32m+[m[32m                            energyRslt.Passed = (energyRslt.Error >= heatMetersTestParams.ErrorLimitLo)[m
[32m+[m[32m                                             && (energyRslt.Error <= heatMetersTestParams.ErrorLimitHi)[m
                                              && (tstRslt.ErrorFlags == 0);[m
                             energyRslt.TestDone = true;[m
                             tstRslt.TestDone = true;[m
[36m@@ -1244,18 +1269,75 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                         if (meterRslt != null && regReader != null)[m
                         {[m
                             meterRslt.RegReaderType = (int)regReader.RegisterReaderType;[m
[31m-                            meterRslt.PulsesPerLiter = regReader.PulsesPerLtr;[m
[32m+[m
[32m+[m
[32m+[m[32m                            ComponentProcedure procParamsEntity = test.Procedure.GetProcedureParamsEntity(regReader.Name);[m
[32m+[m
[32m+[m[32m                            try[m
[32m+[m[32m                            {[m
[32m+[m[32m                                if (regReader.RegisterReaderType == RegisterReaderType.Pulses || regReader.RegisterReaderType == RegisterReaderType.Manual)[m
[32m+[m[32m                                {[m
[32m+[m[32m                                    XmlSerializer Serializer = XmlSerializer.FromTypes(new[] { typeof(RRProcParams) })[0];[m
[32m+[m[32m                                    RRProcParams tmp = Serializer.Deserialize(new StringReader(procParamsEntity.Parameters.ToString())) as RRProcParams;[m
[32m+[m[32m                                    regReader.PulsesPerLtr = tmp.PulsesPerLtr;[m
[32m+[m[32m                                    regReader.QuantityUnits = tmp.Units;[m
[32m+[m[32m                                }[m
[32m+[m[32m                                else[m
[32m+[m[32m                                {[m
[32m+[m[32m                                    //MessageBox.Show("Cannot create or initialize a printer", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);[m
[32m+[m[32m                                }[m
[32m+[m[32m                            }[m
[32m+[m[32m                            catch (Exception ex)[m
[32m+[m[32m                            {[m
[32m+[m[32m                                /*log.DebugFormat([m
[32m+[m[32m                                    "Error during Procedure parameters deserialization. CmpntName='{0}', Procedure='{1}', Parameters='{2}', Exception: {3}",[m
[32m+[m[32m                                    dbEntity?.CmpntName,[m
[32m+[m[32m                                    dbEntity?.Procedure,[m
[32m+[m[32m                                    dbEntity?.Parameters,[m
[32m+[m[32m                                    ex[m
[32m+[m[32m                                );*/[m
[32m+[m[32m                            }[m
[32m+[m
[32m+[m[32m                            meterRslt.PulsesPerLiter = regReader.PulsesPerLtr;//...MF 11.12.2025 toto chybalo, v .csv bol stlpec naplneny nulami[m
[32m+[m[32m                            meterRslt.QuantityUnits = regReader.QuantityUnits;[m
                             meterRslt.VolumeStart = regReader.BeginWMState;[m
                             meterRslt.VolumeEnd = regReader.EndWMState;[m
                             meterRslt.VolumeMeter = Math.Abs(meterRslt.VolumeEnd - meterRslt.VolumeStart);[m
[31m-                            meterRslt.VolumeRef = tstRslt.VolumeCTV;      /// liter[m
[32m+[m[32m                            meterRslt.MassMeter = Math.Abs(meterRslt.VolumeEnd - meterRslt.VolumeStart);[m
[32m+[m[32m                            meterRslt.VolumeRef = tstRslt.VolumeCTV;        /// liter[m
[32m+[m[32m                            meterRslt.MassRef = tstRslt.MassCTV;            /// kg[m
                             meterRslt.PulsesMeter = meterRslt.VolumeMeter;[m
                             meterRslt.PulsesMaster = tstRslt.PulsesMaster;[m
                             meterRslt.TestTime = tstRslt.TestTime;[m
[31m-                            meterRslt.Error = Formulas.ErrorFromVolumes(meterRslt.VolumeMeter, meterRslt.VolumeRef);[m
[31m-                            meterRslt.Passed = (meterRslt.Error >= test.GetErrLimLo(tstRslt.VolumeCTV, tstRslt.TestTime) + test.Uncertainty)[m
[32m+[m
[32m+[m[32m                            //meterRslt.Error = Formulas.ErrorFromVolumes(meterRslt.VolumeMeter, meterRslt.VolumeRef);[m
[32m+[m[32m                            double Error = 0;[m
[32m+[m[32m                            if (meterRslt.GetQuantityFromUnits() == "Mass")[m
[32m+[m[32m                                Error = Formulas.ErrorFromVolumes(meterRslt.MassMeter, meterRslt.MassRef);[m
[32m+[m[32m                            else[m
[32m+[m[32m                                Error = Formulas.ErrorFromVolumes(meterRslt.VolumeMeter, meterRslt.VolumeRef);[m
[32m+[m
[32m+[m[32m                            meterRslt.Error = Error;[m
[32m+[m
[32m+[m[32m                            /*meterRslt.Passed = (meterRslt.Error >= test.GetErrLimLo(tstRslt.VolumeCTV, tstRslt.TestTime) + test.Uncertainty)[m
                                             && (meterRslt.Error <= test.GetErrLimHi(tstRslt.VolumeCTV, tstRslt.TestTime) - test.Uncertainty)[m
[31m-                                            && (tstRslt.ErrorFlags == 0);[m
[32m+[m[32m                                            && (tstRslt.ErrorFlags == 0);*/[m
[32m+[m[32m                            var ErrLimLo_Volume = test.GetErrLimLo(tstRslt.VolumeCTV, tstRslt.TestTime);[m
[32m+[m[32m                            var ErrLimHi_Volume = test.GetErrLimHi(tstRslt.VolumeCTV, tstRslt.TestTime);[m
[32m+[m[32m                            var ErrLimLo_Mass = test.GetErrLimLo(tstRslt.MassCTV, tstRslt.TestTime);[m
[32m+[m[32m                            var ErrLimHi_Mass = test.GetErrLimHi(tstRslt.MassCTV, tstRslt.TestTime);[m
[32m+[m
[32m+[m[32m                            bool Passed;[m
[32m+[m[32m                            if (meterRslt.GetQuantityFromUnits() == "Mass")[m
[32m+[m[32m                                Passed = (meterRslt.Error >= ErrLimLo_Volume + test.Uncertainty) &&[m
[32m+[m[32m                                (meterRslt.Error <= ErrLimHi_Volume - test.Uncertainty) &&[m
[32m+[m[32m                                (tstRslt.ErrorFlags == 0);[m
[32m+[m[32m                            else[m
[32m+[m[32m                                Passed = (meterRslt.Error >= ErrLimLo_Mass + test.Uncertainty) &&[m
[32m+[m[32m                                (meterRslt.Error <= ErrLimHi_Mass - test.Uncertainty) &&[m
[32m+[m[32m                                (tstRslt.ErrorFlags == 0);[m
[32m+[m
[32m+[m[32m                            meterRslt.Passed = Passed;[m
                             meterRslt.TestDone = true;[m
                             tstRslt.TestDone = true;[m
                             if (regReader is ICommonRegReader regReaderCommon)[m
[36m@@ -1265,7 +1347,7 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
                             {[m
                                 meterRslt.WaterMeter.SerialNr = regReaderCommon.SerialNr;[m
                             }[m
[31m-                            [m
[32m+[m
                         }[m
                     }[m
                 }[m
[36m@@ -1308,9 +1390,9 @@[m [mnamespace TBF.Rig.TestMethods.StandingStartMassCollection[m
 [m
             if (stopCycle) retVal = Event.ErrorFlagsStop;[m
 [m
[31m-        stopTest:[m
[32m+[m[32m            stopTest:[m
 [m
[31m-			StopRecordingStatistics();[m
[32m+[m[32m            StopRecordingStatistics();[m
 [m
             ///[m
             ///  Quit this sequence[m
