diff --git a/IOB-WIN-NEXT/IOB-WIN-NEXT.csproj b/IOB-WIN-NEXT/IOB-WIN-NEXT.csproj
index d2353efd..3b777385 100644
--- a/IOB-WIN-NEXT/IOB-WIN-NEXT.csproj
+++ b/IOB-WIN-NEXT/IOB-WIN-NEXT.csproj
@@ -399,6 +399,8 @@
VersGen.cs
+
+
diff --git a/IOB-WIN-NEXT/Iob/BaseObj.cs b/IOB-WIN-NEXT/Iob/BaseObj.cs
new file mode 100644
index 00000000..9d4fa326
--- /dev/null
+++ b/IOB-WIN-NEXT/Iob/BaseObj.cs
@@ -0,0 +1,286 @@
+using IOB_UT_NEXT;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+
+namespace IOB_WIN_NEXT.Iob
+{
+ ///
+ /// Classe di base per IOB
+ ///
+ public class BaseObj
+ {
+ #region Public Fields
+
+ ///
+ /// valore booleano di check se sia stato AVVIATO l'adapter (Running)
+ ///
+ public bool adpRunning = false;
+
+ ///
+ /// valore booleano di check se l'adapter STIA SALVANDO
+ ///
+ public bool adpSaving = false;
+
+ ///
+ /// valore booleano (richiesta di riavvio automatico)
+ ///
+ public bool adpTryRestart;
+
+ ///
+ /// Struttura allarmi mappati
+ ///
+ public List alarmMaps = new List();
+
+ ///
+ /// Conf adapter corrente
+ ///
+ public IobConfiguration cIobConf;
+
+ ///
+ /// Conteggio ATTUALE ore macchina IN LAVORO
+ ///
+ public double contOreMaccLav;
+
+ ///
+ /// Conteggio ATTUALE ore macchina ON
+ ///
+ public double contOreMaccOn;
+
+ ///
+ /// contatore x simulazione valori input
+ ///
+ public int countSim = 0;
+
+ ///
+ /// ODL attualmente sulla macchina
+ ///
+ public Int32 currIdxODL = 0;
+
+ ///
+ /// Modo corrente (da classe ENUM)
+ ///
+ public CNC_MODE currMode;
+
+ ///
+ /// ODL corrente caricato sulla macchina (stringa, da chiamata MP/IO)
+ ///
+ public string currODL = "";
+
+ ///
+ /// Indica se sia richiesto campionamento memoria PERIODICO
+ ///
+ public bool doSampleMemory;
+
+ ///
+ /// Indica se si debba leggere e fare DUMP delle aree di memoria (1 volta solo all'avvio x debug...)
+ ///
+ public bool doStartMemDump;
+
+ ///
+ /// Data/ora ultimo avvio adapter
+ ///
+ public DateTime dtAvvioAdp = DateTime.Now;
+
+ ///
+ /// Data/ora ultimo spegnimento adapter
+ ///
+ public DateTime dtStopAdp = DateTime.Now;
+
+ ///
+ /// Indicazione VETO check status IOB x evitare loop troppo stretti...
+ ///
+ public DateTime dtVetoCheckIOB = DateTime.Now.AddDays(-1);
+
+ ///
+ /// Indicazione VETO check sync ricette x evitare loop troppo stretti...
+ ///
+ public DateTime dtVetoCheckSyncRecipe = DateTime.Now.AddHours(-1);
+
+ ///
+ /// Abilitazione lettura PrgName
+ ///
+ public bool enablePrgName = true;
+
+ ///
+ /// Abilitazione invio pezzi "in blocco" per recupero contapezzi
+ ///
+ public bool enableSendPzCountBlock = false;
+
+ ///
+ /// Determina se sia encessario convertire valori little/big endian (SIEMENS=true, OSAI=FALSE)
+ ///
+ public bool hasBigEndian = false;
+
+ ///
+ /// dataOra ultima verifica CNC disconnesso...
+ ///
+ public DateTime lastDisconnCheck;
+
+ ///
+ /// Data/ora ultima volta che IOB è stato dichiarato online
+ ///
+ public DateTime lastIobOnline = DateTime.Now.AddHours(-1);
+
+ ///
+ /// dataOra ultimo log periodico...
+ ///
+ public DateTime lastPeriodicLog;
+
+ ///
+ /// dataOra ultimo PING inviato verso il PLC...
+ ///
+ public DateTime lastPING = DateTime.Now.AddHours(-1);
+
+ ///
+ /// DataOra ultima lettura da PLC
+ ///
+ public DateTime lastReadPLC;
+
+ ///
+ /// ULtimo valore inviato (in caso di disconnessione lo reinvia x garantire watchdog...)
+ ///
+ public string lastSignInVal = "";
+
+ ///
+ /// DateTime Ultimo valore simulazione generato
+ ///
+ public DateTime lastSim;
+
+ ///
+ /// dataOra ultimo segnale inviato al SERVER...
+ ///
+ public DateTime lastWatchDog;
+
+ ///
+ /// dataOra ultimo segnale inviato a macchina/PLC...
+ ///
+ public DateTime lastWatchDogPLC = DateTime.Now;
+
+ ///
+ /// Massimo numero di px da inviare in blocco
+ ///
+ public int maxSendPzCountBlock = 10;
+
+ ///
+ /// Struttura memoria PLC x lettura/scrittura da JSON file
+ ///
+ public plcMemMapExt memMap;
+
+ ///
+ /// Minimo numero di px da inviare in blocco
+ ///
+ public int minSendPzCountBlock = 5;
+
+ ///
+ /// Variabile booleana che indica se sia necessario fare refresh del contapezzi
+ ///
+ public bool needRefreshPzCount = true;
+
+ ///
+ /// Dizionario di persistenza per i valori da salvare da/su file
+ ///
+ public Dictionary persistenceLayer;
+
+ ///
+ /// Determina se utilizzare blocchi di memoria IOT contigui (e quindi processing
+ /// "monoblocco" semplificato"=
+ ///
+ public bool procIotMem = false;
+
+ ///
+ /// Coda valori ALLARMI ove gestiti...
+ ///
+ public DataQueue QueueAlarm = new DataQueue("000", "QueueAlarm", false);
+
+ //public ConcurrentQueue QueueAlarm = new ConcurrentQueue();
+
+ ///
+ /// Oggetto della coda degli elementi letti di tipo FluxLog (e non ancora trasmessi)
+ ///
+ public DataQueue QueueFLog = new DataQueue("000", "QueueFLog", false);
+
+ //public ConcurrentQueue QueueFLog = new ConcurrentQueue();
+
+ ///
+ /// Oggetto della coda degli elementi letti (e non ancora trasmessi)
+ ///
+ public DataQueue QueueIN = new DataQueue("000", "QueueIN", false);
+
+ //public ConcurrentQueue QueueIN = new ConcurrentQueue();
+
+ ///
+ /// Coda valori MESSAGGI/EVENTI (da non sottocampionare come samples)...
+ ///
+ public DataQueue QueueMessages = new DataQueue("000", "QueueMessages", false);
+
+ //public ConcurrentQueue QueueMessages = new ConcurrentQueue();
+
+ ///
+ /// Oggetto della coda degli elementi di tipo RawTransf (e non ancora trasmessi)
+ /// NB: sono salvati serializzati come stringhe
+ ///
+ public DataQueue QueueRawTransf = new DataQueue("000", "QueueRawTransf", false);
+
+ //public ConcurrentQueue QueueRawTransf = new ConcurrentQueue();
+
+ ///
+ /// Coda valori LOG UTENTE (da non sottocampionare come samples)...
+ ///
+ public DataQueue QueueULog = new DataQueue("000", "QueueULog", false);
+
+ //public ConcurrentQueue QueueULog = new ConcurrentQueue();
+
+ ///
+ /// alias booleano false = R
+ ///
+ public bool R = false;
+
+ ///
+ /// 32 byte input base (es strobe, 8 word da 32 bit di flags...)
+ ///
+ public byte[] RawInput = new byte[32];
+
+ ///
+ /// 32 byte output base (es ack, 8 word da 32 bit di flags...)
+ ///
+ public byte[] RawOutput = new byte[32];
+
+ ///
+ /// Oggetto connessione REDIS
+ ///
+ public RedisIobCache redisMan;
+
+ ///
+ /// Oggetto cronometro x campionamento durate chiamate
+ ///
+ public Stopwatch stopwatch = new Stopwatch();
+
+ ///
+ /// Oggetto gestione TempiCiclo e contapezzi
+ ///
+ public TCMan tcMan = new TCMan(0.5, 1.3, 5);
+
+ ///
+ /// Imposta veto lettura dati (es per DB a 2 sec)
+ ///
+ public DateTime vetoDataRead = DateTime.Now;
+
+ ///
+ /// Imposta veto SYNC dati (es per DB 2 DB a 10 sec)
+ ///
+ public DateTime vetoDataSync = DateTime.Now;
+
+ ///
+ /// Imposta veto chiamata split (durante chiamata, per 60 sec)
+ ///
+ public DateTime vetoSplit = DateTime.Now.AddMinutes(1);
+
+ ///
+ /// alias booleano true = W
+ ///
+ public bool W = true;
+
+ #endregion Public Fields
+ }
+}
\ No newline at end of file
diff --git a/IOB-WIN-NEXT/Iob/Generic.cs b/IOB-WIN-NEXT/Iob/Generic.cs
index 944e540e..8edea34d 100644
--- a/IOB-WIN-NEXT/Iob/Generic.cs
+++ b/IOB-WIN-NEXT/Iob/Generic.cs
@@ -27,273 +27,8 @@ using static MapoSDK.WharehouseData;
namespace IOB_WIN_NEXT.Iob
{
- public class Generic
+ public class Generic :BaseObj
{
- #region Public Fields
-
- ///
- /// valore booleano di check se sia stato AVVIATO l'adapter (Running)
- ///
- public bool adpRunning = false;
-
- ///
- /// valore booleano di check se l'adapter STIA SALVANDO
- ///
- public bool adpSaving = false;
-
- ///
- /// valore booleano (richiesta di riavvio automatico)
- ///
- public bool adpTryRestart;
-
- ///
- /// Struttura allarmi mappati
- ///
- public List alarmMaps = new List();
-
- ///
- /// Conf adapter corrente
- ///
- public IobConfiguration cIobConf;
-
- ///
- /// Conteggio ATTUALE ore macchina IN LAVORO
- ///
- public double contOreMaccLav;
-
- ///
- /// Conteggio ATTUALE ore macchina ON
- ///
- public double contOreMaccOn;
-
- ///
- /// contatore x simulazione valori input
- ///
- public int countSim = 0;
-
- ///
- /// ODL attualmente sulla macchina
- ///
- public Int32 currIdxODL = 0;
-
- ///
- /// Modo corrente (da classe ENUM)
- ///
- public CNC_MODE currMode;
-
- ///
- /// ODL corrente caricato sulla macchina (stringa, da chiamata MP/IO)
- ///
- public string currODL = "";
-
- ///
- /// Indica se sia richiesto campionamento memoria PERIODICO
- ///
- public bool doSampleMemory;
-
- ///
- /// Indica se si debba leggere e fare DUMP delle aree di memoria (1 volta solo all'avvio x debug...)
- ///
- public bool doStartMemDump;
-
- ///
- /// Data/ora ultimo avvio adapter
- ///
- public DateTime dtAvvioAdp = DateTime.Now;
-
- ///
- /// Data/ora ultimo spegnimento adapter
- ///
- public DateTime dtStopAdp = DateTime.Now;
-
- ///
- /// Indicazione VETO check status IOB x evitare loop troppo stretti...
- ///
- public DateTime dtVetoCheckIOB = DateTime.Now.AddDays(-1);
- ///
- /// Indicazione VETO check sync ricette x evitare loop troppo stretti...
- ///
- public DateTime dtVetoCheckSyncRecipe = DateTime.Now.AddHours(-1);
-
- ///
- /// Abilitazione lettura PrgName
- ///
- public bool enablePrgName = true;
-
- ///
- /// Abilitazione invio pezzi "in blocco" per recupero contapezzi
- ///
- public bool enableSendPzCountBlock = false;
-
- ///
- /// Determina se sia encessario convertire valori little/big endian (SIEMENS=true, OSAI=FALSE)
- ///
- public bool hasBigEndian = false;
-
- ///
- /// dataOra ultima verifica CNC disconnesso...
- ///
- public DateTime lastDisconnCheck;
-
- ///
- /// Data/ora ultima volta che IOB è stato dichiarato online
- ///
- public DateTime lastIobOnline = DateTime.Now.AddHours(-1);
-
- ///
- /// dataOra ultimo log periodico...
- ///
- public DateTime lastPeriodicLog;
-
- ///
- /// dataOra ultimo PING inviato verso il PLC...
- ///
- public DateTime lastPING = DateTime.Now.AddHours(-1);
-
- ///
- /// DataOra ultima lettura da PLC
- ///
- public DateTime lastReadPLC;
-
- ///
- /// ULtimo valore inviato (in caso di disconnessione lo reinvia x garantire watchdog...)
- ///
- public string lastSignInVal = "";
-
- ///
- /// DateTime Ultimo valore simulazione generato
- ///
- public DateTime lastSim;
-
- ///
- /// dataOra ultimo segnale inviato al SERVER...
- ///
- public DateTime lastWatchDog;
-
- ///
- /// dataOra ultimo segnale inviato a macchina/PLC...
- ///
- public DateTime lastWatchDogPLC = DateTime.Now;
-
- ///
- /// Massimo numero di px da inviare in blocco
- ///
- public int maxSendPzCountBlock = 10;
-
- ///
- /// Struttura memoria PLC x lettura/scrittura da JSON file
- ///
- public plcMemMapExt memMap;
-
- ///
- /// Minimo numero di px da inviare in blocco
- ///
- public int minSendPzCountBlock = 5;
-
- ///
- /// Variabile booleana che indica se sia necessario fare refresh del contapezzi
- ///
- public bool needRefreshPzCount = true;
-
- ///
- /// Dizionario di persistenza per i valori da salvare da/su file
- ///
- public Dictionary persistenceLayer;
-
- ///
- /// Determina se utilizzare blocchi di memoria IOT contigui (e quindi processing
- /// "monoblocco" semplificato"=
- ///
- public bool procIotMem = false;
-
- ///
- /// Coda valori ALLARMI ove gestiti...
- ///
- public DataQueue QueueAlarm = new DataQueue("000", "QueueAlarm", false);
- //public ConcurrentQueue QueueAlarm = new ConcurrentQueue();
-
- ///
- /// Oggetto della coda degli elementi letti di tipo FluxLog (e non ancora trasmessi)
- ///
- public DataQueue QueueFLog = new DataQueue("000", "QueueFLog", false);
- //public ConcurrentQueue QueueFLog = new ConcurrentQueue();
-
- ///
- /// Oggetto della coda degli elementi letti (e non ancora trasmessi)
- ///
- public DataQueue QueueIN = new DataQueue("000", "QueueIN", false);
- //public ConcurrentQueue QueueIN = new ConcurrentQueue();
-
- ///
- /// Coda valori MESSAGGI/EVENTI (da non sottocampionare come samples)...
- ///
- public DataQueue QueueMessages = new DataQueue("000", "QueueMessages", false);
- //public ConcurrentQueue QueueMessages = new ConcurrentQueue();
-
- ///
- /// Oggetto della coda degli elementi di tipo RawTransf (e non ancora trasmessi)
- /// NB: sono salvati serializzati come stringhe
- ///
- public DataQueue QueueRawTransf = new DataQueue("000", "QueueRawTransf", false);
- //public ConcurrentQueue QueueRawTransf = new ConcurrentQueue();
-
- ///
- /// Coda valori LOG UTENTE (da non sottocampionare come samples)...
- ///
- public DataQueue QueueULog = new DataQueue("000", "QueueULog", false);
- //public ConcurrentQueue QueueULog = new ConcurrentQueue();
-
- ///
- /// alias booleano false = R
- ///
- public bool R = false;
-
- ///
- /// 32 byte input base (es strobe, 8 word da 32 bit di flags...)
- ///
- public byte[] RawInput = new byte[32];
-
- ///
- /// 32 byte output base (es ack, 8 word da 32 bit di flags...)
- ///
- public byte[] RawOutput = new byte[32];
-
- ///
- /// Oggetto connessione REDIS
- ///
- public RedisIobCache redisMan;
-
- ///
- /// Oggetto cronometro x campionamento durate chiamate
- ///
- public Stopwatch stopwatch = new Stopwatch();
-
- ///
- /// Oggetto gestione TempiCiclo e contapezzi
- ///
- public TCMan tcMan = new TCMan(0.5, 1.3, 5);
-
- ///
- /// Imposta veto lettura dati (es per DB a 2 sec)
- ///
- public DateTime vetoDataRead = DateTime.Now;
-
- ///
- /// Imposta veto SYNC dati (es per DB 2 DB a 10 sec)
- ///
- public DateTime vetoDataSync = DateTime.Now;
-
- ///
- /// Imposta veto chiamata split (durante chiamata, per 60 sec)
- ///
- public DateTime vetoSplit = DateTime.Now.AddMinutes(1);
-
- ///
- /// alias booleano true = W
- ///
- public bool W = true;
-
- #endregion Public Fields
#region Public Constructors
@@ -8575,44 +8310,4 @@ namespace IOB_WIN_NEXT.Iob
#endregion Private Methods
}
-
- ///
- /// Evento per incapsulare dati x refresh pagina
- ///
- public class iobRefreshedEventArgs : EventArgs
- {
- #region Public Constructors
-
- ///
- /// salvataggio obj
- ///
- ///
- public iobRefreshedEventArgs(newDisplayData newObject)
- {
- _newDisplayData = newObject;
- }
-
- #endregion Public Constructors
-
- #region Public Properties
-
- ///
- /// Proprietà lettura displayData aggiornato
- ///
- public newDisplayData DisplayDataObject
- {
- get { return _newDisplayData; }
- }
-
- #endregion Public Properties
-
- #region Private Fields
-
- ///
- /// classe obj privata
- ///
- private readonly newDisplayData _newDisplayData;
-
- #endregion Private Fields
- }
}
\ No newline at end of file
diff --git a/IOB-WIN-NEXT/Iob/iobRefreshedEventArgs.cs b/IOB-WIN-NEXT/Iob/iobRefreshedEventArgs.cs
new file mode 100644
index 00000000..b9fa89eb
--- /dev/null
+++ b/IOB-WIN-NEXT/Iob/iobRefreshedEventArgs.cs
@@ -0,0 +1,45 @@
+using IOB_UT_NEXT;
+using System;
+
+namespace IOB_WIN_NEXT.Iob
+{
+ ///
+ /// Evento per incapsulare dati x refresh pagina
+ ///
+ public class iobRefreshedEventArgs : EventArgs
+ {
+ #region Public Constructors
+
+ ///
+ /// salvataggio obj
+ ///
+ ///
+ public iobRefreshedEventArgs(newDisplayData newObject)
+ {
+ _newDisplayData = newObject;
+ }
+
+ #endregion Public Constructors
+
+ #region Public Properties
+
+ ///
+ /// Proprietà lettura displayData aggiornato
+ ///
+ public newDisplayData DisplayDataObject
+ {
+ get { return _newDisplayData; }
+ }
+
+ #endregion Public Properties
+
+ #region Private Fields
+
+ ///
+ /// classe obj privata
+ ///
+ private readonly newDisplayData _newDisplayData;
+
+ #endregion Private Fields
+ }
+}
\ No newline at end of file