diff --git a/MP-IO/Controllers/IOBController.cs b/MP-IO/Controllers/IOBController.cs
index d206f60d..07811103 100644
--- a/MP-IO/Controllers/IOBController.cs
+++ b/MP-IO/Controllers/IOBController.cs
@@ -354,7 +354,42 @@ namespace MP_IO.Controllers
answ = JsonConvert.SerializeObject(currParams);
}
}
- catch(Exception exc)
+ catch (Exception exc)
+ {
+ logger.lg.scriviLog($"Errore in getCurrParams{Environment.NewLine}{exc}");
+ answ = "NO";
+ }
+ }
+ return answ;
+ }
+ ///
+ /// restituisce elenco parametri CHE RICHIEDONO scrittura su PLC come una List Json di oggetti objItem
+ /// GET: IOB/getObjItems2Write/SIMUL_03
+ ///
+ /// ID dell'IOB
+ ///
+ public string getObjItems2Write(string id)
+ {
+ string answ = "";
+ if (string.IsNullOrWhiteSpace(id))
+ {
+ answ = "Missing IOB";
+ }
+ else
+ {
+ // procedo a recuperare l'oggetto...
+ List currParams = new List();
+ try
+ {
+ // deserializzo.
+ currParams = DataLayer.getCurrObjItemsPendigWrite(id);
+ // se != null --> salvo!
+ if (currParams != null)
+ {
+ answ = JsonConvert.SerializeObject(currParams);
+ }
+ }
+ catch (Exception exc)
{
logger.lg.scriviLog($"Errore in getCurrParams{Environment.NewLine}{exc}");
answ = "NO";
diff --git a/MapoDb/DataLayer.cs b/MapoDb/DataLayer.cs
index 004839e9..c317a475 100644
--- a/MapoDb/DataLayer.cs
+++ b/MapoDb/DataLayer.cs
@@ -1028,19 +1028,51 @@ namespace MapoDb
public static List getCurrObjItems(string idxMacchina)
{
string serVal = memLayer.ML.getRSV(currParametersHash(idxMacchina));
- List currParameters = new List();
+ List actValues = new List();
if (serVal != null)
{
try
{
- currParameters = JsonConvert.DeserializeObject>(serVal);
+ actValues = JsonConvert.DeserializeObject>(serVal);
}
catch (Exception exc)
{
logger.lg.scriviLog($"Eccezione in deserializzazione getIobCurrParam{Environment.NewLine}{exc}");
}
}
- return currParameters;
+ return actValues;
+ }
+ ///
+ /// GET elenco parametri che richiedono una WRITE x IOB
+ ///
+ ///
+ ///
+ public static List getCurrObjItemsPendigWrite(string idxMacchina)
+ {
+ string serVal = memLayer.ML.getRSV(currParametersHash(idxMacchina));
+ List actValues = new List();
+ List writeValues = new List();
+ if (serVal != null)
+ {
+ try
+ {
+ actValues = JsonConvert.DeserializeObject>(serVal);
+ // cerco e rimuovo parametri sola lettura o SENZA richieste scrittura
+ foreach (var item in actValues)
+ {
+ objItem trovato = actValues.Find(obj => obj.writable == true && !string.IsNullOrEmpty(obj.reqValue));
+ if (trovato != null)
+ {
+ writeValues.Add(trovato);
+ }
+ }
+ }
+ catch (Exception exc)
+ {
+ logger.lg.scriviLog($"Eccezione in deserializzazione getIobCurrParam{Environment.NewLine}{exc}");
+ }
+ }
+ return writeValues;
}
///
/// SET elenco parametri correnti x IOB
@@ -1072,18 +1104,19 @@ namespace MapoDb
// leggo i valori attuali...
List actValues = getCurrObjItems(idxMacchina);
// per ogni valore passatomi faccio insert o update
- foreach (var item in innovations)
+ foreach (var item in actValues)
{
- objItem trovato = actValues.Find(obj => obj.uid == item.uid);
- if (trovato != null)
+ // cerco nelle innovazioni SE CI SIA un valore act
+ objItem trovato = innovations.Find(obj => obj.uid == item.uid);
+ // se non trovato...
+ if (trovato == null)
{
- actValues.Remove(trovato);
+ // aggiungo
+ innovations.Add(item);
}
- // aggiungo
- actValues.Add(item);
}
// serializzo e salvo
- string serVal = JsonConvert.SerializeObject(actValues);
+ string serVal = JsonConvert.SerializeObject(innovations);
memLayer.ML.setRSV(currParametersHash(idxMacchina), serVal);
}
return answ;