diff --git a/.vs/MP-IO/v14/.suo b/.vs/MP-IO/v14/.suo
index 61d61cb5..65b75d90 100644
Binary files a/.vs/MP-IO/v14/.suo and b/.vs/MP-IO/v14/.suo differ
diff --git a/.vs/MP-MON/v14/.suo b/.vs/MP-MON/v14/.suo
index 09ee2cce..cf75aa79 100644
Binary files a/.vs/MP-MON/v14/.suo and b/.vs/MP-MON/v14/.suo differ
diff --git a/MP-IO/Controllers/IOBController.cs b/MP-IO/Controllers/IOBController.cs
index dde3f5b1..da422c1c 100644
--- a/MP-IO/Controllers/IOBController.cs
+++ b/MP-IO/Controllers/IOBController.cs
@@ -4,6 +4,7 @@ using System.Linq;
using System.Web;
using System.Web.Mvc;
using MapoDb;
+using SteamWare;
namespace MP_IO.Controllers
{
@@ -69,18 +70,18 @@ namespace MP_IO.Controllers
}
return answ;
}
- // GET: IOB/input/5
- public string input(int? id)
+ // GET: IOB/input/5?valore=3&dtEve=20161223180600000&dtCurr=20161223180600000&cnt=999
+ public string input(string id, string valore, string dtEve, string dtCurr, string cnt)
{
- string answ = "OK " + id.ToString();
- // controllo se sia da fare rilettura da DB dello stato macchina ( SE non c'è il valore oppure se il valore "maxAgeSec" è stato superato )
-
-
- // verifico se sia abilitato INSERT x una data macchina
-
- // cerco prima in cache memory (altrimenti la popolo da DB)
-
-
+ string answ = "";
+ // formato yyyymmddHHMMSSnnn ovvero da anno a millisecondi
+ if (cnt == null) cnt = "0";
+ DateTime dataOraEvento = DateTime.Now;
+ if (memLayer.ML.CRI("_logLevel") > 6)
+ {
+ logger.lg.scriviLog(string.Format("Valori letti:{0}idxMacchina: {1}{0}valore: {2}{0}dtEve: {3}{0}dtCurr: {4}{0}cnt: {5}", Environment.NewLine, id, valore, dtEve, dtCurr, cnt), tipoLog.INFO);
+ }
+ answ = DataLayer.processInput(id, valore, dtEve, dtCurr, cnt);
return answ;
}
}
diff --git a/MP-IO/inputIOB.aspx.cs b/MP-IO/inputIOB.aspx.cs
index 37c02c3e..f80fa2f8 100644
--- a/MP-IO/inputIOB.aspx.cs
+++ b/MP-IO/inputIOB.aspx.cs
@@ -19,6 +19,8 @@ namespace MP_IO
///
protected void Page_Load(object sender, EventArgs e)
{
+ Response.Redirect(string.Format("IOB/input/{0}?valore={1}&dtEve={2}&dtCurr={3}&cnt={4}", Request.QueryString["idxMacchina"], Request.QueryString["valore"], Request.QueryString["dtEve"], Request.QueryString["dtCurr"], Request.QueryString["cnt"]));
+#if false
// legge i get x processare la seriale
string idxMacchina = "";
string valore = "";
@@ -42,86 +44,12 @@ namespace MP_IO
}
catch
{ }
- // controllo: se ho valori dt x evento e orario DIVERSI per acquisitore IOB calcolo dataOraEvento corretto
- if (dtEve != dtCurr)
- {
- Int64 delta = 0;
- try
- {
- delta = Convert.ToInt64(dtCurr) - Convert.ToInt64(dtEve);
- // se meno di 60'000 ms ...
- if (delta < 59999)
- {
- dataOraEvento = dataOraEvento.AddMilliseconds(-delta);
- }
- else
- {
- // in questo caso elimino i MS dalle stringhe e converto i datetime....
- CultureInfo provider = CultureInfo.InvariantCulture;
- string format = "yyyyMMddHHmmssfff";
- DateTime dtEvento = DateTime.ParseExact(dtEve, format, provider);
- DateTime dtCorrente = DateTime.ParseExact(dtCurr, format, provider);
- Int64 tiks = dtCorrente.Ticks - dtEvento.Ticks;
- dataOraEvento = dataOraEvento.AddTicks(-tiks);
- }
- }
- catch (Exception exc)
- {
- logger.lg.scriviLog(string.Format("Errore calcolo ms evento/ora corrente da device remoto:{0}dtEve: {1}{0}dtCurr: {2}{0}{3}", Environment.NewLine, dtEve, dtCurr, exc), tipoLog.EXCEPTION);
- }
- }
- //
- if (idxMacchina != null && valore != null)
- {
- if (idxMacchina != "" && valore != "")
- {
- // 2016.12.23 modifica x recording catena di input...
- // se abilitato registro evento sul DB
- int idxMacc = 0;
- try
- {
- idxMacc = Convert.ToInt32(idxMacchina);
- }
- catch
- { }
- if (idxMacc > 0 && MapoDb.MapoDb.obj.sLogEnabled(idxMacc))
- {
- MapoDb.MapoDb.obj.saveSigLog(idxMacchina, valore, dataOraEvento, contatore);
- }
- // continuo col resto
- try
- {
- // ora processo e salvo il valore del microstato...
- MapoDb.MapoDb.obj.checkMicroStato(idxMacchina, valore, dataOraEvento, contatore);
- answ = "OK"; // registro in risposta che è andato tutto bene...
- }
- catch (Exception exc)
- {
- if (memLayer.ML.confReadInt("_logLevel") > 5)
- {
- string errore = string.Format("Errore: {0}{1}", Environment.NewLine, exc);
- logger.lg.scriviLog(errore, tipoLog.EXCEPTION);
- answ = errore;
- }
- }
- }
- else
- {
- string errore = "Errore: parametri macchina/valore vuoti";
- logger.lg.scriviLog(errore, tipoLog.ERROR);
- answ = errore;
- }
- }
- else
- {
- string errore = "Errore: mancano parametri macchina/valore";
- logger.lg.scriviLog(errore, tipoLog.ERROR);
- answ = errore;
- }
+ answ = DataLayer.processInput(idxMacchina, valore, dtEve, dtCurr, contatore);
// ripulisco pagina restituita e tolgo html (solo codice ok/NO)
Response.Clear();
Response.Write(answ);
- Context.Response.End();
+ Context.Response.End();
+#endif
}
}
}
\ No newline at end of file
diff --git a/MapoDb/DataLayer.cs b/MapoDb/DataLayer.cs
index 00f923ab..0e5a338b 100644
--- a/MapoDb/DataLayer.cs
+++ b/MapoDb/DataLayer.cs
@@ -4,6 +4,7 @@ using System.Text;
using SteamWare;
using System.Reflection;
using System.Data.SqlClient;
+using System.Globalization;
namespace MapoDb
{
@@ -396,6 +397,98 @@ namespace MapoDb
return answ;
}
}
+ ///
+ /// Processa input da IOB eventualmente registrando i segnali inviati
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static string processInput(string idxMacchina, string valore, string dtEve, string dtCurr, string contatore)
+ {
+
+ string answ = "";
+ DateTime dataOraEvento = DateTime.Now;
+ // controllo: se ho valori dt x evento e orario DIVERSI per acquisitore IOB calcolo dataOraEvento corretto
+ if (dtEve != dtCurr)
+ {
+ Int64 delta = 0;
+ try
+ {
+ delta = Convert.ToInt64(dtCurr) - Convert.ToInt64(dtEve);
+ // se meno di 60'000 ms ...
+ if (delta < 59999)
+ {
+ dataOraEvento = dataOraEvento.AddMilliseconds(-delta);
+ }
+ else
+ {
+ // in questo caso elimino i MS dalle stringhe e converto i datetime....
+ CultureInfo provider = CultureInfo.InvariantCulture;
+ string format = "yyyyMMddHHmmssfff";
+ DateTime dtEvento = DateTime.ParseExact(dtEve, format, provider);
+ DateTime dtCorrente = DateTime.ParseExact(dtCurr, format, provider);
+ Int64 tiks = dtCorrente.Ticks - dtEvento.Ticks;
+ dataOraEvento = dataOraEvento.AddTicks(-tiks);
+ }
+ }
+ catch (Exception exc)
+ {
+ logger.lg.scriviLog(string.Format("Errore calcolo ms evento/ora corrente da device remoto:{0}dtEve: {1}{0}dtCurr: {2}{0}{3}", Environment.NewLine, dtEve, dtCurr, exc), tipoLog.EXCEPTION);
+ }
+ }
+ //
+ if (idxMacchina != null && valore != null)
+ {
+ if (idxMacchina != "" && valore != "")
+ {
+ // 2016.12.23 modifica x recording catena di input...
+ // se abilitato registro evento sul DB
+ int idxMacc = 0;
+ try
+ {
+ idxMacc = Convert.ToInt32(idxMacchina);
+ }
+ catch
+ { }
+ if (idxMacc > 0 && MapoDb.obj.sLogEnabled(idxMacc))
+ {
+ MapoDb.obj.saveSigLog(idxMacchina, valore, dataOraEvento, contatore);
+ }
+ // continuo col resto
+ try
+ {
+ // ora processo e salvo il valore del microstato...
+ MapoDb.obj.checkMicroStato(idxMacchina, valore, dataOraEvento, contatore);
+ answ = "OK"; // registro in risposta che è andato tutto bene...
+ }
+ catch (Exception exc)
+ {
+ if (memLayer.ML.confReadInt("_logLevel") > 5)
+ {
+ string errore = string.Format("Errore: {0}{1}", Environment.NewLine, exc);
+ logger.lg.scriviLog(errore, tipoLog.EXCEPTION);
+ answ = errore;
+ }
+ }
+ }
+ else
+ {
+ string errore = "Errore: parametri macchina/valore vuoti";
+ logger.lg.scriviLog(errore, tipoLog.ERROR);
+ answ = errore;
+ }
+ }
+ else
+ {
+ string errore = "Errore: mancano parametri macchina/valore";
+ logger.lg.scriviLog(errore, tipoLog.ERROR);
+ answ = errore;
+ }
+ return answ;
+ }
#endregion
}