Finish the SM for ctlBatch
This commit is contained in:
@@ -155,7 +155,7 @@
|
|||||||
</site>
|
</site>
|
||||||
<site name="MeterProcessState" id="2">
|
<site name="MeterProcessState" id="2">
|
||||||
<application path="/" applicationPool="Clr4IntegratedAppPool">
|
<application path="/" applicationPool="Clr4IntegratedAppPool">
|
||||||
<virtualDirectory path="/" physicalPath="C:\Users\drabesch_ro\Repo\lab\la_operations\laa_production\Common\Service\MeterProcessState" />
|
<virtualDirectory path="/" physicalPath="C:\ProgrammeSensus\Repo\Lab\La_Operations\laa_production\Common\Service\MeterProcessState" />
|
||||||
</application>
|
</application>
|
||||||
<bindings>
|
<bindings>
|
||||||
<binding protocol="http" bindingInformation="*:56011:localhost" />
|
<binding protocol="http" bindingInformation="*:56011:localhost" />
|
||||||
|
|||||||
+1
-1
@@ -1 +1 @@
|
|||||||
5ed75d99ee45ff67821090f1b3dbb001dd9e4fe3
|
46bd00889699f5a20a4981a22f62b66368323855
|
||||||
|
|||||||
+1
-1
@@ -1 +1 @@
|
|||||||
f64d563def603c89cafafa61a3219ba97e1e344c
|
81d60b90addc793525740e9993e19bf6665bd401
|
||||||
|
|||||||
@@ -113,6 +113,10 @@ namespace XylemCommonUiLegacyGenCtl
|
|||||||
/// <param name="IsFlyingStartStop">Just for logging (Test run against scale or ref meter)</param>
|
/// <param name="IsFlyingStartStop">Just for logging (Test run against scale or ref meter)</param>
|
||||||
void PrepareMeters(string meterDn = "-", double refPulseValence = 0.0, double predictedQFlow = 0.0, double predictedTs = 0.0, double refError = 0.0, bool isAdjustment = false, bool IsFlyingStartStop = true);
|
void PrepareMeters(string meterDn = "-", double refPulseValence = 0.0, double predictedQFlow = 0.0, double predictedTs = 0.0, double refError = 0.0, bool isAdjustment = false, bool IsFlyingStartStop = true);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// All parameters has pass to the batch and just witing till mesurement can start
|
||||||
|
/// </summary>
|
||||||
|
void SetReadyForMesuremnt();
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// pass informations from current running test point
|
/// pass informations from current running test point
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -203,6 +207,22 @@ namespace XylemCommonUiLegacyGenCtl
|
|||||||
void Dispose(bool fromCode);
|
void Dispose(bool fromCode);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Check SM If the State is MessuremntActive
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
bool MeasurementIsActive();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Check SM If the State is MMeasurementCompleted
|
||||||
|
/// // </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
bool MeasurementIsCompleted();
|
||||||
|
|
||||||
|
bool MetersArePrepared();
|
||||||
|
|
||||||
|
bool IsReadyForMesuremnt();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -69,7 +69,9 @@ namespace XylemCommonUiLegacyGenCtl
|
|||||||
AddMeters,
|
AddMeters,
|
||||||
PrepareMeters,
|
PrepareMeters,
|
||||||
MetersPrepared,
|
MetersPrepared,
|
||||||
WaitingForErrorFrame,
|
ReadyForMesuremnt,
|
||||||
|
StartMesurement,
|
||||||
|
StopMesurement,
|
||||||
}
|
}
|
||||||
|
|
||||||
private BatchState _currentState;
|
private BatchState _currentState;
|
||||||
@@ -202,10 +204,6 @@ namespace XylemCommonUiLegacyGenCtl
|
|||||||
break;
|
break;
|
||||||
case BatchState.PrepareMeasurement:
|
case BatchState.PrepareMeasurement:
|
||||||
break;
|
break;
|
||||||
case BatchState.MeasurementActive:
|
|
||||||
break;
|
|
||||||
case BatchState.MeasurementCompleted:
|
|
||||||
break;
|
|
||||||
case BatchState.TestContainerIsReady:
|
case BatchState.TestContainerIsReady:
|
||||||
break;
|
break;
|
||||||
case BatchState.BatchIsReady:
|
case BatchState.BatchIsReady:
|
||||||
@@ -214,12 +212,29 @@ namespace XylemCommonUiLegacyGenCtl
|
|||||||
_currentState = AddAllMeters_Internal() ? BatchState.PrepareMeters : BatchState.Error;
|
_currentState = AddAllMeters_Internal() ? BatchState.PrepareMeters : BatchState.Error;
|
||||||
break;
|
break;
|
||||||
case BatchState.PrepareMeters:
|
case BatchState.PrepareMeters:
|
||||||
_currentState = PrepareMeters_Internal() ? BatchState.WaitingForErrorFrame : BatchState.Error;
|
_currentState = PrepareMeters_Internal() ? BatchState.MetersPrepared : BatchState.Error;
|
||||||
break;
|
|
||||||
case BatchState.WaitingForErrorFrame:
|
|
||||||
break;
|
break;
|
||||||
case BatchState.MetersPrepared:
|
case BatchState.MetersPrepared:
|
||||||
|
//Wait For Caller when every thing is setup
|
||||||
break;
|
break;
|
||||||
|
case BatchState.ReadyForMesuremnt:
|
||||||
|
//Wait for caller to start Mesurment
|
||||||
|
break;
|
||||||
|
case BatchState.StartMesurement:
|
||||||
|
_currentState = StartMeasurement_Internal() ? BatchState.MeasurementActive : BatchState.Error;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case BatchState.MeasurementActive:
|
||||||
|
// wait for singal that the messuremnt can be stopped
|
||||||
|
break;
|
||||||
|
|
||||||
|
case BatchState.StopMesurement:
|
||||||
|
_currentState = StopMeasurement_Internal() ? BatchState.MeasurementCompleted : BatchState.Error;
|
||||||
|
break;
|
||||||
|
case BatchState.MeasurementCompleted:
|
||||||
|
//Measurement waiting for caller to grab all the results
|
||||||
|
break;
|
||||||
|
|
||||||
}// lock repeated execution of identical state
|
}// lock repeated execution of identical state
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -714,26 +729,36 @@ namespace XylemCommonUiLegacyGenCtl
|
|||||||
_logger.Error("Test setup container missing");
|
_logger.Error("Test setup container missing");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
var listOfTasks = new List<Task>();
|
||||||
|
|
||||||
|
|
||||||
foreach (var item in TestSetupContainer.meterTestSettings)
|
foreach (var item in TestSetupContainer.meterTestSettings)
|
||||||
{
|
{
|
||||||
if (item != null && (item.FlowAdjustment || item.FlowTesting))
|
if (item != null && (item.FlowAdjustment || item.FlowTesting))
|
||||||
{
|
{
|
||||||
if (batch.ListOfMeters.All(f => f.Slot != item.Slot))
|
listOfTasks.Add(new Task(() =>
|
||||||
{
|
{
|
||||||
|
if (batch.ListOfMeters.All(f => f.Slot != item.Slot))
|
||||||
|
{
|
||||||
|
|
||||||
var meter = new GenesisMeter();
|
var meter = new GenesisMeter();
|
||||||
meter.SerialNumber = item.SerialNr;
|
meter.SerialNumber = item.SerialNr;
|
||||||
meter.CurrentActionText = "FlowTest";
|
meter.CurrentActionText = "FlowTest";
|
||||||
meter.SetupFromConfigFile(item.Slot, false, _useRequest, true);
|
meter.SetupFromConfigFile(item.Slot, false, _useRequest, true);
|
||||||
meter.LogRawData(_rawLogging);
|
meter.LogRawData(_rawLogging);
|
||||||
|
|
||||||
batch.AddMeter(meter);
|
batch.AddMeter(meter);
|
||||||
meter.Login();
|
meter.Login();
|
||||||
meter.EnableAutoLogon();
|
meter.EnableAutoLogon();
|
||||||
meter.WriteLog("Add from AddAllMeters");
|
meter.WriteLog("Add from AddAllMeters");
|
||||||
}
|
}
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
listOfTasks.ForEach(t => t.Start());
|
||||||
|
Task.WaitAll(listOfTasks.ToArray());
|
||||||
|
|
||||||
setBusy(false);
|
setBusy(false);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -888,8 +913,8 @@ namespace XylemCommonUiLegacyGenCtl
|
|||||||
setBusy(true, $"Set {slot} LCD");
|
setBusy(true, $"Set {slot} LCD");
|
||||||
Task.Factory.StartNew(() =>
|
Task.Factory.StartNew(() =>
|
||||||
{
|
{
|
||||||
//FF-55-00-00
|
//FF-55-00-00
|
||||||
var meter = batch.ListOfMeters.First(f => f.Slot == slot);
|
var meter = batch.ListOfMeters.First(f => f.Slot == slot);
|
||||||
var state = Xylem.Common.Hardware.WaterMeter.WaterMeterCore.Consts.DisplayCodes.FlowTested;
|
var state = Xylem.Common.Hardware.WaterMeter.WaterMeterCore.Consts.DisplayCodes.FlowTested;
|
||||||
|
|
||||||
if (!Succeed)
|
if (!Succeed)
|
||||||
@@ -910,8 +935,8 @@ namespace XylemCommonUiLegacyGenCtl
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
gen.WriteLog($"meter not active because display code has an error on code:{displayStateString}");
|
gen.WriteLog($"meter not active because display code has an error on code:{displayStateString}");
|
||||||
//skip set
|
//skip set
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -995,7 +1020,7 @@ namespace XylemCommonUiLegacyGenCtl
|
|||||||
{
|
{
|
||||||
CalibrationIsDone = new Dictionary<Int32, LegacyCalibrationResult>();
|
CalibrationIsDone = new Dictionary<Int32, LegacyCalibrationResult>();
|
||||||
}
|
}
|
||||||
|
var listOfTasks = new List<Task>();
|
||||||
foreach (var meter in batch.ListOfMeters)
|
foreach (var meter in batch.ListOfMeters)
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -1018,25 +1043,33 @@ namespace XylemCommonUiLegacyGenCtl
|
|||||||
|
|
||||||
if (_useRequest)
|
if (_useRequest)
|
||||||
{
|
{
|
||||||
((GenesisMeter)meter).ReLogin();
|
|
||||||
((GenesisMeter)meter).WriteLog("Prepare meter for Measurement/Adjustment ");
|
listOfTasks.Add(new Task(() =>
|
||||||
_logger.Debug("Prepare Meters for Measurement/Adjustment");
|
|
||||||
if (IsAdjustment)
|
|
||||||
{
|
{
|
||||||
((GenesisMeter)meter).InitCalibration();
|
|
||||||
}
|
((GenesisMeter)meter).ReLogin();
|
||||||
else
|
((GenesisMeter)meter).WriteLog("Prepare meter for Measurement/Adjustment ");
|
||||||
{
|
_logger.Debug("Prepare Meters for Measurement/Adjustment");
|
||||||
((GenesisMeter)meter).InitMeasurement();
|
if (IsAdjustment)
|
||||||
}
|
{
|
||||||
|
((GenesisMeter)meter).InitCalibration();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
((GenesisMeter)meter).InitMeasurement();
|
||||||
|
}
|
||||||
|
}));
|
||||||
//// Reboot, HighPressure
|
//// Reboot, HighPressure
|
||||||
////ReadOut Alarms, Show and reset
|
////ReadOut Alarms, Show and reset
|
||||||
//_logger.Debug($"Start CheckMetersAreReadyForTest");
|
//_logger.Debug($"Start CheckMetersAreReadyForTest");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TryInvoke(new Action(UpdateBatch));
|
|
||||||
|
|
||||||
|
|
||||||
|
listOfTasks.ForEach(t => t.Start());
|
||||||
|
Task.WaitAll(listOfTasks.ToArray());
|
||||||
|
TryInvoke(new Action(UpdateBatch));
|
||||||
CheckMetersAreReadyForTest();
|
CheckMetersAreReadyForTest();
|
||||||
setBusy(false);
|
setBusy(false);
|
||||||
return true;
|
return true;
|
||||||
@@ -1079,90 +1112,6 @@ namespace XylemCommonUiLegacyGenCtl
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CheckMetersAreReadyForTestStatic()
|
|
||||||
{
|
|
||||||
var listOfTasks = new List<Task>();
|
|
||||||
|
|
||||||
foreach (var meter in batch.ListOfMeters)
|
|
||||||
{
|
|
||||||
listOfTasks.Add(new Task(() =>
|
|
||||||
{
|
|
||||||
if (!(meter is GenesisMeter))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
var i = 1;
|
|
||||||
|
|
||||||
var sleepTimeS = 1;
|
|
||||||
_logger.Debug($" Meter {meter.Slot} CheckMetersAreReadyForTest loops {i};delay {sleepTimeS}S");
|
|
||||||
((GenesisMeter)meter).StartMeasurement();
|
|
||||||
var MeterReadyForTest = false;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
while (i <= 7 && !MeterReadyForTest)
|
|
||||||
{
|
|
||||||
((GenesisMeter)meter).RequestIntermediateMeasurementState(0);
|
|
||||||
Thread.Sleep(i * 2000);
|
|
||||||
i = i + 1;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var state = ((GenesisMeter)meter).GetMeasurementState(0);
|
|
||||||
|
|
||||||
|
|
||||||
if (state != MeasurementStates.IsWaitingForStartData && state != MeasurementStates.NotStarted)
|
|
||||||
{
|
|
||||||
|
|
||||||
var r = ((GenesisMeter)meter).GetMainMeasurementResult(null, null, true);
|
|
||||||
|
|
||||||
if (r.DutVolumeCm != 0)
|
|
||||||
{
|
|
||||||
_logger.Info($" Meter {meter.Slot} Meter has progress (Volume{r.DutVolumeCm})");
|
|
||||||
|
|
||||||
MeterReadyForTest = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
_logger.Info($" Meter {meter.Slot} Meter no update display; loops left {i}; state {state}");
|
|
||||||
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
_logger.Error(ex, $" Meter {meter.Slot} CheckMetersAreReadyForTest loops {i};delay {sleepTimeS}S");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
TryInvoke(new Action(() =>
|
|
||||||
{
|
|
||||||
updateCell("Status", meter.Slot, "Warte auf Zählerstand wechsel ", Color.LightYellow);
|
|
||||||
}));
|
|
||||||
|
|
||||||
}
|
|
||||||
((GenesisMeter)meter).StopMeasurement();
|
|
||||||
|
|
||||||
if (!MeterReadyForTest)
|
|
||||||
{
|
|
||||||
//todo event remove meter
|
|
||||||
_logger.Info($" Meter {meter.Slot} Meter has NO! progress");
|
|
||||||
TryInvoke(new Action(() =>
|
|
||||||
{
|
|
||||||
updateCell("Status", meter.Slot, "Zählerstand wechsel nicht erfasst", Color.LightPink);
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
listOfTasks.ForEach(t => t.Start());
|
|
||||||
Task.WaitAll(listOfTasks.ToArray());
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void CheckMetersAreReadyForTest()
|
private void CheckMetersAreReadyForTest()
|
||||||
@@ -1203,19 +1152,20 @@ namespace XylemCommonUiLegacyGenCtl
|
|||||||
var MeterReadyForTest = false;
|
var MeterReadyForTest = false;
|
||||||
while (i >= 0)
|
while (i >= 0)
|
||||||
{
|
{
|
||||||
Thread.Sleep(sleepTimeS * 1000);
|
new System.Threading.ManualResetEvent(false).WaitOne(i * 2000);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var r = ((GenesisMeter)meter).GetMainMeasurementResult(null, null, true);
|
var r = ((GenesisMeter)meter).GetMainMeasurementResult(null, null, true);
|
||||||
i -= sleepTimeS;
|
i -= sleepTimeS;
|
||||||
|
|
||||||
if (r.DutVolumeCm != 0.0d)
|
//when Start and Stop Record have diffrent Volumes the meter is ready for test
|
||||||
|
if (r.DutStartRecord.GetVolumeCm() != r.DutStopRecord.GetVolumeCm())
|
||||||
{
|
{
|
||||||
_logger.Info($" Meter {meter.Slot} Meter has progress {r.DutVolumeCm}");
|
_logger.Info($" Meter {meter.Slot} Meter has progress {r.DutVolumeCm}");
|
||||||
TryInvoke(new Action(() =>
|
TryInvoke(new Action(() =>
|
||||||
{
|
{
|
||||||
// updateCell($"Status", meter.Slot, $"Zählerstand wechsel erfasst Von:{r.DutStartRecord.GetVolumeCm()} Auf: {r.DutStopRecord.GetVolumeCm()}", Color.LimeGreen);
|
// updateCell($"Status", meter.Slot, $"Zählerstand wechsel erfasst Von:{r.DutStartRecord.GetVolumeCm()} Auf: {r.DutStopRecord.GetVolumeCm()}", Color.LimeGreen);
|
||||||
}));
|
}));
|
||||||
MeterReadyForTest = true;
|
MeterReadyForTest = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1256,34 +1206,47 @@ namespace XylemCommonUiLegacyGenCtl
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void StartMeasurement()
|
public Boolean StartMeasurement_Internal()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
||||||
|
var listOfTasks = new List<Task>();
|
||||||
foreach (var item in batch.ListOfMeters)
|
foreach (var item in batch.ListOfMeters)
|
||||||
{
|
{
|
||||||
var settings = TestSetupContainer.meterTestSettings.First(f => f != null && f.Slot == item.Slot);
|
listOfTasks.Add(new Task(() =>
|
||||||
|
{
|
||||||
|
|
||||||
if (IsAdjustment && settings.FlowAdjustment)
|
var settings = TestSetupContainer.meterTestSettings.First(f => f != null && f.Slot == item.Slot);
|
||||||
{
|
|
||||||
item.StartCalibration();
|
if (IsAdjustment && settings.FlowAdjustment)
|
||||||
}
|
{
|
||||||
if (!IsAdjustment && settings.FlowTesting)
|
item.StartCalibration();
|
||||||
{
|
}
|
||||||
item.StartMeasurement();
|
if (!IsAdjustment && settings.FlowTesting)
|
||||||
}
|
{
|
||||||
|
item.StartMeasurement();
|
||||||
|
}
|
||||||
|
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
|
listOfTasks.ForEach(t => t.Start());
|
||||||
|
Task.WaitAll(listOfTasks.ToArray());
|
||||||
|
|
||||||
|
|
||||||
currentMode = Mode.AutoRefresh;
|
currentMode = Mode.AutoRefresh;
|
||||||
//this.RefeshTimer.Enabled = true;
|
return true;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
_logger.Error(ex, "StartMeasurement");
|
_logger.Error(ex, "StartMeasurement");
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void StartMeasurement()
|
||||||
|
{
|
||||||
|
_currentState = BatchState.StartMesurement;
|
||||||
}
|
}
|
||||||
public void SetLoggerActionText(String ActionText)
|
public void SetLoggerActionText(String ActionText)
|
||||||
{
|
{
|
||||||
@@ -1295,8 +1258,11 @@ namespace XylemCommonUiLegacyGenCtl
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void StopMeasurement()
|
public void StopMeasurement()
|
||||||
|
{
|
||||||
|
_currentState = BatchState.StopMesurement;
|
||||||
|
}
|
||||||
|
public Boolean StopMeasurement_Internal()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -1324,13 +1290,10 @@ namespace XylemCommonUiLegacyGenCtl
|
|||||||
item.StopMeasurement();
|
item.StopMeasurement();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
var listOfTasks = new List<Task>();
|
||||||
foreach (var item in batch.ListOfMeters)
|
foreach (var item in batch.ListOfMeters)
|
||||||
{
|
{
|
||||||
if (item is GenesisMeter gm)
|
|
||||||
{
|
|
||||||
gm.CurrentActionText = "FlowTest";
|
|
||||||
}
|
|
||||||
var settings = TestSetupContainer.meterTestSettings.First(f => f != null && f.Slot == item.Slot);
|
var settings = TestSetupContainer.meterTestSettings.First(f => f != null && f.Slot == item.Slot);
|
||||||
|
|
||||||
if (IsAdjustment && !settings.FlowAdjustment)
|
if (IsAdjustment && !settings.FlowAdjustment)
|
||||||
@@ -1345,44 +1308,55 @@ namespace XylemCommonUiLegacyGenCtl
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (IsAdjustment)
|
listOfTasks.Add(new Task(() =>
|
||||||
{
|
{
|
||||||
Int32 retrys = 0;
|
|
||||||
while (item.GetCalibrationState() != MeasurementStates.IsCompleted && retrys < nrOfRetrys)
|
if (IsAdjustment)
|
||||||
{
|
{
|
||||||
if (retrys == (nrOfRetrys / 2))
|
Int32 retrys = 0;
|
||||||
|
while (item.GetCalibrationState() != MeasurementStates.IsCompleted && retrys < nrOfRetrys)
|
||||||
{
|
{
|
||||||
item.StopCalibration();
|
if (retrys == (nrOfRetrys / 2))
|
||||||
|
{
|
||||||
|
item.StopCalibration();
|
||||||
|
}
|
||||||
|
Thread.Sleep(100);
|
||||||
|
retrys = retrys + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Int32 retrys = 0;
|
||||||
|
//remove channel filter 0
|
||||||
|
var onlyChnl = _checkAllChannels ? null : (Int32?)0;
|
||||||
|
|
||||||
|
while (item.GetMeasurementState(onlyChnl) != MeasurementStates.IsCompleted && retrys < nrOfRetrys)
|
||||||
|
{
|
||||||
|
if (retrys == (nrOfRetrys / 2))
|
||||||
|
{
|
||||||
|
item.StopMeasurement();
|
||||||
|
}
|
||||||
|
Thread.Sleep(100);
|
||||||
|
retrys = retrys + 1;
|
||||||
}
|
}
|
||||||
Thread.Sleep(100);
|
|
||||||
retrys = retrys + 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
if (item is GenesisMeter gm)
|
||||||
else
|
|
||||||
{
|
|
||||||
Int32 retrys = 0;
|
|
||||||
//remove channel filter 0
|
|
||||||
var onlyChnl = _checkAllChannels ? null : (Int32?)0;
|
|
||||||
|
|
||||||
while (item.GetMeasurementState(onlyChnl) != MeasurementStates.IsCompleted && retrys < nrOfRetrys)
|
|
||||||
{
|
{
|
||||||
if (retrys == (nrOfRetrys / 2))
|
gm.CurrentActionText = "FlowTest";
|
||||||
{
|
|
||||||
item.StopMeasurement();
|
|
||||||
}
|
|
||||||
Thread.Sleep(100);
|
|
||||||
retrys = retrys + 1;
|
|
||||||
}
|
}
|
||||||
}
|
}));
|
||||||
}
|
}
|
||||||
|
listOfTasks.ForEach(t => t.Start());
|
||||||
|
Task.WaitAll(listOfTasks.ToArray());
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
_logger.Error(ex, "StopMeasurement");
|
_logger.Error(ex, "StopMeasurement");
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
Boolean ICtlBatch.IsBusy()
|
Boolean ICtlBatch.IsBusy()
|
||||||
{
|
{
|
||||||
@@ -1620,17 +1594,17 @@ namespace XylemCommonUiLegacyGenCtl
|
|||||||
PredictedTs = predictedTs;
|
PredictedTs = predictedTs;
|
||||||
RefError = refError;
|
RefError = refError;
|
||||||
currentMode = Mode.AutoRefresh;
|
currentMode = Mode.AutoRefresh;
|
||||||
//this.RefreshTimer.Interval = 10000;
|
//this.RefreshTimer.Interval = 10000;
|
||||||
//this.RefreshTimer.Tick += new EventHandler(this.RefreshTimer_Tick);
|
//this.RefreshTimer.Tick += new EventHandler(this.RefreshTimer_Tick);
|
||||||
//this.RefreshTimer.Enabled = true;
|
//this.RefreshTimer.Enabled = true;
|
||||||
pgbUpdate.Maximum = 10000;
|
pgbUpdate.Maximum = 10000;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
updateLabelCollection();
|
updateLabelCollection();
|
||||||
ExpertMode(cbxExpert.Checked);
|
ExpertMode(cbxExpert.Checked);
|
||||||
// dgvBatch.Size = new Size(SizeOfMeter, dgvBatch.Size.Height);
|
// dgvBatch.Size = new Size(SizeOfMeter, dgvBatch.Size.Height);
|
||||||
pgbEndTime.Maximum = (Int32)predictedTs;
|
pgbEndTime.Maximum = (Int32)predictedTs;
|
||||||
}));
|
}));
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1810,9 +1784,9 @@ namespace XylemCommonUiLegacyGenCtl
|
|||||||
currentMode = Mode.View;
|
currentMode = Mode.View;
|
||||||
TryInvoke(new Action(() =>
|
TryInvoke(new Action(() =>
|
||||||
{
|
{
|
||||||
//this.RefreshTimer.Enabled = false;
|
//this.RefreshTimer.Enabled = false;
|
||||||
//this.pnlEndTime.Visible = false;
|
//this.pnlEndTime.Visible = false;
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1821,8 +1795,8 @@ namespace XylemCommonUiLegacyGenCtl
|
|||||||
|
|
||||||
TryInvoke(new Action(() =>
|
TryInvoke(new Action(() =>
|
||||||
{
|
{
|
||||||
//this.RefreshTimer.Enabled = true;
|
//this.RefreshTimer.Enabled = true;
|
||||||
}));
|
}));
|
||||||
|
|
||||||
stopWatch.Start();
|
stopWatch.Start();
|
||||||
}
|
}
|
||||||
@@ -1870,8 +1844,8 @@ namespace XylemCommonUiLegacyGenCtl
|
|||||||
{
|
{
|
||||||
if (item is GenesisMeter)
|
if (item is GenesisMeter)
|
||||||
{
|
{
|
||||||
// ((GenesisMeter)item).();
|
// ((GenesisMeter)item).();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Thread.Sleep(1000);
|
Thread.Sleep(1000);
|
||||||
@@ -1939,8 +1913,8 @@ namespace XylemCommonUiLegacyGenCtl
|
|||||||
genesis.QuickLogin();
|
genesis.QuickLogin();
|
||||||
genesis.BuildAndCheckCalibFactorsAllChannels(StoreRefVolume, StoreTestTimeRef, calFactor);
|
genesis.BuildAndCheckCalibFactorsAllChannels(StoreRefVolume, StoreTestTimeRef, calFactor);
|
||||||
|
|
||||||
//genesis.SetCalibFactorsAllChannels(true);
|
//genesis.SetCalibFactorsAllChannels(true);
|
||||||
genesis.SetCalibFactorsAllChannels();
|
genesis.SetCalibFactorsAllChannels();
|
||||||
|
|
||||||
return new Tuple<Boolean, Int32>(true, baseMeter.Slot);
|
return new Tuple<Boolean, Int32>(true, baseMeter.Slot);
|
||||||
}
|
}
|
||||||
@@ -1961,8 +1935,8 @@ namespace XylemCommonUiLegacyGenCtl
|
|||||||
|
|
||||||
var t = new Task(() =>
|
var t = new Task(() =>
|
||||||
{
|
{
|
||||||
// ReSharper disable once CoVariantArrayConversion
|
// ReSharper disable once CoVariantArrayConversion
|
||||||
Task.WaitAll(taskList.ToArray());
|
Task.WaitAll(taskList.ToArray());
|
||||||
|
|
||||||
Boolean overallResult = true;
|
Boolean overallResult = true;
|
||||||
foreach (var item in taskList)
|
foreach (var item in taskList)
|
||||||
@@ -2205,5 +2179,29 @@ namespace XylemCommonUiLegacyGenCtl
|
|||||||
CtlBatchStateMachine();
|
CtlBatchStateMachine();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetReadyForMesuremnt()
|
||||||
|
{
|
||||||
|
_currentState = BatchState.ReadyForMesuremnt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean MeasurementIsActive()
|
||||||
|
{
|
||||||
|
return _currentState == BatchState.MeasurementActive;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean MeasurementIsCompleted()
|
||||||
|
{
|
||||||
|
return _currentState == BatchState.MeasurementCompleted;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean MetersArePrepared()
|
||||||
|
{
|
||||||
|
return _currentState == BatchState.MetersPrepared;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean IsReadyForMesuremnt()
|
||||||
|
{
|
||||||
|
return _currentState == BatchState.ReadyForMesuremnt;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user