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() private void PreMeasurement()
{ {
//if (!SkipPreparationForTestBench) if (!SkipPreparationForTestBench)
//{ {
//TODO set display unit //TODO set display unit
//TODO calculated overflow volume for display //TODO calculated overflow volume for display
@@ -89,11 +89,11 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore
WriteRegister(Register.Genesisflow.StoreConfiguration, 1); WriteRegister(Register.Genesisflow.StoreConfiguration, 1);
//} }
//else else
//{ {
// WriteLog($"wait for measurement is starting"); WriteLog($"wait for measurement is starting");
//} }
ProcessStatus = ProcessState.WaitForMeasurement; ProcessStatus = ProcessState.WaitForMeasurement;
} }
File diff suppressed because it is too large Load Diff
@@ -7,6 +7,7 @@
{ {
EMEA_433, EMEA_433,
EMEA_868, EMEA_868,
NA NA,
EMEA
} }
} }
@@ -44,6 +44,8 @@ namespace Xylem.Common.Logic.ProductionOrderCore.OrderData
} }
var radioParams = OrderRadioParameter.GetRadioParams(pcbID, connectionString); var radioParams = OrderRadioParameter.GetRadioParams(pcbID, connectionString);
if (radioParams.RadioAddress != 0)
{
ret.Add(new ProgrammingParameters("SENSUSRADIO_RadioAddress", BitConverter.GetBytes(radioParams.RadioAddress).Reverse().ToArray())); 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_ImpedanceCodeNew", BitConverter.GetBytes(radioParams.ImpedanceCodeNew).Reverse().ToArray()));
ret.Add(new ProgrammingParameters("SENSUSRADIO_ImpedanceCodeOption", BitConverter.GetBytes(radioParams.ImpedanceCodeOption).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 rawVako = VakoDbAdapter.GetRawVako(connectionString, orderNr);
var rawMapping = VakoDbAdapter.GetVakoMapping(connectionString, rawVako.Type); var rawMapping = VakoDbAdapter.GetVakoMapping(connectionString, rawVako.Type);
var vakoData = VakoParser.Parse(rawVako, rawMapping); 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"])))); 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); var retListRealCsd = JsonConvert.DeserializeObject<List<CsdParameterResult>>(retStr);
if (retListRealCsd.Any()) if (retListRealCsd.Any())
{ {
+18 -12
View File
@@ -416,9 +416,10 @@ namespace ProductionUiCordonel
} }
tmrAutoDetect.Enabled = Settings.AutoDetect; tmrAutoDetect.Enabled = Settings.AutoDetect;
} }
ProductionProcessCheckOrderNumber orderBarcode;
ProductionProcessCheckSerialNumber serialBarcode; private ProductionProcessCheckOrderNumber orderBarcode;
public void SetUpBlank(bool retry, bool abort =false) private ProductionProcessCheckSerialNumber serialBarcode;
public void SetUpBlank(bool retry, bool abort = false)
{ {
pc.Processes = new List<IProductionProcess>(); pc.Processes = new List<IProductionProcess>();
@@ -431,7 +432,7 @@ namespace ProductionUiCordonel
orderBarcode = new ProductionProcessCheckOrderNumber(OrderNumber); orderBarcode = new ProductionProcessCheckOrderNumber(0);
orderBarcode.isDone += CheckOrder_isDone; orderBarcode.isDone += CheckOrder_isDone;
@@ -448,20 +449,25 @@ namespace ProductionUiCordonel
//pc.Processes.Add(new ProductionProcessFinalParameterizationFix()); //[x] [x] [] //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(); var radioCheck = new ProductionProcessRadioCheck();
orderBarcode.isDone += delegate (object sender, EventArgs e) orderBarcode.isDone += delegate (object sender, EventArgs e)
{ {
radioCheck.Ordernumber = ((ProductionProcessCheckOrderNumber)sender).Ordernumber; radioCheck.Ordernumber = ((ProductionProcessCheckOrderNumber)sender).Ordernumber;
}; };
pc.Processes.Add(radioCheck); //[] [] [] pc.Processes.Add(radioCheck); //[] [] []
}
//pc.Processes.Add(new ProductionProcessSpecialConfig()); //[x] [x] [] //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 ProductionProcessFinalParameterizationVakoCsd(connectProcess, RadioAdress != 0)); //[x] [x] []
pc.Processes.Add(new ProductionProcessShippingMode(false)); //[] [] [] pc.Processes.Add(new ProductionProcessShippingMode(false, RadioAdress != 0)); //[] [] []
pc.Processes.Add(new ProductionProcessFullReadOut()); //[x] [x] [x] pc.Processes.Add(new ProductionProcessFullReadOut()); //[x] [x] [x]
pc.Processes.Add(new ProductionProcessLogOff()); //[] [] [] pc.Processes.Add(new ProductionProcessLogOff()); //[] [] []
@@ -491,7 +497,7 @@ namespace ProductionUiCordonel
{ {
runDetect(); runDetect();
} }
else if(abort) else if (abort)
{ {
dpSubProcess.Children.Clear(); 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; detectIsLocked = false;
if (e.Item3) if (e.Item3)
@@ -521,7 +527,7 @@ namespace ProductionUiCordonel
printErrorNote(); printErrorNote();
} }
SetUpBlank(e.Item1,e.Item2); SetUpBlank(e.Item1, e.Item2);
} }
+1 -3
View File
@@ -7,9 +7,7 @@
xmlns:uc="clr-namespace:ProductionUiCordonel" xmlns:uc="clr-namespace:ProductionUiCordonel"
mc:Ignorable="d" mc:Ignorable="d"
Title="Cordonel Production UI" MinHeight="500" MinWidth="400" Height="600" Width="644" Initialized="Window_Initialized" Closing="Window_Closing"> 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"> <DockPanel HorizontalAlignment="Right" Width="634" Height="569" VerticalAlignment="Top" Margin="0,0,2,0">
<ToolBarTray DockPanel.Dock="Top"> <ToolBarTray DockPanel.Dock="Top">
<ToolBar> <ToolBar>
+25 -25
View File
@@ -23,35 +23,35 @@ using Xylem.Common.Logic.SoftwareAccessHelper;
namespace ProductionUiCordonel namespace ProductionUiCordonel
{ {
public class QuantityToBackgroundConverter : IValueConverter //public class QuantityToBackgroundConverter : IValueConverter
{ //{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) // public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{ // {
var dc = DisplayCodes.None; // var dc = DisplayCodes.None;
if (DisplayCodes.TryParse(value.ToString(), out dc)) // if (DisplayCodes.TryParse(value.ToString(), out dc))
{ // {
string hex = ""; // string hex = "";
int intValue; // int intValue;
if (int.TryParse(value.ToString(), out intValue)) // if (int.TryParse(value.ToString(), out intValue))
{ // {
hex = intValue.ToString("X"); // hex = intValue.ToString("X");
} // }
return $"{dc} ({hex})"; // return $"{dc} ({hex})";
} // }
else // else
{ // {
return "?"; // return "?";
} // }
} // }
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) // public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{ // {
throw new NotImplementedException(); // throw new NotImplementedException();
} // }
} //}
/// <summary> /// <summary>
/// Interaction logic for MainWindow.xaml /// Interaction logic for MainWindow.xaml
@@ -150,8 +150,7 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
} }
reTrysLeft = reTrysLeft - 1; reTrysLeft = reTrysLeft - 1;
currentProcessState = ProductionProcessState.Done; currentProcessState = ProductionProcessState.Error;
return;
} }
catch (Exception ex) catch (Exception ex)
{ {
@@ -69,7 +69,8 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
public override async void StartProcess() public override async void StartProcess()
{ {
try
{
var a = LocalWebRequest.GetRequest($"{ServiceUrls.GenesisFinalCheckServiceUrl()}GetSingleVakoKey?ProductionOrderNumber={OrderNumber}&KeyName=C_GEN_PULS"); var a = LocalWebRequest.GetRequest($"{ServiceUrls.GenesisFinalCheckServiceUrl()}GetSingleVakoKey?ProductionOrderNumber={OrderNumber}&KeyName=C_GEN_PULS");
var myJsonResponse = Newtonsoft.Json.JsonConvert.DeserializeObject<VakoKeyValue>(a); var myJsonResponse = Newtonsoft.Json.JsonConvert.DeserializeObject<VakoKeyValue>(a);
if (myJsonResponse.Value.ToLower() == "q" || myJsonResponse.Value.ToLower() == "k") if (myJsonResponse.Value.ToLower() == "q" || myJsonResponse.Value.ToLower() == "k")
@@ -80,6 +81,12 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
{ {
StepDone(); 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 UcPlain UserControl;
private ProductionProcessConnect connectProcess; private ProductionProcessConnect connectProcess;
private bool hasRadio;
public ProductionProcessFinalParameterizationVakoCsd(ProductionProcessConnect connectProcess, bool registerHasRadio = true)
public ProductionProcessFinalParameterizationVakoCsd(ProductionProcessConnect connectProcess)
{ {
this.connectProcess = connectProcess; this.connectProcess = connectProcess;
name = "Kunden Parametrierung"; name = "Kunden Parametrierung";
currentProcessState = ProductionProcessState.Waiting; currentProcessState = ProductionProcessState.Waiting;
hasRadio = registerHasRadio;
} }
public override void InitUserControl() public override void InitUserControl()
@@ -124,7 +124,7 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
} }
//todo: find a better sln for SENSUSRADIO_EncryptionKey //todo: find a better sln for SENSUSRADIO_EncryptionKey
//SENSUSRADIO_EncryptionKey dont reserve 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)); 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", overAllResult.Add(_currentGenesis_WriteRegister("NFC_EraseRMA",
(new Byte[] { 0x00, 0x00, 0x00, 0x01 }).Reverse().ToArray(), true, false)); (new Byte[] { 0x00, 0x00, 0x00, 0x01 }).Reverse().ToArray(), true, false));
if (hasRadio)
{
overAllResult.Add(_currentGenesis_WriteRegister("PERIODICLOG_ResetCounter", overAllResult.Add(_currentGenesis_WriteRegister("PERIODICLOG_ResetCounter",
(new Byte[] { 0x00, 0x00, 0x00, 0x00 }).Reverse().ToArray(), true, false)); (new Byte[] { 0x00, 0x00, 0x00, 0x00 }).Reverse().ToArray(), true, false));
overAllResult.Add(_currentGenesis_WriteRegister("GENESISFLOW_SealDisplay", overAllResult.Add(_currentGenesis_WriteRegister("GENESISFLOW_SealDisplay",
(new Byte[] { 0x00, 0x00, 0x00, 0x01 }).Reverse().ToArray(), true, true)); (new Byte[] { 0x00, 0x00, 0x00, 0x01 }).Reverse().ToArray(), true, true));
}
var ret = true; var ret = true;
int done = 0; int done = 0;
@@ -210,7 +208,7 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
} }
else 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"); base.NewStatus($"Warnung!Schreiben des Parameter {cTask.Result.Item1} war nicht erfolgreich");
} }
@@ -14,11 +14,13 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
{ {
private UcPlain UserControl; private UcPlain UserControl;
private bool doRestart = false; private bool doRestart = false;
public ProductionProcessShippingMode(bool restart = false) private bool hasRadio = false;
public ProductionProcessShippingMode(bool restart = false, bool registerHasRadio = true)
{ {
name = "Versandbereitschaft herstellen"; name = "Versandbereitschaft herstellen";
currentProcessState = ProductionProcessState.Waiting; currentProcessState = ProductionProcessState.Waiting;
doRestart = restart; doRestart = restart;
hasRadio = registerHasRadio;
} }
public override void InitUserControl() 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 }); Meter.ResetAlarm(GenesisMeter.Alarm.EMPTY_PIPE);//(true, new byte[] { 0x00, 0x00, 0x00, 0x01 });
var useRadio = true;
if (useRadio) if (hasRadio)
{ {
if (Meter.StoreAllConfigurations()) if (Meter.StoreAllConfigurations())
{ {
@@ -76,21 +78,21 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
{ {
if (doRestart) if (doRestart)
{ {
var _meterResetPsu = new MeterResetPsu(Meter)
{
StoreConfigEnable = true
};
var rebootSucceeded = _meterResetPsu.MeterResetPsuExecute();
var CheckValuesAufterBoot = new List<Tuple<string, byte[]>>(); 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[]>("METROLOGYASST_PulseLength", Meter.ReadRegister("METROLOGYASST_PulseLength")));
CheckValuesAufterBoot.Add(new Tuple<string, byte[]>("POWERMON_BatteryQuantity", Meter.ReadRegister("POWERMON_BatteryQuantity"))); 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_MeterSize", Meter.ReadRegister("GENESISFLOW_MeterSize")));
CheckValuesAufterBoot.Add(new Tuple<string, byte[]>("GENESISFLOW_CalFactor1", Meter.ReadRegister("GENESISFLOW_CalFactor1"))); CheckValuesAufterBoot.Add(new Tuple<string, byte[]>("GENESISFLOW_CalFactor1", Meter.ReadRegister("GENESISFLOW_CalFactor1")));
CheckValuesAufterBoot.Add(new Tuple<string, byte[]>("SENSUSRADIO_RadioAddress", Meter.ReadRegister("SENSUSRADIO_RadioAddress"))); 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; bool? hasDiffrences = null;
foreach (var item in CheckValuesAufterBoot) foreach (var item in CheckValuesAufterBoot)
@@ -136,8 +138,56 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions
else else
{ {
if (Meter.StoreAllConfigurations()) 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; base.currentProcessState = ProductionProcessState.Done;
}
else
{
Meter.WriteLog("reboot compare failed");
base.currentProcessState = ProductionProcessState.Error;
}
}
else
{
base.currentProcessState = ProductionProcessState.Done;
}
return; return;
} }
} }
+135 -138
View File
@@ -679,7 +679,7 @@ namespace XylemCommonUiLegacyGenCtl
{ {
TestsetuptContainer.meterTestSettings[slot] = new MeterTestSettings() { SerialNr = serialNumber, Slot = slot, FlowAdjustment = true, FlowTesting = true }; 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) public void RemoveMeter(int slot)
@@ -957,13 +957,13 @@ namespace XylemCommonUiLegacyGenCtl
{ {
((GenesisMeter)meter).InitCalibration(); ((GenesisMeter)meter).InitCalibration();
} }
else //else
{ //{
((GenesisMeter)meter).InitMeasurement(); // ((GenesisMeter)meter).InitMeasurement();
} //}
// Reboot, HighPeresur //// Reboot, HighPeresur
//ReadOut Alarms, Show and reset ////ReadOut Alarms, Show and reset
_logger.Debug($"Start CheckMetersAreReadyForTest"); //_logger.Debug($"Start CheckMetersAreReadyForTest");
} }
})); }));
@@ -971,18 +971,15 @@ namespace XylemCommonUiLegacyGenCtl
} }
listOfTasks.ForEach(t => t.Start());
Task.WaitAll(listOfTasks.ToArray());
listOfTasksInit.ForEach(t => t.Start()); listOfTasksInit.ForEach(t => t.Start());
Task.WaitAll(listOfTasksInit.ToArray()); Task.WaitAll(listOfTasksInit.ToArray());
TryInvoke(new Action(() => TryInvoke(new Action(() =>
{ {
UpdateBatch(); UpdateBatch();
})); }));
setBusy(false, "", true);
//CheckMetersAreReadyForTestStatic(); //CheckMetersAreReadyForTestStatic();
setBusy(false, "", true);
}).ContinueWith(delegate }).ContinueWith(delegate
{ {
@@ -1001,85 +998,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)
{ // {
((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());
} }
@@ -1087,96 +1084,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());
} }