From 78e7f6eb162100f2c9c9f01bfd5fb7bc7b0a0ce3 Mon Sep 17 00:00:00 2001 From: Roland Drabesch Date: Tue, 3 Jan 2023 14:47:41 +0100 Subject: [PATCH] add task list for addallmeters --- Common/Ui/LegacyGenesisControl/ctlBatch.cs | 211 +++++++-------------- 1 file changed, 67 insertions(+), 144 deletions(-) diff --git a/Common/Ui/LegacyGenesisControl/ctlBatch.cs b/Common/Ui/LegacyGenesisControl/ctlBatch.cs index 3bca3e05..51c0549e 100644 --- a/Common/Ui/LegacyGenesisControl/ctlBatch.cs +++ b/Common/Ui/LegacyGenesisControl/ctlBatch.cs @@ -701,31 +701,35 @@ namespace XylemCommonUiLegacyGenCtl { setBusy(true, "alle Zähler hinzufügen"); - + var listOfTasks = new List(); foreach (var item in TestSetupContainer.meterTestSettings) { - - if (item != null && (item.FlowAdjustment || item.FlowTesting)) + listOfTasks.Add(new Task(() => { - if (!batch.ListOfMeters.Any(f => f.Slot == item.Slot)) + + if (item != null && (item.FlowAdjustment || item.FlowTesting)) { + if (!batch.ListOfMeters.Any(f => f.Slot == item.Slot)) + { - var meter = new GenesisMeter(); - meter.SerialNumber = item.SerialNr; - meter.CurrentActionText = "FlowTest"; - meter.SetupFromConfigFile(item.Slot, false, _useRequest, true); - meter.LogRawData(_rawLogging); + var meter = new GenesisMeter(); + meter.SerialNumber = item.SerialNr; + meter.CurrentActionText = "FlowTest"; + meter.SetupFromConfigFile(item.Slot, false, _useRequest, true); + meter.LogRawData(_rawLogging); - batch.AddMeter(meter); - meter.Login(); - meter.EnableAutoLogon(); - meter.WriteLog("Add from AddAllMeters"); + batch.AddMeter(meter); + meter.Login(); + meter.EnableAutoLogon(); + meter.WriteLog("Add from AddAllMeters"); + } } - } + })); } - + listOfTasks.ForEach(t => t.Start()); + Task.WaitAll(listOfTasks.ToArray()); setBusy(false); @@ -987,13 +991,17 @@ namespace XylemCommonUiLegacyGenCtl { CalibrationIsDone = new Dictionary(); } - + var listOfTasks = new List(); foreach (var meter in batch.ListOfMeters) { + + + + _logger.Trace($"Meter {meter.Slot} Start PrepareMeters(meterDn={meterDn}," + - $"refPulseValence={refPulseValence},predictedQFlow ={predictedQFlow}," + - $"predictedTs={predictedTs},refError={refError},isAdjustment={isAdjustment}," + - $"IsFlyingStartStop={IsFlyingStartStop}"); + $"refPulseValence={refPulseValence},predictedQFlow ={predictedQFlow}," + + $"predictedTs={predictedTs},refError={refError},isAdjustment={isAdjustment}," + + $"IsFlyingStartStop={IsFlyingStartStop}"); if (!(meter is GenesisMeter genesisMeter)) { @@ -1013,21 +1021,32 @@ namespace XylemCommonUiLegacyGenCtl if (_useRequest) { - ((GenesisMeter)meter).ReLogin(); - ((GenesisMeter)meter).WriteLog("Prepare meter for Measurement/Adjustment "); - _logger.Debug("Prepare Meters for Measurement/Adjustment"); - if (isAdjustment) + listOfTasks.Add(new Task(() => { - ((GenesisMeter)meter).InitCalibration(); - } - else - { - ((GenesisMeter)meter).InitMeasurement(); - } - //// Reboot, HighPressure - ////ReadOut Alarms, Show and reset - //_logger.Debug($"Start CheckMetersAreReadyForTest"); + ((GenesisMeter)meter).ReLogin(); + ((GenesisMeter)meter).WriteLog("Prepare meter for Measurement/Adjustment "); + _logger.Debug("Prepare Meters for Measurement/Adjustment"); + if (isAdjustment) + { + ((GenesisMeter)meter).InitCalibration(); + } + else + { + ((GenesisMeter)meter).InitMeasurement(); + } + //// Reboot, HighPressure + ////ReadOut Alarms, Show and reset + //_logger.Debug($"Start CheckMetersAreReadyForTest"); + + })); } + + } + if (listOfTasks.Any()) + { + + listOfTasks.ForEach(t => t.Start()); + Task.WaitAll(listOfTasks.ToArray()); } TryInvoke(new Action(UpdateBatch)); @@ -1046,100 +1065,9 @@ namespace XylemCommonUiLegacyGenCtl } - private void CheckMetersAreReadyForTestStatic() - { - var listOfTasks = new List(); - - 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() { - _logger.Trace("CheckMetersAreReadyForTest"); - TryInvoke(new Action(() => - { - lblAction.Text = @"Warte auf Zählerstand wechsel von allen Zählern"; - - })); + setBusy(false, @"Warte auf Zählerstand wechsel von allen Zählern", true); var listOfTasks = new List(); @@ -1155,37 +1083,41 @@ namespace XylemCommonUiLegacyGenCtl TryInvoke(new Action(() => { - updateCell("Status", meter.Slot, "Warte auf Zählerstand wechsel", Color.LightYellow); })); listOfTasks.Add(new Task(() => { - var i = 120; + var i = 60; - var sleepTimeS = 5; + var sleepTimeS = 10; _logger.Debug($" Meter {meter.Slot} CheckMetersAreReadyForTest loops {i};delay {sleepTimeS}S"); ((GenesisMeter)meter).StartMeasurement(); var MeterReadyForTest = false; - while (i >= 0) + while (i >= 0 && !MeterReadyForTest) { - Thread.Sleep(sleepTimeS * 1000); + new System.Threading.ManualResetEvent(false).WaitOne(sleepTimeS * 1000); + try { var r = ((GenesisMeter)meter).GetMainMeasurementResult(null, null, true); i -= sleepTimeS; - - if (r.DutVolumeCm != 0.0d) + if (r.DutStartRecord.GetVolumeCm() != r.DutStopRecord.GetVolumeCm()) { _logger.Info($" Meter {meter.Slot} Meter has progress {r.DutVolumeCm}"); 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; break; } + TryInvoke(new Action(() => + { + updateCell($"Status", meter.Slot, $"Kein Zählerstand wechsel warte noch {i} s", Color.LimeGreen); + })); + _logger.Info($" Meter {meter.Slot} display frozen {r.DutVolumeCm} ccm; loops left {i} s"); } catch (Exception ex) @@ -1194,17 +1126,10 @@ namespace XylemCommonUiLegacyGenCtl } - - - TryInvoke(new Action(() => - { - updateCell("Status", meter.Slot, "Warte auf Zählerstand wechsel ", Color.LightYellow); - })); - } ((GenesisMeter)meter).StopMeasurement(); - if (MeterReadyForTest) + if (!MeterReadyForTest) { _logger.Info($" Meter {meter.Slot} Meter has NO! progress"); TryInvoke(new Action(() => @@ -2047,7 +1972,7 @@ namespace XylemCommonUiLegacyGenCtl var text = "-"; if (!double.IsNaN(Value)) { - text = string.Format("{{0:N" + digits + "}}", Value); + text = string.Format("{0:N" + digits + "}", Value); } return text; @@ -2057,10 +1982,8 @@ namespace XylemCommonUiLegacyGenCtl { if (IsHandleCreated) { - Invoke(d); + BeginInvoke(d); } - - } void ICtlBatch.Dispose(Boolean fromCode)