Legacy messument now wihzout tasks

This commit is contained in:
Roland Drabesch
2023-01-02 17:23:24 +01:00
parent 4a9d300f4a
commit 443c984655
4 changed files with 226 additions and 204 deletions
+1 -1
View File
@@ -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="D:\Projekte\SENSUS_GitLab\laa_production\Common\Service\MeterProcessState" /> <virtualDirectory path="/" physicalPath="C:\Users\drabesch_ro\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" />
@@ -43,7 +43,7 @@ namespace CordonelPreadjustmentUi.Processes.Actions
bool skipMan = false; bool skipMan = false;
if (pp.Setting.GetTempUseTempFlansh() || TempMeterStateCtls.Any(a => a.IsEnabled)) if (pp.Setting.GetTempUseTempFlansh() || TempMeterStateCtls.Any(a => a.IsEnabled))
{ {
skipMan = true; skipMan = false;
//aoutmatic //aoutmatic
decimal avgTemp = 0; decimal avgTemp = 0;
int TempFlanshCount = 0; int TempFlanshCount = 0;
@@ -55,6 +55,7 @@ namespace CordonelPreadjustmentUi.Processes.Actions
{ {
avgTemp = avgTemp + avgTempCtls.GetTemperature(); avgTemp = avgTemp + avgTempCtls.GetTemperature();
TempFlanshCount = TempFlanshCount + 1; TempFlanshCount = TempFlanshCount + 1;
skipMan = true;
} }
} }
@@ -1 +1 @@
1a3d4919c9c702245832d925951f2b7cb72fc333 5ed75d99ee45ff67821090f1b3dbb001dd9e4fe3
+222 -201
View File
@@ -50,6 +50,19 @@ namespace XylemCommonUiLegacyGenCtl
AutoRefresh, AutoRefresh,
View, View,
} }
private enum BatchState
{
Idle,
Init,
Error,
PrepeareGui,
PrepeareMessuremnt,
MessuremntIsRunning,
MessuremntIsDone,
}
private BatchState currentState = BatchState.Idle;
private Mode currentMode = Mode.View; private Mode currentMode = Mode.View;
private ILogger _logger; private ILogger _logger;
private Dictionary<int, LegacyCalibrationResult> CalibrationIsDone = new Dictionary<int, LegacyCalibrationResult>(); private Dictionary<int, LegacyCalibrationResult> CalibrationIsDone = new Dictionary<int, LegacyCalibrationResult>();
@@ -123,6 +136,7 @@ namespace XylemCommonUiLegacyGenCtl
this.grbInfo.SuspendLayout(); this.grbInfo.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
this.Disposed += CtlBatch_Disposed; this.Disposed += CtlBatch_Disposed;
currentState = BatchState.Init;
_logger.Info($"construct ctlBatch end"); _logger.Info($"construct ctlBatch end");
} }
@@ -622,14 +636,36 @@ namespace XylemCommonUiLegacyGenCtl
} }
public void AddAllMeters() public void AddAllMeters()
{ {
setBusy(true, "alle Zähler hinzufügen");
foreach (var item in TestsetuptContainer.meterTestSettings) foreach (var item in TestsetuptContainer.meterTestSettings)
{ {
if (item != null && (item.FlowAdjustment || item.FlowTesting)) if (item != null && (item.FlowAdjustment || item.FlowTesting))
{ {
AddMeter(item.SerialNr, item.Slot, true); 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);
batch.AddMeter(meter);
meter.Login();
meter.EnableAutoLogon();
meter.WriteLog("Add from AddAllMeters");
}
} }
} }
setBusy(false);
} }
public void AddMeter(string serialNumber, int slot, bool SkipPrepearation) public void AddMeter(string serialNumber, int slot, bool SkipPrepearation)
{ {
@@ -649,8 +685,6 @@ namespace XylemCommonUiLegacyGenCtl
meter.SetupFromConfigFile(slot, false, _useRequest, true); meter.SetupFromConfigFile(slot, false, _useRequest, true);
meter.LogRawData(_rawLogging); meter.LogRawData(_rawLogging);
meter.RequestProtocol.AdditionalRetryTimeoutMs = 100;
meter.SkipPreparationForTestBench = SkipPrepearation;
meter.EnableAutoLogon(); meter.EnableAutoLogon();
batch.AddMeter(meter); batch.AddMeter(meter);
@@ -893,101 +927,87 @@ namespace XylemCommonUiLegacyGenCtl
WarningMetersAlarms = new ConcurrentDictionary<int, GenesisMeter.Alarm>(); WarningMetersAlarms = new ConcurrentDictionary<int, GenesisMeter.Alarm>();
ErrorMetersAlarms = new ConcurrentDictionary<int, GenesisMeter.Alarm>(); ErrorMetersAlarms = new ConcurrentDictionary<int, GenesisMeter.Alarm>();
setBusy(true, $"Bereite Zähler vor"); setBusy(true, $"Bereite Zähler vor");
Task.Factory.StartNew(() =>
initAction(meterDn, refPulseValence, predictedQFlow, predictedTs, refError, isFlyingStartStop);
_isAdjustment = isAdjustment;
if (isAdjustment)
{ {
CalibrationIsDone = new Dictionary<int, LegacyCalibrationResult>();
initAction(meterDn, refPulseValence, predictedQFlow, predictedTs, refError, isFlyingStartStop); }
_isAdjustment = isAdjustment; foreach (var meter in batch.ListOfMeters)
var listOfTasks = new List<Task>(); {
var listOfTasksInit = new List<Task>(); _logger.Trace($"Meter {meter.Slot} Start PrepareMeters(meterDn={meterDn},refPulseValence={refPulseValence},predictedQFlow ={predictedQFlow},predictedTs={predictedTs},refError={refError},isAdjustment={isAdjustment},IsFlyingStartStop={IsFlyingStartStop}");
var settings = TestsetuptContainer.meterTestSettings.First(f => f != null && f.Slot == meter.Slot);
//if (isAdjustment && !settings.FlowAdjustment)
//{
// continue;
//}
//if (!isAdjustment && !settings.FlowTesting)
//{
// continue;
//}
if (!(meter is GenesisMeter genmeter))
{
continue;
}
//todo : roland check SkipPrepearationForTestBench
//((GenesisMeter)meter).SkipPrepearationForTestBench = true;
_logger.Debug($"Add Meter To Grid {meter.Slot}");
AddMeterToGrid(meter.Slot, meter.SerialNumber, genmeter.PcbId, isFlyingStartStop);
if (isAdjustment) if (isAdjustment)
{ {
CalibrationIsDone = new Dictionary<int, LegacyCalibrationResult>(); CalibrationIsDone.Add(meter.Slot, LegacyCalibrationResult.Pending);
} }
foreach (var meter in batch.ListOfMeters)
if (_useRequest)
{ {
_logger.Trace($"Meter {meter.Slot} Start PrepareMeters(meterDn={meterDn},refPulseValence={refPulseValence},predictedQFlow ={predictedQFlow},predictedTs={predictedTs},refError={refError},isAdjustment={isAdjustment},IsFlyingStartStop={IsFlyingStartStop}"); var r = ((GenesisMeter)meter).ReLogin();
((GenesisMeter)meter).WriteLog("Prepare meter for Measurement/Adjustment ");
var settings = TestsetuptContainer.meterTestSettings.First(f => f != null && f.Slot == meter.Slot); _logger.Debug($"Prepare Meters for Measurement/Adjustment");
if (isAdjustment && !settings.FlowAdjustment)
{
continue;
}
if (!isAdjustment && !settings.FlowTesting)
{
continue;
}
if (!(meter is GenesisMeter genmeter))
{
continue;
}
//((GenesisMeter)meter).SkipPrepearationForTestBench = true;
_logger.Debug($"Add Meter To Grid {meter.Slot}");
TryInvoke(new Action(() =>
{
AddMeterToGrid(meter.Slot, meter.SerialNumber, genmeter.PcbId, isFlyingStartStop);
}));
if (!_useRequest)
{
continue;
}
if (isAdjustment) if (isAdjustment)
{ {
CalibrationIsDone.Add(meter.Slot, LegacyCalibrationResult.Pending); ((GenesisMeter)meter).InitCalibration();
} }
else
listOfTasksInit.Add(new Task(() =>
{ {
var r = ((GenesisMeter)meter).ReLogin(); ((GenesisMeter)meter).InitMeasurement();
if (_useRequest) }
{ //// Reboot, HighPeresur
_logger.Debug($"Prepare Meters for Measurement/Adjustment"); ////ReadOut Alarms, Show and reset
if (isAdjustment) //_logger.Debug($"Start CheckMetersAreReadyForTest");
{
((GenesisMeter)meter).InitCalibration();
}
//else
//{
// ((GenesisMeter)meter).InitMeasurement();
//}
//// Reboot, HighPeresur
////ReadOut Alarms, Show and reset
//_logger.Debug($"Start CheckMetersAreReadyForTest");
}
}));
} }
listOfTasksInit.ForEach(t => t.Start());
Task.WaitAll(listOfTasksInit.ToArray());
TryInvoke(new Action(() =>
{
UpdateBatch();
}));
//CheckMetersAreReadyForTestStatic();
setBusy(false, "", true);
}).ContinueWith(delegate
}
TryInvoke(new Action(() =>
{ {
UpdateBatch();
}));
setBusy(false); CheckMetersAreReadyForTest();
setBusy(false);
});
} }
catch (Exception ex) catch (Exception ex)
{ {
@@ -998,85 +1018,85 @@ namespace XylemCommonUiLegacyGenCtl
private void CheckMetersAreReadyForTestStatic() private void CheckMetersAreReadyForTestStatic()
{ {
//var listOfTasks = new List<Task>(); var listOfTasks = new List<Task>();
//foreach (var meter in batch.ListOfMeters) foreach (var meter in batch.ListOfMeters)
//{ {
// listOfTasks.Add(new Task(() => listOfTasks.Add(new Task(() =>
// { {
// if (!(meter is GenesisMeter)) if (!(meter is GenesisMeter))
// { {
// return; return;
// } }
// var i = 1; var i = 1;
// var sleepTimeS = 1; var sleepTimeS = 1;
// _logger.Debug($" Meter {meter.Slot} CheckMetersAreReadyForTest loops {i};delay {sleepTimeS}S"); _logger.Debug($" Meter {meter.Slot} CheckMetersAreReadyForTest loops {i};delay {sleepTimeS}S");
// ((GenesisMeter)meter).StartMeasurement(); ((GenesisMeter)meter).StartMeasurement();
// var MeterReadyForTest = false; var MeterReadyForTest = false;
// while (i <= 7) while (i <= 7 && !MeterReadyForTest)
// { {
// ((GenesisMeter)meter).RequestIntermediateMeasurementState(0); ((GenesisMeter)meter).RequestIntermediateMeasurementState(0);
// Thread.Sleep(i * 2000); Thread.Sleep(i * 2000);
// i = i + 1; i = i + 1;
// try try
// { {
// var state = ((GenesisMeter)meter).GetMeasurementState(0); var state = ((GenesisMeter)meter).GetMeasurementState(0);
// if (state != MeasurementStates.IsWaitingForStartData && state != MeasurementStates.NotStarted) if (state != MeasurementStates.IsWaitingForStartData && state != MeasurementStates.NotStarted)
// { {
// var r = ((GenesisMeter)meter).GetMainMeasurementResult(null, null, true); var r = ((GenesisMeter)meter).GetMainMeasurementResult(null, null, true);
// if (r.DutVolumeCm != 0) if (r.DutVolumeCm != 0)
// { {
// _logger.Info($" Meter {meter.Slot} Meter has progress (Volume{r.DutVolumeCm})"); _logger.Info($" Meter {meter.Slot} Meter has progress (Volume{r.DutVolumeCm})");
// MeterReadyForTest = true; MeterReadyForTest = true;
// break; break;
// } }
// } }
// _logger.Info($" Meter {meter.Slot} Meter no update display; loops left {i}; state {state}"); _logger.Info($" Meter {meter.Slot} Meter no update display; loops left {i}; state {state}");
// } }
// catch (Exception) catch (Exception)
// { {
// } }
// TryInvoke(new Action(() => TryInvoke(new Action(() =>
// { {
// updateCell($"Status", meter.Slot, $"Warte auf Zählerstand wechsel ", Color.LightYellow); updateCell($"Status", meter.Slot, $"Warte auf Zählerstand wechsel ", Color.LightYellow);
// })); }));
// } }
// ((GenesisMeter)meter).StopMeasurement(); ((GenesisMeter)meter).StopMeasurement();
// if (!MeterReadyForTest) if (!MeterReadyForTest)
// { {
// //todo event remove meter //todo event remove meter
// _logger.Info($" Meter {meter.Slot} Meter has NO! progress"); _logger.Info($" Meter {meter.Slot} Meter has NO! progress");
// TryInvoke(new Action(() => TryInvoke(new Action(() =>
// { {
// updateCell($"Status", meter.Slot, $"Zählerstand wechsel nicht erfasst", Color.LightPink); updateCell($"Status", meter.Slot, $"Zählerstand wechsel nicht erfasst", Color.LightPink);
// })); }));
// } }
// })); }));
//} }
//listOfTasks.ForEach(t => t.Start()); listOfTasks.ForEach(t => t.Start());
//Task.WaitAll(listOfTasks.ToArray()); Task.WaitAll(listOfTasks.ToArray());
} }
@@ -1084,96 +1104,96 @@ namespace XylemCommonUiLegacyGenCtl
private void CheckMetersAreReadyForTest() private void CheckMetersAreReadyForTest()
{ {
//_logger.Trace($"CheckMetersAreReadyForTest"); _logger.Trace($"CheckMetersAreReadyForTest");
//TryInvoke(new Action(() => TryInvoke(new Action(() =>
//{ {
// lblAction.Text = "Warte auf Zählerstand wechsel von allen Zählern"; lblAction.Text = "Warte auf Zählerstand wechsel von allen Zählern";
//})); }));
//var listOfTasks = new List<Task>(); var listOfTasks = new List<Task>();
//foreach (var meter in batch.ListOfMeters) foreach (var meter in batch.ListOfMeters)
//{ {
// if (!(meter is GenesisMeter)) if (!(meter is GenesisMeter))
// { {
// if (!(meter is GenesisMeter)) if (!(meter is GenesisMeter))
// { {
// continue; continue;
// } }
// } }
// TryInvoke(new Action(() => TryInvoke(new Action(() =>
// { {
// updateCell($"Status", meter.Slot, $"Warte auf Zählerstand wechsel", Color.LightYellow); updateCell($"Status", meter.Slot, $"Warte auf Zählerstand wechsel", Color.LightYellow);
// })); }));
// listOfTasks.Add(new Task(() => listOfTasks.Add(new Task(() =>
// { {
// var i = 120; var i = 120;
// var sleepTimeS = 5; var sleepTimeS = 5;
// _logger.Debug($" Meter {meter.Slot} CheckMetersAreReadyForTest loops {i};delay {sleepTimeS}S"); _logger.Debug($" Meter {meter.Slot} CheckMetersAreReadyForTest loops {i};delay {sleepTimeS}S");
// ((GenesisMeter)meter).StartMeasurement(); ((GenesisMeter)meter).StartMeasurement();
// var MeterReadyForTest = false; var MeterReadyForTest = false;
// while (i >= 0) while (i >= 0)
// { {
// Thread.Sleep(sleepTimeS * 1000); Thread.Sleep(sleepTimeS * 1000);
// try try
// { {
// var r = ((GenesisMeter)meter).GetMainMeasurementResult(null, null, true); var r = ((GenesisMeter)meter).GetMainMeasurementResult(null, null, true);
// i = i - sleepTimeS; i = i - sleepTimeS;
// if (r.DutVolumeCm != 0) if (r.DutVolumeCm != 0)
// { {
// _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;
// } }
// else else
// { {
// _logger.Info($" Meter {meter.Slot} Meter no update display {r.DutVolumeCm}; loops left {i}"); _logger.Info($" Meter {meter.Slot} Meter no update display {r.DutVolumeCm}; loops left {i}");
// } }
// } }
// catch (Exception) catch (Exception)
// { {
// } }
// TryInvoke(new Action(() => TryInvoke(new Action(() =>
// { {
// updateCell($"Status", meter.Slot, $"Warte auf Zählerstand wechsel ", Color.LightYellow); updateCell($"Status", meter.Slot, $"Warte auf Zählerstand wechsel ", Color.LightYellow);
// })); }));
// } }
// ((GenesisMeter)meter).StopMeasurement(); ((GenesisMeter)meter).StopMeasurement();
// if (MeterReadyForTest) if (MeterReadyForTest)
// { {
// _logger.Info($" Meter {meter.Slot} Meter has NO! progress"); _logger.Info($" Meter {meter.Slot} Meter has NO! progress");
// TryInvoke(new Action(() => TryInvoke(new Action(() =>
// { {
// updateCell($"Status", meter.Slot, $"Zählerstand wechsel nicht erfasst", Color.LightPink); updateCell($"Status", meter.Slot, $"Zählerstand wechsel nicht erfasst", Color.LightPink);
// })); }));
// } }
// })); }));
//} }
//listOfTasks.ForEach(t => t.Start()); listOfTasks.ForEach(t => t.Start());
//Task.WaitAll(listOfTasks.ToArray()); Task.WaitAll(listOfTasks.ToArray());
} }
@@ -1197,6 +1217,7 @@ namespace XylemCommonUiLegacyGenCtl
} }
} }
currentMode = Mode.AutoRefresh; currentMode = Mode.AutoRefresh;
//this.RefeshTimer.Enabled = true; //this.RefeshTimer.Enabled = true;
} }
@@ -1858,7 +1879,7 @@ namespace XylemCommonUiLegacyGenCtl
try try
{ {
var genesis = (GenesisMeter)basemeter; var genesis = (GenesisMeter)basemeter;
genesis.ReLogin(); genesis.QuickLogin();
genesis.BuildAndCheckCalibFactorsAllChannels(StoreRefVolume, StoretestTimeRef, calfactor); genesis.BuildAndCheckCalibFactorsAllChannels(StoreRefVolume, StoretestTimeRef, calfactor);
//genesis.SetCalibFactorsAllChannels(true); //genesis.SetCalibFactorsAllChannels(true);