From c150c538c2289f12ca000a96ea9dd4169d75b8b3 Mon Sep 17 00:00:00 2001 From: Roland Drabesch Date: Fri, 28 Oct 2022 15:48:24 +0200 Subject: [PATCH] adding NA meters to the Proccess (Picking, Webservice and Finaltest) --- .../Model/PickingModel.cs | 2 +- ...erRegisters.csproj.CoreCompileInputs.cache | 2 +- .../OrderData/OrderProgrammingParameters.cs | 37 +++++---- Common/ProductionUiCordonel/FinalTest.xaml.cs | 62 ++++++++------- .../ProductionProcessCheckAttachment.cs | 21 +++-- ...tionProcessFinalParameterizationVakoCsd.cs | 32 ++++---- .../Actions/ProductionProcessShippingMode.cs | 76 +++++++++++++++---- ...ToXlsHelper.csproj.CoreCompileInputs.cache | 2 +- 8 files changed, 151 insertions(+), 83 deletions(-) diff --git a/Common/CordonelAssemblyLine/Model/PickingModel.cs b/Common/CordonelAssemblyLine/Model/PickingModel.cs index a355457f..1860c453 100644 --- a/Common/CordonelAssemblyLine/Model/PickingModel.cs +++ b/Common/CordonelAssemblyLine/Model/PickingModel.cs @@ -1101,7 +1101,7 @@ namespace CordonelAssemblyLine.Model lblS04Color = _progressCurrent; } - } + } break; case PickingStateMachine.Compare: diff --git a/Common/Hardware/WaterMeter/WaterMeterCore/WaterMeterRegisters/obj/Debug/WaterMeterRegisters.csproj.CoreCompileInputs.cache b/Common/Hardware/WaterMeter/WaterMeterCore/WaterMeterRegisters/obj/Debug/WaterMeterRegisters.csproj.CoreCompileInputs.cache index b81d5f66..f22623aa 100644 --- a/Common/Hardware/WaterMeter/WaterMeterCore/WaterMeterRegisters/obj/Debug/WaterMeterRegisters.csproj.CoreCompileInputs.cache +++ b/Common/Hardware/WaterMeter/WaterMeterCore/WaterMeterRegisters/obj/Debug/WaterMeterRegisters.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -46bd00889699f5a20a4981a22f62b66368323855 +5ed75d99ee45ff67821090f1b3dbb001dd9e4fe3 diff --git a/Common/Logic/ProductionOrderCore/OrderData/OrderProgrammingParameters.cs b/Common/Logic/ProductionOrderCore/OrderData/OrderProgrammingParameters.cs index acf8fef7..988dc8a3 100644 --- a/Common/Logic/ProductionOrderCore/OrderData/OrderProgrammingParameters.cs +++ b/Common/Logic/ProductionOrderCore/OrderData/OrderProgrammingParameters.cs @@ -44,27 +44,29 @@ namespace Xylem.Common.Logic.ProductionOrderCore.OrderData } var radioParams = OrderRadioParameter.GetRadioParams(pcbID, connectionString); - - ret.Add(new ProgrammingParameters("SENSUSRADIO_RadioAddress", BitConverter.GetBytes(radioParams.RadioAddress).Reverse().ToArray())); - - if (radioParams.FrqOffset.HasValue) + if (radioParams.RadioAddress != 0) { - ret.Add(new ProgrammingParameters("SENSUSRADIO_FrequencyOffset", BitConverter.GetBytes(radioParams.FrqOffset.Value).Reverse().ToArray())); - } + + ret.Add(new ProgrammingParameters("SENSUSRADIO_RadioAddress", BitConverter.GetBytes(radioParams.RadioAddress).Reverse().ToArray())); + + if (radioParams.FrqOffset.HasValue) + { + ret.Add(new ProgrammingParameters("SENSUSRADIO_FrequencyOffset", BitConverter.GetBytes(radioParams.FrqOffset.Value).Reverse().ToArray())); + } - ret.Add(new ProgrammingParameters("SENSUSRADIO_EncryptionKey", radioParams.EncryptionKey.ToArray())); + ret.Add(new ProgrammingParameters("SENSUSRADIO_EncryptionKey", radioParams.EncryptionKey.ToArray())); - if (radioParams.PowerLevel > 0 && radioParams.PowerLevelOption > 0 && radioParams.ImpedanceCodeNew > 0 && radioParams.ImpedanceCodeOption > 0) - { - ret.Add(new ProgrammingParameters("SENSUSRADIO_PowerLevel", BitConverter.GetBytes(radioParams.PowerLevel).Reverse().ToArray())); - ret.Add(new ProgrammingParameters("SENSUSRADIO_PowerLevelOption", BitConverter.GetBytes(radioParams.PowerLevelOption).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())); + if (radioParams.PowerLevel > 0 && radioParams.PowerLevelOption > 0 && radioParams.ImpedanceCodeNew > 0 && radioParams.ImpedanceCodeOption > 0) + { + ret.Add(new ProgrammingParameters("SENSUSRADIO_PowerLevel", BitConverter.GetBytes(radioParams.PowerLevel).Reverse().ToArray())); + ret.Add(new ProgrammingParameters("SENSUSRADIO_PowerLevelOption", BitConverter.GetBytes(radioParams.PowerLevelOption).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())); + } } - var rawVako = VakoDbAdapter.GetRawVako(connectionString, orderNr); var rawMapping = VakoDbAdapter.GetVakoMapping(connectionString, rawVako.Type); var vakoData = VakoParser.Parse(rawVako, rawMapping); @@ -128,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>(retStr); if (retListRealCsd.Any()) { diff --git a/Common/ProductionUiCordonel/FinalTest.xaml.cs b/Common/ProductionUiCordonel/FinalTest.xaml.cs index c2a6115e..690ee284 100644 --- a/Common/ProductionUiCordonel/FinalTest.xaml.cs +++ b/Common/ProductionUiCordonel/FinalTest.xaml.cs @@ -309,7 +309,7 @@ namespace ProductionUiCordonel SerialNumber = $"{SerialNumber} / {a[3]}"; } - + @@ -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(); @@ -431,8 +432,8 @@ namespace ProductionUiCordonel - orderBarcode = new ProductionProcessCheckOrderNumber(OrderNumber); - + orderBarcode = new ProductionProcessCheckOrderNumber(0); + orderBarcode.isDone += CheckOrder_isDone; @@ -440,28 +441,33 @@ namespace ProductionUiCordonel serialBarcode = new ProductionProcessCheckSerialNumber(SerialNumber, RadioAdress.ToString()); pc.Processes.Add(serialBarcode); //[x] [x] [x] - //pc.Processes.Add(new ProductionProcessFullReadOut()); //[x] [x] [x] - + //pc.Processes.Add(new ProductionProcessFullReadOut()); //[x] [x] [x] + pc.Processes.Add(new ProductionCheckShippingState()); //[x] [x] [x] pc.Processes.Add(new ProductionProcessPasswordFile()); //[x] [x] [x] - + //pc.Processes.Add(new ProductionProcessFinalParameterizationFix()); //[x] [x] [] - pc.Processes.Add(new ProductionProcessFinalParameterizationVakoCsd(connectProcess)); //[x] [x] [] - var radioCheck = new ProductionProcessRadioCheck(); - orderBarcode.isDone += delegate (object sender, EventArgs e) - { - radioCheck.Ordernumber = ((ProductionProcessCheckOrderNumber)sender).Ordernumber; - }; - pc.Processes.Add(radioCheck); //[] [] [] + 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()); //[] [] [] @@ -480,7 +486,7 @@ namespace ProductionUiCordonel var successeP = new ProductionProcessDone(false); - successeP.isDone += allProcessesDone; + successeP.isDone += allProcessesDone; pc.DoneProcess = successeP; @@ -491,10 +497,10 @@ namespace ProductionUiCordonel { runDetect(); } - else if(abort) + else if (abort) { dpSubProcess.Children.Clear(); - } + } } private void CheckOrder_isDone(object sender, EventArgs e) @@ -512,19 +518,19 @@ namespace ProductionUiCordonel OrderHasChanged?.Invoke(this, e); } - - private void allProcessesDone(object sender, Tuple e) + + private void allProcessesDone(object sender, Tuple e) { detectIsLocked = false; if (e.Item3) { printErrorNote(); } - - SetUpBlank(e.Item1,e.Item2); + + SetUpBlank(e.Item1, e.Item2); } - + private void meterHasChanged(GenesisMeter oldMeter, GenesisMeter newMeter) { @@ -697,7 +703,7 @@ namespace ProductionUiCordonel } - + private void BtnSwitchAutoDetect_Click(object sender, RoutedEventArgs e) { Settings.AutoDetect = !Settings.AutoDetect; diff --git a/Common/ProductionUiCordonel/ProductionProcesses/Actions/ProductionProcessCheckAttachment.cs b/Common/ProductionUiCordonel/ProductionProcesses/Actions/ProductionProcessCheckAttachment.cs index f2c8d2ff..2ad158f7 100644 --- a/Common/ProductionUiCordonel/ProductionProcesses/Actions/ProductionProcessCheckAttachment.cs +++ b/Common/ProductionUiCordonel/ProductionProcesses/Actions/ProductionProcessCheckAttachment.cs @@ -69,17 +69,24 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions public override async void StartProcess() { - - var a = LocalWebRequest.GetRequest($"{ServiceUrls.GenesisFinalCheckServiceUrl()}GetSingleVakoKey?ProductionOrderNumber={OrderNumber}&KeyName=C_GEN_PULS"); - var myJsonResponse = Newtonsoft.Json.JsonConvert.DeserializeObject(a); - if (myJsonResponse.Value.ToLower() == "q" || myJsonResponse.Value.ToLower() == "k") + try { - UserControl.SetDesc("Pulse Module anbauen!"); + var a = LocalWebRequest.GetRequest($"{ServiceUrls.GenesisFinalCheckServiceUrl()}GetSingleVakoKey?ProductionOrderNumber={OrderNumber}&KeyName=C_GEN_PULS"); + var myJsonResponse = Newtonsoft.Json.JsonConvert.DeserializeObject(a); + if (myJsonResponse.Value.ToLower() == "q" || myJsonResponse.Value.ToLower() == "k") + { + UserControl.SetDesc("Pulse Module anbauen!"); + } + else + { + StepDone(); + } } - else + catch (Exception) { - StepDone(); + UserControl.SetDesc("Bitte den Auftrag prüfen ob ein Pulse Module verbaut werden soll"); } + diff --git a/Common/ProductionUiCordonel/ProductionProcesses/Actions/ProductionProcessFinalParameterizationVakoCsd.cs b/Common/ProductionUiCordonel/ProductionProcesses/Actions/ProductionProcessFinalParameterizationVakoCsd.cs index e14d252f..a982e8cd 100644 --- a/Common/ProductionUiCordonel/ProductionProcesses/Actions/ProductionProcessFinalParameterizationVakoCsd.cs +++ b/Common/ProductionUiCordonel/ProductionProcesses/Actions/ProductionProcessFinalParameterizationVakoCsd.cs @@ -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() @@ -117,14 +117,14 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions foreach (var item in myJsonResponse.Where(m => m.Source == ProgrammingSource.Vako)) { - + if (item.RegisterName == "CUSTOMER_LeakFlowThreshold") { } //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)); } @@ -137,9 +137,9 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions overAllResult.Add(_currentGenesis_WriteRegister(item.RegisterName, item.RegisterValue.Reverse().ToArray(), true, true)); } - - + + //else if (!item.RegisterName.ToLower().Contains("apparrangement")) //{ // overAllResult.Add(_currentGenesis_WriteRegister(item.RegisterName, item.RegisterValue.Reverse().ToArray(), 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)); - 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)); + 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"); } diff --git a/Common/ProductionUiCordonel/ProductionProcesses/Actions/ProductionProcessShippingMode.cs b/Common/ProductionUiCordonel/ProductionProcesses/Actions/ProductionProcessShippingMode.cs index 3f242421..c1253c97 100644 --- a/Common/ProductionUiCordonel/ProductionProcesses/Actions/ProductionProcessShippingMode.cs +++ b/Common/ProductionUiCordonel/ProductionProcesses/Actions/ProductionProcessShippingMode.cs @@ -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>(); - Thread.Sleep(10000); - Meter.Login(); CheckValuesAufterBoot.Add(new Tuple("METROLOGYASST_PulseLength", Meter.ReadRegister("METROLOGYASST_PulseLength"))); CheckValuesAufterBoot.Add(new Tuple("POWERMON_BatteryQuantity", Meter.ReadRegister("POWERMON_BatteryQuantity"))); CheckValuesAufterBoot.Add(new Tuple("GENESISFLOW_MeterSize", Meter.ReadRegister("GENESISFLOW_MeterSize"))); CheckValuesAufterBoot.Add(new Tuple("GENESISFLOW_CalFactor1", Meter.ReadRegister("GENESISFLOW_CalFactor1"))); CheckValuesAufterBoot.Add(new Tuple("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) @@ -137,7 +139,55 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions { if (Meter.StoreAllConfigurations()) { - base.currentProcessState = ProductionProcessState.Done; + if (doRestart) + { + var CheckValuesAufterBoot = new List>(); + CheckValuesAufterBoot.Add(new Tuple("METROLOGYASST_PulseLength", Meter.ReadRegister("METROLOGYASST_PulseLength"))); + CheckValuesAufterBoot.Add(new Tuple("POWERMON_BatteryQuantity", Meter.ReadRegister("POWERMON_BatteryQuantity"))); + CheckValuesAufterBoot.Add(new Tuple("GENESISFLOW_MeterSize", Meter.ReadRegister("GENESISFLOW_MeterSize"))); + CheckValuesAufterBoot.Add(new Tuple("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; } } diff --git a/Common/Tools/Tools.JsonToXlsHelper/obj/Debug/Tools.JsonToXlsHelper.csproj.CoreCompileInputs.cache b/Common/Tools/Tools.JsonToXlsHelper/obj/Debug/Tools.JsonToXlsHelper.csproj.CoreCompileInputs.cache index 2634cdb8..133b97f0 100644 --- a/Common/Tools/Tools.JsonToXlsHelper/obj/Debug/Tools.JsonToXlsHelper.csproj.CoreCompileInputs.cache +++ b/Common/Tools/Tools.JsonToXlsHelper/obj/Debug/Tools.JsonToXlsHelper.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -81d60b90addc793525740e9993e19bf6665bd401 +0d85a5b3a7561b41163c20e5dc7713bcd0d65555