This commit is contained in:
Thomas Wiedebusch
2022-11-02 08:37:40 +01:00
13 changed files with 549 additions and 470 deletions
@@ -45,8 +45,8 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
private void PreMeasurement()
{
//if (!SkipPreparationForTestBench)
//{
if (!SkipPreparationForTestBench)
{
//TODO set display unit
//TODO calculated overflow volume for display
@@ -89,11 +89,11 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
WriteRegister(Register.Genesisflow.StoreConfiguration, 1);
//}
//else
//{
// WriteLog($"wait for measurement is starting");
//}
}
else
{
WriteLog($"wait for measurement is starting");
}
ProcessStatus = ProcessState.WaitForMeasurement;
}
File diff suppressed because it is too large Load Diff
@@ -7,6 +7,7 @@
{
EMEA_433,
EMEA_868,
NA
NA,
EMEA
}
}
@@ -44,6 +44,8 @@ namespace Xylem.Common.Logic.ProductionOrderCore.OrderData
}
var radioParams = OrderRadioParameter.GetRadioParams(pcbID, connectionString);
if (radioParams.RadioAddress != 0)
{
ret.Add(new ProgrammingParameters("SENSUSRADIO_RadioAddress", BitConverter.GetBytes(radioParams.RadioAddress).Reverse().ToArray()));
@@ -64,20 +66,7 @@ namespace Xylem.Common.Logic.ProductionOrderCore.OrderData
ret.Add(new ProgrammingParameters("SENSUSRADIO_ImpedanceCodeNew", BitConverter.GetBytes(radioParams.ImpedanceCodeNew).Reverse().ToArray()));
ret.Add(new ProgrammingParameters("SENSUSRADIO_ImpedanceCodeOption", BitConverter.GetBytes(radioParams.ImpedanceCodeOption).Reverse().ToArray()));
}
if (orderNr == 3144128)
{
orderNr = 3179323;
}
if (orderNr == 3148219)
{
orderNr = 3179323;
}
var rawVako = VakoDbAdapter.GetRawVako(connectionString, orderNr);
var rawMapping = VakoDbAdapter.GetVakoMapping(connectionString, rawVako.Type);
var vakoData = VakoParser.Parse(rawVako, rawMapping);
@@ -141,8 +130,13 @@ namespace Xylem.Common.Logic.ProductionOrderCore.OrderData
ret.Add(new ProgrammingParameters(row["RegisterName"].ToString(), RegisterConverter.ConvertFrom(Convert.ToInt32(row["RegisterValue"]))));
}
}
var ident = "GNS";
if (meterSize >= 10)
{
ident = "GNSU";
}
var retStr = LocalWebRequest.GetRequest($"http://sla12iis01/csdcore/csdservice/getstampings?CsdIdent={csdIdent}&GroupId=1&ProductIdent=GNS&ProductDn={rawVako.Dn}&ShowOnlyValidStampings=0", 8000);
var retStr = LocalWebRequest.GetRequest($"http://sla12iis01/csdcore/csdservice/getstampings?CsdIdent={csdIdent}&GroupId=1&ProductIdent={ident}&ProductDn={rawVako.Dn}&ShowOnlyValidStampings=0", 8000);
var retListRealCsd = JsonConvert.DeserializeObject<List<CsdParameterResult>>(retStr);
if (retListRealCsd.Any())
{
+18 -12
View File
@@ -416,9 +416,10 @@ namespace ProductionUiCordonel
}
tmrAutoDetect.Enabled = Settings.AutoDetect;
}
ProductionProcessCheckOrderNumber orderBarcode;
ProductionProcessCheckSerialNumber serialBarcode;
public void SetUpBlank(bool retry, bool abort =false)
private ProductionProcessCheckOrderNumber orderBarcode;
private ProductionProcessCheckSerialNumber serialBarcode;
public void SetUpBlank(bool retry, bool abort = false)
{
pc.Processes = new List<IProductionProcess>();
@@ -431,7 +432,7 @@ namespace ProductionUiCordonel
orderBarcode = new ProductionProcessCheckOrderNumber(OrderNumber);
orderBarcode = new ProductionProcessCheckOrderNumber(0);
orderBarcode.isDone += CheckOrder_isDone;
@@ -448,20 +449,25 @@ namespace ProductionUiCordonel
//pc.Processes.Add(new ProductionProcessFinalParameterizationFix()); //[x] [x] []
pc.Processes.Add(new ProductionProcessFinalParameterizationVakoCsd(connectProcess)); //[x] [x] []
pc.Processes.Add(new ProductionProcessFinalParameterizationVakoCsd(connectProcess, RadioAdress != 0)); //[x] [x] []
if (RadioAdress != 0)
{
var radioCheck = new ProductionProcessRadioCheck();
orderBarcode.isDone += delegate (object sender, EventArgs e)
{
radioCheck.Ordernumber = ((ProductionProcessCheckOrderNumber)sender).Ordernumber;
};
pc.Processes.Add(radioCheck); //[] [] []
}
//pc.Processes.Add(new ProductionProcessSpecialConfig()); //[x] [x] []
pc.Processes.Add(new ProductionProcessShippingMode(true)); //[] [] []
pc.Processes.Add(new ProductionProcessShippingMode(true, RadioAdress != 0)); //[] [] []
pc.Processes.Add(new ProductionProcessFinalParameterizationVakoCsd(connectProcess)); //[x] [x] []
pc.Processes.Add(new ProductionProcessShippingMode(false)); //[] [] []
pc.Processes.Add(new ProductionProcessFinalParameterizationVakoCsd(connectProcess, RadioAdress != 0)); //[x] [x] []
pc.Processes.Add(new ProductionProcessShippingMode(false, RadioAdress != 0)); //[] [] []
pc.Processes.Add(new ProductionProcessFullReadOut()); //[x] [x] [x]
pc.Processes.Add(new ProductionProcessLogOff()); //[] [] []
@@ -491,7 +497,7 @@ namespace ProductionUiCordonel
{
runDetect();
}
else if(abort)
else if (abort)
{
dpSubProcess.Children.Clear();
}
@@ -513,7 +519,7 @@ namespace ProductionUiCordonel
}
private void allProcessesDone(object sender, Tuple<bool,bool, bool> e)
private void allProcessesDone(object sender, Tuple<bool, bool, bool> e)
{
detectIsLocked = false;
if (e.Item3)
@@ -521,7 +527,7 @@ namespace ProductionUiCordonel
printErrorNote();
}
SetUpBlank(e.Item1,e.Item2);
SetUpBlank(e.Item1, e.Item2);
}
+1 -3
View File
@@ -7,9 +7,7 @@
xmlns:uc="clr-namespace:ProductionUiCordonel"
mc:Ignorable="d"
Title="Cordonel Production UI" MinHeight="500" MinWidth="400" Height="600" Width="644" Initialized="Window_Initialized" Closing="Window_Closing">
<Window.Resources>
<local:QuantityToBackgroundConverter x:Key="BackgroundConverter" />
</Window.Resources>
<DockPanel HorizontalAlignment="Right" Width="634" Height="569" VerticalAlignment="Top" Margin="0,0,2,0">
<ToolBarTray DockPanel.Dock="Top">
<ToolBar>
+25 -25
View File
@@ -23,35 +23,35 @@ using Xylem.Common.Logic.SoftwareAccessHelper;
namespace ProductionUiCordonel
{
public class QuantityToBackgroundConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var dc = DisplayCodes.None;
//public class QuantityToBackgroundConverter : IValueConverter
//{
// public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
// {
// var dc = DisplayCodes.None;
if (DisplayCodes.TryParse(value.ToString(), out dc))
{
string hex = "";
int intValue;
if (int.TryParse(value.ToString(), out intValue))
{
hex = intValue.ToString("X");
}
return $"{dc} ({hex})";
}
else
{
return "?";
}
// if (DisplayCodes.TryParse(value.ToString(), out dc))
// {
// string hex = "";
// int intValue;
// if (int.TryParse(value.ToString(), out intValue))
// {
// hex = intValue.ToString("X");
// }
// return $"{dc} ({hex})";
// }
// else
// {
// return "?";
// }
}
// }
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
// public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
// {
// throw new NotImplementedException();
// }
//}
/// <summary>
/// Interaction logic for MainWindow.xaml
@@ -150,8 +150,7 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
}
reTrysLeft = reTrysLeft - 1;
currentProcessState = ProductionProcessState.Done;
return;
currentProcessState = ProductionProcessState.Error;
}
catch (Exception ex)
{
@@ -69,7 +69,8 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
public override async void StartProcess()
{
try
{
var a = LocalWebRequest.GetRequest($"{ServiceUrls.GenesisFinalCheckServiceUrl()}GetSingleVakoKey?ProductionOrderNumber={OrderNumber}&KeyName=C_GEN_PULS");
var myJsonResponse = Newtonsoft.Json.JsonConvert.DeserializeObject<VakoKeyValue>(a);
if (myJsonResponse.Value.ToLower() == "q" || myJsonResponse.Value.ToLower() == "k")
@@ -80,6 +81,12 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
{
StepDone();
}
}
catch (Exception)
{
UserControl.SetDesc("Bitte den Auftrag prüfen ob ein Pulse Module verbaut werden soll");
}
@@ -15,14 +15,14 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
{
private UcPlain UserControl;
private ProductionProcessConnect connectProcess;
private bool hasRadio;
public ProductionProcessFinalParameterizationVakoCsd(ProductionProcessConnect connectProcess)
public ProductionProcessFinalParameterizationVakoCsd(ProductionProcessConnect connectProcess, bool registerHasRadio = true)
{
this.connectProcess = connectProcess;
name = "Kunden Parametrierung";
currentProcessState = ProductionProcessState.Waiting;
hasRadio = registerHasRadio;
}
public override void InitUserControl()
@@ -124,7 +124,7 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
}
//todo: find a better sln for SENSUSRADIO_EncryptionKey
//SENSUSRADIO_EncryptionKey dont reserve SENSUSRADIO_EncryptionKey!
if (item.RegisterName.ToLower().Contains("displaypow".ToLower()) || item.RegisterName.ToLower().Contains("METROLOGYASST_FlowPoint".ToLower()) )
if (item.RegisterName.ToLower().Contains("displaypow".ToLower()) || item.RegisterName.ToLower().Contains("METROLOGYASST_FlowPoint".ToLower()))
{
overAllResult.Add(_currentGenesis_WriteRegister(item.RegisterName, new byte[] { item.RegisterValue.ToArray()[0] }, true, true));
}
@@ -184,16 +184,14 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
overAllResult.Add(_currentGenesis_WriteRegister("NFC_EraseRMA",
(new Byte[] { 0x00, 0x00, 0x00, 0x01 }).Reverse().ToArray(), true, false));
if (hasRadio)
{
overAllResult.Add(_currentGenesis_WriteRegister("PERIODICLOG_ResetCounter",
(new Byte[] { 0x00, 0x00, 0x00, 0x00 }).Reverse().ToArray(), true, false));
overAllResult.Add(_currentGenesis_WriteRegister("GENESISFLOW_SealDisplay",
(new Byte[] { 0x00, 0x00, 0x00, 0x01 }).Reverse().ToArray(), true, true));
}
var ret = true;
int done = 0;
@@ -210,7 +208,7 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
}
else
{
if (cTask.Result.Item1.ToLower().Contains("Metersize".ToLower()) || cTask.Result.Item1.ToLower().Contains("CUSTOMER_ExcessFlowVolumeThreshold".ToLower()) || cTask.Result.Item1.ToLower().Contains("NFC_EraseRMA".ToLower()) || cTask.Result.Item1.ToLower() == "SENSUSRADIO_MetroRadioLifeTimeCounter".ToLower() || cTask.Result.Item1.ToLower() == "CUSTOMER_LeakFlowThreshold".ToLower())
if (cTask.Result.Item1.ToLower().Contains("Metersize".ToLower()) || cTask.Result.Item1.ToLower().Contains("NFC_EraseRMA".ToLower()) || cTask.Result.Item1.ToLower().Contains("CUSTOMER_ExcessFlowVolumeThreshold".ToLower()) || cTask.Result.Item1.ToLower().Contains("CUSTOMER_LeakFlowThreshold".ToLower()) || cTask.Result.Item1.ToLower() == "SENSUSRADIO_MetroRadioLifeTimeCounter".ToLower())
{
base.NewStatus($"Warnung!Schreiben des Parameter {cTask.Result.Item1} war nicht erfolgreich");
}
@@ -14,11 +14,13 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
{
private UcPlain UserControl;
private bool doRestart = false;
public ProductionProcessShippingMode(bool restart = false)
private bool hasRadio = false;
public ProductionProcessShippingMode(bool restart = false, bool registerHasRadio = true)
{
name = "Versandbereitschaft herstellen";
currentProcessState = ProductionProcessState.Waiting;
doRestart = restart;
hasRadio = registerHasRadio;
}
public override void InitUserControl()
{
@@ -50,8 +52,8 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
Meter.ResetAlarm(GenesisMeter.Alarm.EMPTY_PIPE);//(true, new byte[] { 0x00, 0x00, 0x00, 0x01 });
var useRadio = true;
if (useRadio)
if (hasRadio)
{
if (Meter.StoreAllConfigurations())
{
@@ -76,21 +78,21 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
{
if (doRestart)
{
var _meterResetPsu = new MeterResetPsu(Meter)
{
StoreConfigEnable = true
};
var rebootSucceeded = _meterResetPsu.MeterResetPsuExecute();
var CheckValuesAufterBoot = new List<Tuple<string, byte[]>>();
Thread.Sleep(10000);
Meter.Login();
CheckValuesAufterBoot.Add(new Tuple<string, byte[]>("METROLOGYASST_PulseLength", Meter.ReadRegister("METROLOGYASST_PulseLength")));
CheckValuesAufterBoot.Add(new Tuple<string, byte[]>("POWERMON_BatteryQuantity", Meter.ReadRegister("POWERMON_BatteryQuantity")));
CheckValuesAufterBoot.Add(new Tuple<string, byte[]>("GENESISFLOW_MeterSize", Meter.ReadRegister("GENESISFLOW_MeterSize")));
CheckValuesAufterBoot.Add(new Tuple<string, byte[]>("GENESISFLOW_CalFactor1", Meter.ReadRegister("GENESISFLOW_CalFactor1")));
CheckValuesAufterBoot.Add(new Tuple<string, byte[]>("SENSUSRADIO_RadioAddress", Meter.ReadRegister("SENSUSRADIO_RadioAddress")));
var _meterResetPsu = new MeterResetPsu(Meter)
{
StoreConfigEnable = true
};
var rebootSucceeded = _meterResetPsu.MeterResetPsuExecute();
Thread.Sleep(10000);
Meter.Login();
bool? hasDiffrences = null;
foreach (var item in CheckValuesAufterBoot)
@@ -136,8 +138,56 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
else
{
if (Meter.StoreAllConfigurations())
{
if (doRestart)
{
var CheckValuesAufterBoot = new List<Tuple<string, byte[]>>();
CheckValuesAufterBoot.Add(new Tuple<string, byte[]>("METROLOGYASST_PulseLength", Meter.ReadRegister("METROLOGYASST_PulseLength")));
CheckValuesAufterBoot.Add(new Tuple<string, byte[]>("POWERMON_BatteryQuantity", Meter.ReadRegister("POWERMON_BatteryQuantity")));
CheckValuesAufterBoot.Add(new Tuple<string, byte[]>("GENESISFLOW_MeterSize", Meter.ReadRegister("GENESISFLOW_MeterSize")));
CheckValuesAufterBoot.Add(new Tuple<string, byte[]>("GENESISFLOW_CalFactor1", Meter.ReadRegister("GENESISFLOW_CalFactor1")));
var _meterResetPsu = new MeterResetPsu(Meter)
{
StoreConfigEnable = true
};
var rebootSucceeded = _meterResetPsu.MeterResetPsuExecute();
Thread.Sleep(10000);
Meter.Login();
bool? hasDiffrences = null;
foreach (var item in CheckValuesAufterBoot)
{
if (!item.Item2.SequenceEqual(Meter.ReadRegister(item.Item1)))
{
hasDiffrences = true;
}
else
{
if (!hasDiffrences.HasValue)
{
hasDiffrences = false;
}
}
}
if (rebootSucceeded && hasDiffrences.HasValue && !hasDiffrences.Value)
{
base.currentProcessState = ProductionProcessState.Done;
}
else
{
Meter.WriteLog("reboot compare failed");
base.currentProcessState = ProductionProcessState.Error;
}
}
else
{
base.currentProcessState = ProductionProcessState.Done;
}
return;
}
}
+135 -138
View File
@@ -679,7 +679,7 @@ namespace XylemCommonUiLegacyGenCtl
{
TestsetuptContainer.meterTestSettings[slot] = new MeterTestSettings() { SerialNr = serialNumber, Slot = slot, FlowAdjustment = true, FlowTesting = true };
}
AddMeter(serialNumber, slot, false);
AddMeter(serialNumber, slot, true);
}
public void RemoveMeter(int slot)
@@ -957,13 +957,13 @@ namespace XylemCommonUiLegacyGenCtl
{
((GenesisMeter)meter).InitCalibration();
}
else
{
((GenesisMeter)meter).InitMeasurement();
}
// Reboot, HighPeresur
//ReadOut Alarms, Show and reset
_logger.Debug($"Start CheckMetersAreReadyForTest");
//else
//{
// ((GenesisMeter)meter).InitMeasurement();
//}
//// Reboot, HighPeresur
////ReadOut Alarms, Show and reset
//_logger.Debug($"Start CheckMetersAreReadyForTest");
}
}));
@@ -971,18 +971,15 @@ namespace XylemCommonUiLegacyGenCtl
}
listOfTasks.ForEach(t => t.Start());
Task.WaitAll(listOfTasks.ToArray());
listOfTasksInit.ForEach(t => t.Start());
Task.WaitAll(listOfTasksInit.ToArray());
TryInvoke(new Action(() =>
{
UpdateBatch();
}));
setBusy(false, "", true);
//CheckMetersAreReadyForTestStatic();
setBusy(false, "", true);
}).ContinueWith(delegate
{
@@ -1001,85 +998,85 @@ namespace XylemCommonUiLegacyGenCtl
private void CheckMetersAreReadyForTestStatic()
{
var listOfTasks = new List<Task>();
//var listOfTasks = new List<Task>();
foreach (var meter in batch.ListOfMeters)
{
listOfTasks.Add(new Task(() =>
{
if (!(meter is GenesisMeter))
{
return;
}
var i = 1;
//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;
// var sleepTimeS = 1;
// _logger.Debug($" Meter {meter.Slot} CheckMetersAreReadyForTest loops {i};delay {sleepTimeS}S");
// ((GenesisMeter)meter).StartMeasurement();
// var MeterReadyForTest = false;
while (i <= 7)
{
((GenesisMeter)meter).RequestIntermediateMeasurementState(0);
Thread.Sleep(i * 2000);
i = i + 1;
try
{
var state = ((GenesisMeter)meter).GetMeasurementState(0);
// while (i <= 7)
// {
// ((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)
{
// 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)
{
_logger.Info($" Meter {meter.Slot} Meter has progress (Volume{r.DutVolumeCm})");
// if (r.DutVolumeCm != 0)
// {
// _logger.Info($" Meter {meter.Slot} Meter has progress (Volume{r.DutVolumeCm})");
MeterReadyForTest = true;
break;
}
// MeterReadyForTest = true;
// 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(() =>
{
updateCell($"Status", meter.Slot, $"Warte auf Zählerstand wechsel ", Color.LightYellow);
}));
// TryInvoke(new Action(() =>
// {
// updateCell($"Status", meter.Slot, $"Warte auf Zählerstand wechsel ", Color.LightYellow);
// }));
}
((GenesisMeter)meter).StopMeasurement();
// }
// ((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);
}));
}
// 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());
//listOfTasks.ForEach(t => t.Start());
//Task.WaitAll(listOfTasks.ToArray());
}
@@ -1087,96 +1084,96 @@ namespace XylemCommonUiLegacyGenCtl
private void CheckMetersAreReadyForTest()
{
_logger.Trace($"CheckMetersAreReadyForTest");
TryInvoke(new Action(() =>
{
lblAction.Text = "Warte auf Zählerstand wechsel von allen Zählern";
//_logger.Trace($"CheckMetersAreReadyForTest");
//TryInvoke(new Action(() =>
//{
// 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))
{
continue;
}
}
// if (!(meter is GenesisMeter))
// {
// if (!(meter is GenesisMeter))
// {
// 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(() =>
{
var i = 120;
// listOfTasks.Add(new Task(() =>
// {
// var i = 120;
var sleepTimeS = 5;
_logger.Debug($" Meter {meter.Slot} CheckMetersAreReadyForTest loops {i};delay {sleepTimeS}S");
((GenesisMeter)meter).StartMeasurement();
var MeterReadyForTest = false;
while (i >= 0)
{
Thread.Sleep(sleepTimeS * 1000);
try
{
var r = ((GenesisMeter)meter).GetMainMeasurementResult(null, null, true);
i = i - sleepTimeS;
if (r.DutVolumeCm != 0)
{
_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);
}));
MeterReadyForTest = true;
break;
}
else
{
_logger.Info($" Meter {meter.Slot} Meter no update display {r.DutVolumeCm}; loops left {i}");
}
}
catch (Exception)
{
// var sleepTimeS = 5;
// _logger.Debug($" Meter {meter.Slot} CheckMetersAreReadyForTest loops {i};delay {sleepTimeS}S");
// ((GenesisMeter)meter).StartMeasurement();
// var MeterReadyForTest = false;
// while (i >= 0)
// {
// Thread.Sleep(sleepTimeS * 1000);
// try
// {
// var r = ((GenesisMeter)meter).GetMainMeasurementResult(null, null, true);
// i = i - sleepTimeS;
// if (r.DutVolumeCm != 0)
// {
// _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);
// }));
// MeterReadyForTest = true;
// break;
// }
// else
// {
// _logger.Info($" Meter {meter.Slot} Meter no update display {r.DutVolumeCm}; loops left {i}");
// }
// }
// catch (Exception)
// {
}
// }
TryInvoke(new Action(() =>
{
updateCell($"Status", meter.Slot, $"Warte auf Zählerstand wechsel ", Color.LightYellow);
}));
// TryInvoke(new Action(() =>
// {
// updateCell($"Status", meter.Slot, $"Warte auf Zählerstand wechsel ", Color.LightYellow);
// }));
}
((GenesisMeter)meter).StopMeasurement();
// }
// ((GenesisMeter)meter).StopMeasurement();
if (MeterReadyForTest)
{
_logger.Info($" Meter {meter.Slot} Meter has NO! progress");
TryInvoke(new Action(() =>
{
updateCell($"Status", meter.Slot, $"Zählerstand wechsel nicht erfasst", Color.LightPink);
}));
}
// if (MeterReadyForTest)
// {
// _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());
//}
//listOfTasks.ForEach(t => t.Start());
//Task.WaitAll(listOfTasks.ToArray());
}