Update conf parametri

This commit is contained in:
Samuele E. Locatelli
2019-11-10 12:02:52 +01:00
parent ffed949326
commit 52674c421f
6 changed files with 230 additions and 38 deletions
+90 -8
View File
@@ -133,7 +133,7 @@ namespace MP_IO.Controllers
return answ;
}
/// <summary>
/// Processa una chiamata POST per l'invio di un array jSon di oggetti fluxLog
/// Processa una chiamata POST per l'invio di un array Json di oggetti fluxLog
/// PUT: IOB/flogJson/SIMUL_03
/// </summary>
/// <param name="id">ID dell'IOB</param>
@@ -169,7 +169,7 @@ namespace MP_IO.Controllers
return answ;
}
/// <summary>
/// Processa una chiamata POST per l'invio di un array jSon di oggetti LIVE REC
/// Processa una chiamata POST per l'invio di un array Json di oggetti LIVE REC
/// PUT: IOB/liveJson/SIMUL_03
/// </summary>
/// <param name="id">ID dell'IOB</param>
@@ -285,7 +285,7 @@ namespace MP_IO.Controllers
return answ;
}
/// <summary>
/// Processa una chiamata POST per l'invio di un array jSon di oggetti plcMemConf
/// Processa una chiamata POST per l'invio di un array Json di oggetti plcMemConf
/// PUT: IOB/flogJson/SIMUL_03
/// </summary>
/// <param name="id">ID dell'IOB</param>
@@ -327,6 +327,88 @@ namespace MP_IO.Controllers
}
return answ;
}
/// <summary>
/// restituisce elenco parametri correnti come una List Json di oggetti parameterConf
/// PUT: IOB/getCurrParam/SIMUL_03
/// </summary>
/// <param name="id">ID dell'IOB</param>
/// <returns></returns>
[HttpPost]
public string getCurrParams(string id)
{
string answ = "";
if (string.IsNullOrWhiteSpace(id))
{
answ = "Missing IOB";
}
else
{
// procedo a recuperare l'oggetto...
List<parameterConf> currParams = new List<parameterConf>();
try
{
// deserializzo.
currParams = DataLayer.getIobCurrParams(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";
}
}
return answ;
}
/// <summary>
/// Processa una chiamata POST per l'invio di una List Json di oggetti parameterConf
/// PUT: IOB/setCurrParam/SIMUL_03
/// </summary>
/// <param name="id">ID dell'IOB</param>
/// <returns></returns>
[HttpPost]
public string setCurrParams(string id)
{
string answ = "";
if (string.IsNullOrWhiteSpace(id))
{
answ = "Missing IOB";
}
else
{
// questa classe è derivata da Controller.Response... x cui recupero lo stream in altro modo...
string content = "";
System.Web.HttpContext.Current.Request.InputStream.Position = 0;
using (var reader = new StreamReader(Request.InputStream, System.Text.Encoding.UTF8, true, 4096, true))
{
content = reader.ReadToEnd();
}
//Rest
System.Web.HttpContext.Current.Request.InputStream.Position = 0;
// procedo a deserializzare in blocco l'oggetto...
List< parameterConf> currParams = new List<parameterConf>();
try
{
// deserializzo.
currParams = JsonConvert.DeserializeObject<List<parameterConf>>(content);
// se != null --> salvo!
if (currParams != null)
{
DataLayer.setIobCurrParams(id, currParams);
answ = "OK";
}
}
catch (Exception exc)
{
logger.lg.scriviLog($"Errore in setCurrParams{Environment.NewLine}{exc}");
answ = "NO";
}
}
return answ;
}
// GET: IOB/liveRec/SIMUL_03?&liveData=chiave1|valore1#chiave2|valore#|chiave3|valore3
public string liveRec(string id, string liveData)
@@ -489,7 +571,7 @@ namespace MP_IO.Controllers
///
/// </summary>
/// <param name="id"></param>
/// <returns>jSon contenente la riga di stato macchina</returns>
/// <returns>Json contenente la riga di stato macchina</returns>
public string getCurrData(string id)
{
// attenzione! poiché nell'URL il carattere "#" fiene filtrato ci aspettiamo il carattere "|" che poi trasformiamo ora in "#"
@@ -515,7 +597,7 @@ namespace MP_IO.Controllers
///
/// </summary>
/// <param name="id"></param>
/// <returns>jSon contenente la riga di stato macchina</returns>
/// <returns>Json contenente la riga di stato macchina</returns>
public string forceSplitOdl(string id)
{
// attenzione! poiché nell'URL il carattere "#" fiene filtrato ci aspettiamo il carattere "|" che poi trasformiamo ora in "#"
@@ -530,7 +612,7 @@ namespace MP_IO.Controllers
///
/// </summary>
/// <param name="id"></param>
/// <returns>jSon contenente 1..n task da eseguire</returns>
/// <returns>Json contenente 1..n task da eseguire</returns>
public string getTask2Exe(string id)
{
string answ = "";
@@ -625,7 +707,7 @@ namespace MP_IO.Controllers
///
/// </summary>
/// <param name="id"></param>
/// <returns>jSon contenente 1..n task da eseguire</returns>
/// <returns>Json contenente 1..n task da eseguire</returns>
public string getOptPar(string id)
{
string answ = "";
@@ -837,7 +919,7 @@ namespace MP_IO.Controllers
string dataSer = memLayer.ML.getRSV(hM2IOB);
if (dataSer != "" && dataSer != null)
{
// restituisco jSon
// restituisco Json
answ = dataSer;
}
else
@@ -4,7 +4,14 @@
<div class="col-12 text-center">
<div class="card">
<div class="card-header bg-secondary text-warning">
<div class="row">
<div class="col-8 col-md-10">
<h4>GESTIONE PARAMETRI MACCHINA</h4>
</div>
<div class="col-4 col-md-2">
<asp:LinkButton runat="server" ID="lbtReload" CssClass="btn btn-sm btn-primary" OnClick="lbtReload_Click"><i class="fa fa-refresh" aria-hidden="true"></i></asp:LinkButton>
</div>
</div>
</div>
<div class="card-body text-dark">
<i>Elenco parametri di configurazione ammessi per l'impianto</i>
@@ -1,4 +1,6 @@
using MapoSDK;
using MapoDb;
using MapoSDK;
using SteamWare;
using System;
using System.Collections;
using System.Collections.Generic;
@@ -15,35 +17,54 @@ namespace MoonProTablet.WebUserControls
{
}
public static List<parameterConf> GetParameters()
/// <summary>
/// idx macchina selezionata
/// </summary>
public string idxMacchina
{
//!!!FIXME !!!FARE recuperare VERI DATI da memoria REDIS dell'IOB...
List<parameterConf> dcList = new List<parameterConf>();
plcMemMap memoria = new plcMemMap();
for (int i = 0; i < 10; i++)
get
{
parameterConf currPar = new parameterConf()
{
name = $"Par_{i}",
description = $"Parametro {i}",
value = $"{i * 100}",
newValue = $"{i * 100 + 5}"
};
dcList.Add(currPar);
#if false
memoria.mMapWrite.Add($"Parametro {i}", currConf);
#endif
return memLayer.ML.StringSessionObj("IdxMacchina");
}
#if false
foreach (var item in memoria.mMapWrite)
set
{
dcList.Add(item.Value);
}
#endif
return dcList;// memoria.mMapWrite;
memLayer.ML.setSessionVal("IdxMacchina", value);
}
}
public List<parameterConf> GetParameters()
{
bool fatto = false;
//!!!FIXME !!!FARE recuperare VERI DATI da memoria REDIS dell'IOB...
List<parameterConf> dcList = new List<parameterConf>();
try
{
dcList = DataLayer.getIobCurrParams(idxMacchina);
fatto = true;
}
catch
{
}
if (!fatto || dcList.Count == 0)
{
plcMemMap memoria = new plcMemMap();
for (int i = 0; i < 10; i++)
{
parameterConf currPar = new parameterConf()
{
name = $"Par_{i}",
description = $"Parametro {i}",
value = $"{i * 100}",
newValue = $"{i * 100 + DateTime.Now.Second}"
};
dcList.Add(currPar);
}
}
return dcList;// memoria.mMapWrite;
}
protected void lbtReload_Click(object sender, EventArgs e)
{
grView.DataBind();
}
}
}
@@ -14,6 +14,15 @@ namespace MoonProTablet.WebUserControls
public partial class mod_sendParameters
{
/// <summary>
/// Controllo lbtReload.
/// </summary>
/// <remarks>
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
/// </remarks>
protected global::System.Web.UI.WebControls.LinkButton lbtReload;
/// <summary>
/// Controllo grView.
/// </summary>
+48 -1
View File
@@ -1014,13 +1014,51 @@ namespace MapoDb
// se ho un area memoria valida...
if (currMemMap != null)
{
// salvo!ve
// salvo!
string serVal = JsonConvert.SerializeObject(currMemMap);
memLayer.ML.setRSV(memMapHash(idxMacchina), serVal);
}
return answ;
}
/// <summary>
/// GET elenco parametri correnti x IOB
/// </summary>
/// <param name="idxMacchina"></param>
/// <returns></returns>
public static List<parameterConf> getIobCurrParams(string idxMacchina)
{
string serVal = memLayer.ML.getRSV(currParametersHash(idxMacchina));
List <parameterConf> currParameters = new List<parameterConf>();
if(serVal != null)
{
try
{
currParameters = JsonConvert.DeserializeObject<List<parameterConf>>(serVal);
}
catch(Exception exc)
{
logger.lg.scriviLog($"Eccezione in deserializzazione getIobCurrParam{Environment.NewLine}{exc}");
}
}
return currParameters;
}
/// <summary>
/// SET elenco parametri correnti x IOB
/// </summary>
/// <param name="idxMacchina"></param>
/// <param name="currParameters"></param>
/// <returns></returns>
public static bool setIobCurrParams(string idxMacchina, List<parameterConf> currParameters)
{
bool answ = false;
if(currParameters!=null)
{
string serVal = JsonConvert.SerializeObject(currParameters);
memLayer.ML.setRSV(currParametersHash(idxMacchina), serVal);
}
return answ;
}
/// <summary>
/// Rimuove Key dell'ODL corrente x una data macchina IOB
/// </summary>
/// <param name="idxMacchina"></param>
@@ -1151,6 +1189,15 @@ namespace MapoDb
return mHash(string.Format("MemMap:{0}", idxMacchina));
}
/// <summary>
/// Hash dati CurrentParameters x la macchina specificata
/// </summary>
/// <param name="idxMacchina"></param>
/// <returns></returns>
public static string currParametersHash(string idxMacchina)
{
return mHash(string.Format("CurrentParameters:{0}", idxMacchina));
}
/// <summary>
/// Hash dati Current ODL x la macchina specificata
/// </summary>
/// <param name="idxMacchina"></param>
+29 -3
View File
@@ -114,7 +114,7 @@ namespace MapoSDK
/// </summary>
public int factor { get; set; } = 1;
/// <summary>
/// Valore parametro (come stringa, decimali con ",", default VUORO)
/// Valore parametro (come stringa, decimali con ",", default VUOTO), poi LETTO da PLC (o appena scritto)
/// </summary>
public string value { get; set; } = "";
/// <summary>
@@ -129,10 +129,36 @@ namespace MapoSDK
/// <summary>
/// Classe estesa dei parametri da impostare sul PLC
/// </summary>
public class parameterConf: dataConf
public class parameterConf : dataConf
{
public string newValue { get; set; } = "ND";
/// <summary>
/// Indica il NUOVO valore inviato che si richiede di impostare (da IOB/tablet), quando scritto su PLC corrisponde a value
/// </summary>
public string newValue { get; set; } = "";
/// <summary>
/// Indica se il parametro sia impostabile (da tablet / IOB)
/// </summary>
public bool setEnabled { get; set; } = false;
/// <summary>
/// Indica se il parametro sia stato salvato (value = newValue) oppure newValue NON impostato
/// </summary>
public bool saved
{
get
{
bool hasData = !string.IsNullOrWhiteSpace(value);
bool areEqual = value == newValue;
bool noWriteReq = string.IsNullOrWhiteSpace(newValue);
return (areEqual || (hasData && noWriteReq));
}
}
/// <summary>
/// Ultimo messaggio associato (conferma scrittura, errore, ...)
/// </summary>
public string lastMessage { get; set; } = "";
}
/// <summary>
/// Struttura conf tipo dati
/// </summary>