From fa9bed3196fb47b06f6efda1b0c70af9bf49ec38 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Tue, 22 Sep 2020 15:05:30 +0200 Subject: [PATCH] fix gestione "*" modificato in caso di annulla causa "rimbalzo reset" --- .../Controllers/WebApi/RecipeController.cs | 36 +++++++++++++------ 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/Thermo.Active/Controllers/WebApi/RecipeController.cs b/Thermo.Active/Controllers/WebApi/RecipeController.cs index 1577360e..7f3651cc 100644 --- a/Thermo.Active/Controllers/WebApi/RecipeController.cs +++ b/Thermo.Active/Controllers/WebApi/RecipeController.cs @@ -130,10 +130,26 @@ namespace Thermo.Active.Controllers.WebApi if (updtRecipe.Count > 0) { - // salvo che la ricetta รจ cambiata - NcAdapter.RecipeLiveData.hasChanged = true; // scrivo sul PLC con i parametri specificati x ritardo/raggruppamento ncAdapter.WriteRecipeParams(updtRecipe, ncAdapter.nMaxParamWrite, ncAdapter.delayParamWrite); + + + // verifico SE siano cambiati rispetto a versione originale... + var originalRecipe = NcFileAdapter.LoadRecipe($"{NcAdapter.RecipeLiveData.RecipeDir}{NcAdapter.RecipeLiveData.RecipeName}"); + // comparazione parametri... + bool isEqual = false; + ncAdapter.paramsComparer(originalRecipe.RecipeParameters, NcAdapter.RecipeLiveData.RecipeParameters, out isEqual); + // salvo se la ricetta SIA cambiata + NcAdapter.RecipeLiveData.hasChanged = !isEqual; + + // ora gestisco la lettura della overview di "modificata + DTORecipeStatus message = new DTORecipeStatus() + { + recipeName = NcAdapter.RecipeLiveData.RecipeName, + hasChanged = NcAdapter.RecipeLiveData.hasChanged, + forceSend = true + }; + MessageServices.Current.Publish(SEND_THERMO_RECIPE_CHANGED, null, message); } // ritorno solo fatto! @@ -432,14 +448,6 @@ namespace Thermo.Active.Controllers.WebApi }; MessageServices.Current.Publish(SEND_THERMO_RECIPE_CHANGED, null, message); -#if false - // attesa 100ms - System.Threading.Thread.Sleep(100); - // ora mando vero valore modificata! - message.hasChanged = NcAdapter.RecipeLiveData.hasChanged; - MessageServices.Current.Publish(SEND_THERMO_RECIPE_CHANGED, null, message); -#endif - // ritorno solo fatto! return Ok(); } @@ -628,6 +636,14 @@ namespace Thermo.Active.Controllers.WebApi NcAdapter.RecipeLiveData.hasChanged = !isEqual; // e salvo su disco NcFileAdapter.SaveRecipeCurrent(); + // ora gestisco la lettura della overview di "modificata + DTORecipeStatus message = new DTORecipeStatus() + { + recipeName = NcAdapter.RecipeLiveData.RecipeName, + hasChanged = NcAdapter.RecipeLiveData.hasChanged, + forceSend = true + }; + MessageServices.Current.Publish(SEND_THERMO_RECIPE_CHANGED, null, message); } catch (Exception exc) {