FIX IOB-WIN

This commit is contained in:
Samuele Locatelli
2026-05-25 09:39:27 +02:00
parent 549ea9dadd
commit 878e60c6b4
6 changed files with 140 additions and 131 deletions
+3 -3
View File
@@ -53,17 +53,17 @@ namespace IOB_UT
/// <summary>
/// Indicazione VETO PING a server sino alla data-ora indicata
/// </summary>
public static DateTime DtHelp.dtVetoPing = DateTime.Now;
public static DateTime dtVetoPing = DateTime.Now;
#if false
{
get
{
return redisMan.servStatus.DtHelp.dtVetoPing;
return redisMan.servStatus.dtVetoPing;
}
set
{
var currData = redisMan.servStatus;
currData.DtHelp.dtVetoPing = value;
currData.dtVetoPing = value;
redisMan.servStatus = currData;
}
}
+1 -1
View File
@@ -1235,7 +1235,7 @@ namespace IOB_WIN
counterMAC = iobObj.contapezziPLC,
lastUpdate = lastIobStatus.lastUpdate,
online = utils.IOB_Online,
lastDataIn = iobObj.DtHelp.lastReadPLC
lastDataIn = iobObj.lastReadPLC
};
// se diverso SALVO!
if (lastIobStatus.online != currIobStatus.online || lastIobStatus.lastDataIn != currIobStatus.lastDataIn || lastIobStatus.counterIOB != currIobStatus.counterIOB || lastIobStatus.counterMAC != currIobStatus.counterMAC || lastIobStatus.queueEvLen != currIobStatus.queueEvLen || lastIobStatus.queueFlLen != currIobStatus.queueFlLen || lastIobStatus.queueAlLen != currIobStatus.queueAlLen || lastIobStatus.queueMsLen != currIobStatus.queueMsLen)
+106 -101
View File
@@ -43,7 +43,7 @@ namespace IOB_WIN
/// <summary>
/// DataOra ultimo avvio adapter x watchdog
/// </summary>
protected DateTime DtHelp.adpStartRun;
protected DateTime adpStartRun;
/// <summary>
/// Vettore 32 BIT valori in ingresso al filtro
@@ -78,12 +78,12 @@ namespace IOB_WIN
/// <summary>
/// ultimo tentativo connessione...
/// </summary>
protected DateTime DtHelp.lastConnectTry;
protected DateTime lastConnectTry;
/// <summary>
/// Ultimo invio contapezzi (x invio delayed)
/// </summary>
protected DateTime DtHelp.lastPzCountSend;
protected DateTime lastPzCountSend;
/// <summary>
/// Dizionario ultimi valori (double) delle TSVC
@@ -93,7 +93,7 @@ namespace IOB_WIN
/// <summary>
/// Ultima registrazione warning x ODL mancante (x scrivere solo ogni 15 secondi)
/// </summary>
protected DateTime DtHelp.lastWarnODL;
protected DateTime lastWarnODL;
/// <summary>
/// indica se serva refresh parametri e quindi PLC...
@@ -192,17 +192,17 @@ namespace IOB_WIN
/// <summary>
/// Data/ora ultimo avvio adapter
/// </summary>
public DateTime DtHelp.AvvioAdp = DateTime.Now;
public DateTime AvvioAdp = DateTime.Now;
/// <summary>
/// Data/ora ultimo spegnimento adapter
/// </summary>
public DateTime DtHelp.StopAdp = DateTime.Now;
public DateTime StopAdp = DateTime.Now;
/// <summary>
/// Indicazione VETO check status IOB x evitare loop troppo stretti...
/// </summary>
public DateTime DtHelp.VetoCheckIOB = DateTime.Now.AddDays(-1);
public DateTime VetoCheckIOB = DateTime.Now.AddDays(-1);
/// <summary>
/// Abilitazione lettura PrgName
@@ -222,27 +222,32 @@ namespace IOB_WIN
/// <summary>
/// dataOra ultima verifica CNC disconnesso...
/// </summary>
public DateTime DtHelp.lastDisconnCheck;
public DateTime lastDisconnCheck;
/// <summary>
/// Data/ora ultima volta che IOB è stato dichairato online
/// </summary>
public DateTime DtHelp.lastIobOnline = DateTime.Now.AddHours(-1);
public DateTime lastIobOnline = DateTime.Now.AddHours(-1);
/// <summary>
/// dataOra ultimo log periodico...
/// </summary>
public DateTime DtHelp.lastPeriodicLog;
public DateTime lastPeriodicLog;
/// <summary>
/// dataOra ultimo PING inviato verso il PLC...
/// </summary>
public DateTime DtHelp.lastPING;
public DateTime lastPING;
/// <summary>
/// DataOra ultimo WatchDog
/// </summary>
public DateTime lastWatchDog = DateTime.Now;
/// <summary>
/// DataOra ultima lettura da PLC
/// </summary>
public DateTime DtHelp.lastReadPLC;
public DateTime lastReadPLC;
/// <summary>
/// ULtimo valore inviato (in caso di disconnessione lo reinvia x garantire watchdog...)
@@ -282,22 +287,22 @@ namespace IOB_WIN
/// <summary>
/// Coda valori ALLARMI ove gestiti...
/// </summary>
public ConcurrentQueue<string> QHelp.QueueAlarm = new ConcurrentQueue<string>();
public ConcurrentQueue<string> QueueAlarm = new ConcurrentQueue<string>();
/// <summary>
/// Oggetto della coda degli elementi letti di tipo FluxLog (e non ancora trasmessi)
/// </summary>
public ConcurrentQueue<string> QHelp.QueueFLog = new ConcurrentQueue<string>();
public ConcurrentQueue<string> QueueFLog = new ConcurrentQueue<string>();
/// <summary>
/// Oggetto della coda degli elementi letti (e non ancora trasmessi)
/// </summary>
public ConcurrentQueue<string> QHelp.QueueIN = new ConcurrentQueue<string>();
public ConcurrentQueue<string> QueueIN = new ConcurrentQueue<string>();
/// <summary>
/// Coda valori MESSAGGI/EVENTI (da non sottocampionare come samples)...
/// </summary>
public ConcurrentQueue<string> QHelp.QueueMessages = new ConcurrentQueue<string>();
public ConcurrentQueue<string> QueueMessages = new ConcurrentQueue<string>();
/// <summary>
/// alias booleano false = R
@@ -332,7 +337,7 @@ namespace IOB_WIN
/// <summary>
/// Imposta veto chiamata split (durante chiamata, per 60 sec)
/// </summary>
public DateTime DtHelp.vetoSplit = DateTime.Now.AddMinutes(1);
public DateTime vetoSplit = DateTime.Now.AddMinutes(1);
/// <summary>
/// alias booleano true = W
@@ -363,7 +368,7 @@ namespace IOB_WIN
// configurazione...
cIobConf = IOBConf;
DtHelp.lastConnectTry = DateTime.Now;
lastConnectTry = DateTime.Now;
// aggiungo nel logger IDX Macchina
lg = LogManager.GetCurrentClassLogger();
@@ -408,11 +413,11 @@ namespace IOB_WIN
{
bool answ = false;
// controllo se ho veto al check...
if (DtHelp.VetoCheckIOB < DateTime.Now)
if (VetoCheckIOB < DateTime.Now)
{
if (DemoOut)
{
answ = (QHelp.QueueIN.Count + QHelp.QueueFLog.Count >= nMaxSend);
answ = (QueueIN.Count + QueueFLog.Count >= nMaxSend);
}
else
{
@@ -454,9 +459,9 @@ namespace IOB_WIN
// se online imposto veto check a 5 x tempo reinvio...
if (answ)
{
DtHelp.lastIobOnline = DateTime.Now;
lastIobOnline = DateTime.Now;
}
DtHelp.VetoCheckIOB = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec * 5);
VetoCheckIOB = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec * 5);
}
catch
{ }
@@ -690,15 +695,15 @@ namespace IOB_WIN
/// <summary>
/// Indicazione VETO PING a server sino alla data-ora indicata
/// </summary>
public static DateTime DtHelp.dtVetoPing
public static DateTime dtVetoPing
{
get
{
return utils.DtHelp.dtVetoPing;
return utils.dtVetoPing;
}
set
{
utils.DtHelp.dtVetoPing = value;
utils.dtVetoPing = value;
}
}
@@ -741,7 +746,7 @@ namespace IOB_WIN
{
bool answ = false;
// controllo se ho un VETO all'invio...
if (DtHelp.dtVetoPing < DateTime.Now)
if (dtVetoPing < DateTime.Now)
{
if (DemoOut)
{
@@ -810,7 +815,7 @@ namespace IOB_WIN
{
lgInfo("SERVER ONLINE in checkServerAlive");
parentForm.commSrvActive = 1;
DtHelp.dtVetoPing = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec);
dtVetoPing = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec);
}
else
{
@@ -823,7 +828,7 @@ namespace IOB_WIN
else
{
// allungo periodo controllo...
DtHelp.dtVetoPing = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec * 3);
dtVetoPing = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec * 3);
}
}
else
@@ -831,8 +836,8 @@ namespace IOB_WIN
lgInfo($"SERVER NOT RESPONDING (PING at {cIobConf.serverData.MPIP})");
MPOnline = false;
// imposto veto a 10 volte reinvio dati standard...
DtHelp.dtVetoPing = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec * 3);
utils.dtVetoSend = DtHelp.dtVetoPing;
dtVetoPing = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec * 3);
utils.dtVetoSend = dtVetoPing;
}
}
}
@@ -1034,10 +1039,10 @@ namespace IOB_WIN
get
{
bool answ = false;
answ = (DateTime.Now.Subtract(DtHelp.lastPeriodicLog).TotalSeconds > utils.CRI("verboseLogTOut"));
answ = (DateTime.Now.Subtract(lastPeriodicLog).TotalSeconds > utils.CRI("verboseLogTOut"));
if (answ)
{
DtHelp.lastPeriodicLog = DateTime.Now;
lastPeriodicLog = DateTime.Now;
}
return answ;
@@ -1769,14 +1774,14 @@ namespace IOB_WIN
// svuoto code se richiesto
if (resetQueue)
{
QHelp.QueueIN = new ConcurrentQueue<string>();
QHelp.QueueFLog = new ConcurrentQueue<string>();
QHelp.QueueAlarm = new ConcurrentQueue<string>();
QHelp.QueueMessages = new ConcurrentQueue<string>();
QueueIN = new ConcurrentQueue<string>();
QueueFLog = new ConcurrentQueue<string>();
QueueAlarm = new ConcurrentQueue<string>();
QueueMessages = new ConcurrentQueue<string>();
}
// imposto contatori blink a zero...
i_counters = new int[32];
DtHelp.lastPeriodicLog = DateTime.Now;
lastPeriodicLog = DateTime.Now;
// fix parametri generali...
enablePrgName = true;
}
@@ -1822,22 +1827,22 @@ namespace IOB_WIN
private void svuotaCodaFLog()
{
//controllo se è passato oltre watchdog e non ho inviato nulla --> RE-INVIO (ultimo inviato)!!!!
if (DateTime.Now.Subtract(DtHelp.lastWatchDog).TotalSeconds > utils.CRI("watchdogMaxSec"))
if (DateTime.Now.Subtract(lastWatchDog).TotalSeconds > utils.CRI("watchdogMaxSec"))
{
string wdStatus = "elapsed";
string sVal = string.Format("[WDST]{0}", wdStatus);
// chiamo accodamento...
accodaFLog(sVal, qEncodeFLog("WDST", wdStatus));
DtHelp.lastWatchDog = DateTime.Now;
lastWatchDog = DateTime.Now;
}
// verifico SE la coda abbia dei valori...
if (QHelp.QueueFLog.Count > 0)
if (QueueFLog.Count > 0)
{
// invio pacchetto di dati (max da conf)
for (int i = 0; i < nMaxSend; i++)
{
// SE ho qualcosa in coda...
if (QHelp.QueueFLog.Count > 0)
if (QueueFLog.Count > 0)
{
string currVal = "";
if (MPOnline)
@@ -1845,16 +1850,16 @@ namespace IOB_WIN
if (IobOnline)
{
// se ho + di 2 elementi in coda --> uso invio JSON in blocco...
if (QHelp.QueueFLog.Count > 1)
if (QueueFLog.Count > 1)
{
List<string> listaValori = new List<string>();
// se ho + di maxJsonData elementi --> invio un set di dati alla volta
if (QHelp.QueueFLog.Count > maxJsonData)
if (QueueFLog.Count > maxJsonData)
{
// prendoi primi maxJsonDataValori
for (int j = 0; j < maxJsonData; j++)
{
QHelp.QueueFLog.TryDequeue(out currVal);
QueueFLog.TryDequeue(out currVal);
listaValori.Add(currVal);
}
sendDataBlock(urlType.FLog, listaValori);
@@ -1862,17 +1867,17 @@ namespace IOB_WIN
else
{
// invio in blocco
listaValori = QHelp.QueueFLog.ToList();
listaValori = QueueFLog.ToList();
// invio
sendDataBlock(urlType.FLog, listaValori);
// svuoto!
QHelp.QueueFLog = new ConcurrentQueue<string>();
QueueFLog = new ConcurrentQueue<string>();
}
}
else
{
// INVIO SINGOLO...!!!
QHelp.QueueFLog.TryDequeue(out currVal);
QueueFLog.TryDequeue(out currVal);
sendToMoonPro(urlType.FLog, currVal);
}
}
@@ -2807,7 +2812,7 @@ namespace IOB_WIN
// mostro dati variati letti...
displayOtherData(val);
// accodo IN PRIMIS al FluxLog --> accodo (valore già formattato)!
QHelp.QueueFLog.Enqueue(encodedVal);
QueueFLog.Enqueue(encodedVal);
// accodo ANCHE alla coda allarmi che trasmetterò SOLO SE a scadenza impostata (10 sec?) ho allarmi perdurati...
// loggo!
@@ -2829,18 +2834,18 @@ namespace IOB_WIN
// mostro dati variati letti...
displayOtherData(val);
// --> accodo (valore già formattato)!
QHelp.QueueFLog.Enqueue(encodedVal);
QueueFLog.Enqueue(encodedVal);
// se abilitato controllo coda FLog (superiore a 0...)
if (maxQueueFLog > 0)
{
// se ho una coda superiore a max ammesso
if (QHelp.QueueFLog.Count > maxQueueFLog)
if (QueueFLog.Count > maxQueueFLog)
{
// elimino valori iniziali fino a tornare al max ammesso...
while (QHelp.QueueFLog.Count > maxQueueFLog)
while (QueueFLog.Count > maxQueueFLog)
{
string currVal = "";
QHelp.QueueFLog.TryDequeue(out currVal);
QueueFLog.TryDequeue(out currVal);
lgInfo($"Eliminazione ca coda FLog per superamento maxLengh: {currVal}");
}
}
@@ -2875,7 +2880,7 @@ namespace IOB_WIN
// mostro dati variati letti...
displayInData(ref currDispData);
// --> accodo (valore già formattato)!
QHelp.QueueIN.Enqueue(qEncodeIN);
QueueIN.Enqueue(qEncodeIN);
// loggo!
lgInfo(string.Format("[QUEUE-IN] {0}", qEncodeIN));
// aggiorno counters ed eventuale reset
@@ -3070,10 +3075,10 @@ namespace IOB_WIN
public bool forceSplitOdl()
{
bool fatto = false;
if (DtHelp.vetoSplit < DateTime.Now)
if (vetoSplit < DateTime.Now)
{
// imposto veto x 1 minuto ad altre chiamate...
DtHelp.vetoSplit = DateTime.Now.AddMinutes(1);
vetoSplit = DateTime.Now.AddMinutes(1);
// eseguo SOLO SE sono online...
if (MPOnline && IobOnline)
{
@@ -3184,13 +3189,13 @@ namespace IOB_WIN
{
// imposto flag adapter running..
adpCommAct = true;
DtHelp.adpStartRun = DateTime.Now;
adpStartRun = DateTime.Now;
}
catch (Exception exc)
{
string errore = $"Adapter NOT STARTED!!!{Environment.NewLine}{exc}";
adpCommAct = false;
DtHelp.adpStartRun = DateTime.Now;
adpStartRun = DateTime.Now;
currDispData.newLiveLogData = errore;
}
if (adpCommAct)
@@ -3278,11 +3283,11 @@ namespace IOB_WIN
// log ADP running
lgError("Non eseguo chiamata: ADP ancora in running");
// se è bloccato da oltre maxSec lo sblocco...
if (DateTime.Now.Subtract(DtHelp.adpStartRun).TotalSeconds > utils.CRI("maxAdapterLockSec"))
if (DateTime.Now.Subtract(adpStartRun).TotalSeconds > utils.CRI("maxAdapterLockSec"))
{
// tolgo flag running
adpCommAct = false;
DtHelp.adpStartRun = DateTime.Now;
adpStartRun = DateTime.Now;
}
}
}
@@ -3293,11 +3298,11 @@ namespace IOB_WIN
{
// controllo se sia scaduto periodi di veto al tryConnect...
int waitRecMSec = utils.CRI("waitRecMSec") * 2;
DateTime dtVeto = DtHelp.lastConnectTry.AddMilliseconds(waitRecMSec);
DateTime dtVeto = lastConnectTry.AddMilliseconds(waitRecMSec);
if (DateTime.Now > dtVeto)
{
lgInfo($"Retry Time Elapsed (waited for {waitRecMSec} ms)--> NOW tryConnect");
DtHelp.lastConnectTry = DateTime.Now;
lastConnectTry = DateTime.Now;
tryConnect();
}
}
@@ -3544,16 +3549,16 @@ namespace IOB_WIN
// loggo SOLO se del mio IOB corrente...
if (item.classCall == cIobConf.codIOB)
{
lgInfo("{4}|Chiamate {0}: effettuate {1}, tempo medio {2:N2} msec | impegno canale {3:P3}", item.codCall, item.numCall, item.avgMsec, item.totMsec.TotalSeconds / DateTime.Now.Subtract(DtHelp.AvvioAdp).TotalSeconds, cIobConf.codIOB);
lgInfo("{4}|Chiamate {0}: effettuate {1}, tempo medio {2:N2} msec | impegno canale {3:P3}", item.codCall, item.numCall, item.avgMsec, item.totMsec.TotalSeconds / DateTime.Now.Subtract(AvvioAdp).TotalSeconds, cIobConf.codIOB);
globNumCall += item.numCall;
globAvgMsec += item.totMsec;
}
}
// riporto conteggio medio al secondo...
lgInfo("{4}|Chiamate GLOBALI: {0}, periodo: {1:N2} minuti.cent, tempo medio {2:N2} msec | impegno canale {3:P3}", globNumCall, DateTime.Now.Subtract(DtHelp.AvvioAdp).TotalMinutes, globAvgMsec.TotalMilliseconds / globNumCall, globAvgMsec.TotalSeconds / DateTime.Now.Subtract(DtHelp.AvvioAdp).TotalSeconds, cIobConf.codIOB);
lgInfo("{4}|Chiamate GLOBALI: {0}, periodo: {1:N2} minuti.cent, tempo medio {2:N2} msec | impegno canale {3:P3}", globNumCall, DateTime.Now.Subtract(AvvioAdp).TotalMinutes, globAvgMsec.TotalMilliseconds / globNumCall, globAvgMsec.TotalSeconds / DateTime.Now.Subtract(AvvioAdp).TotalSeconds, cIobConf.codIOB);
lgInfo("{0}--------------- STOP TIMING DATA ---------------{0}", Environment.NewLine);
// mostro in form statistiche globali!
parentForm.updateComStats(string.Format("Periodo: {0:N2}min | {1} x {2:N2}ms | canale {3:P3}", DateTime.Now.Subtract(DtHelp.AvvioAdp).TotalMinutes, globNumCall, globAvgMsec.TotalMilliseconds / globNumCall, globAvgMsec.TotalSeconds / DateTime.Now.Subtract(DtHelp.AvvioAdp).TotalSeconds));
parentForm.updateComStats(string.Format("Periodo: {0:N2}min | {1} x {2:N2}ms | canale {3:P3}", DateTime.Now.Subtract(AvvioAdp).TotalMinutes, globNumCall, globAvgMsec.TotalMilliseconds / globNumCall, globAvgMsec.TotalSeconds / DateTime.Now.Subtract(AvvioAdp).TotalSeconds));
}
}
@@ -3842,7 +3847,7 @@ namespace IOB_WIN
// init obj display
newDisplayData currDispData = new newDisplayData();
// controllo contatore invio "keepalive"... invio solo a scadenza
if (DateTime.Now.Subtract(DtHelp.lastDisconnCheck).TotalSeconds > utils.CRI("disconMaxSec"))
if (DateTime.Now.Subtract(lastDisconnCheck).TotalSeconds > utils.CRI("disconMaxSec"))
{
// resetto tutti i vlaori BYTE IN/PREV/OUT... così invio macchina spenta...
B_input = 0;
@@ -3850,7 +3855,7 @@ namespace IOB_WIN
B_previous = 0;
accodaSigIN(ref currDispData);
// update controllo
DtHelp.lastDisconnCheck = DateTime.Now;
lastDisconnCheck = DateTime.Now;
}
raiseRefresh(currDispData);
}
@@ -4108,7 +4113,7 @@ namespace IOB_WIN
if (connectionOk)
{
readSemafori(ref currDispData);
DtHelp.lastReadPLC = DateTime.Now;
lastReadPLC = DateTime.Now;
}
else
{
@@ -4132,7 +4137,7 @@ namespace IOB_WIN
/// </summary>
public virtual void readSemafori(ref newDisplayData currDispData)
{
DtHelp.lastReadPLC = DateTime.Now;
lastReadPLC = DateTime.Now;
}
/// <summary>
@@ -4258,12 +4263,12 @@ namespace IOB_WIN
{
currDispData.semOut = Semaforo.SV;
// se oltre 1 min NON era online --> check pezzi!
if (DateTime.Now.Subtract(DtHelp.lastIobOnline).TotalMinutes > 1 && !isMulti)
if (DateTime.Now.Subtract(lastIobOnline).TotalMinutes > 1 && !isMulti)
{
lgInfo($"sendDataBlock --> offline timeout ({DtHelp.lastIobOnline}) --> pzCntReload(true)");
lgInfo($"sendDataBlock --> offline timeout ({lastIobOnline}) --> pzCntReload(true)");
pzCntReload(true);
}
DtHelp.lastIobOnline = DateTime.Now;
lastIobOnline = DateTime.Now;
}
else
{
@@ -4285,7 +4290,7 @@ namespace IOB_WIN
// riporto cosa inviato
currDispData.newUrlCallData = lastUrl;
// aggiorno data ultimo watchdog...
DtHelp.lastWatchDog = DateTime.Now;
lastWatchDog = DateTime.Now;
}
catch
{
@@ -4334,9 +4339,9 @@ namespace IOB_WIN
// loggo!
lgInfo(string.Format("[SEND] {0} -> {1}", queueVal, answ));
// se oltre 1 min NON era online --> check pezzi!
if (DateTime.Now.Subtract(DtHelp.lastIobOnline).TotalMinutes > 1 && !isMulti)
if (DateTime.Now.Subtract(lastIobOnline).TotalMinutes > 1 && !isMulti)
{
lgInfo($"sendToMoonPro --> offline timeaout ({DtHelp.lastIobOnline}) --> pzCntReload(true)");
lgInfo($"sendToMoonPro --> offline timeaout ({lastIobOnline}) --> pzCntReload(true)");
pzCntReload(true);
}
// se richiesto effettuo refresh contapezzi
@@ -4345,7 +4350,7 @@ namespace IOB_WIN
pzCntReload(true);
needRefreshPzCount = false;
}
DtHelp.lastIobOnline = DateTime.Now;
lastIobOnline = DateTime.Now;
// se "OK" verde, altrimenti errore --> ROSSO
if (answ == "OK")
{
@@ -4374,7 +4379,7 @@ namespace IOB_WIN
#endif
currDispData.newUrlCallData = lastUrl;
// aggiorno data ultimo watchdog...
DtHelp.lastWatchDog = DateTime.Now;
lastWatchDog = DateTime.Now;
}
catch
{
@@ -4426,11 +4431,11 @@ namespace IOB_WIN
maxJsonDataEv = utils.CRI("maxJsonDataEv");
parentForm.commPlcActive = false;
adpRunning = true;
DtHelp.AvvioAdp = DateTime.Now;
DtHelp.lastWatchDog = DtHelp.AvvioAdp;
DtHelp.lastPING = DtHelp.AvvioAdp;
DtHelp.lastReadPLC = DtHelp.AvvioAdp.AddMinutes(-1);
DtHelp.lastDisconnCheck = DtHelp.AvvioAdp;
AvvioAdp = DateTime.Now;
lastWatchDog = AvvioAdp;
lastPING = AvvioAdp;
lastReadPLC = AvvioAdp.AddMinutes(-1);
lastDisconnCheck = AvvioAdp;
TimingData.resetData();
// aggiungo altri defaults
setDefaults(resetQueue);
@@ -4449,28 +4454,28 @@ namespace IOB_WIN
{
// svuoto le code dei valori letti e non ancora trasmessi...
parentForm.displayTaskAndLog("[CLOSING] Svuotamento FORZATO coda segnali...");
while (QHelp.QueueIN.Count > 0)
while (QueueIN.Count > 0)
{
// INVIO COMUNQUE...!!!
string valore = "";
QHelp.QueueIN.TryDequeue(out valore);
QueueIN.TryDequeue(out valore);
sendToMoonPro(urlType.SignIN, valore);
}
parentForm.displayTaskAndLog("[CLOSING] Svuotamento FORZATO coda FluxLOG...");
// se ho + di 2 elementi in coda --> uso invio JSON in blocco...
if (QHelp.QueueFLog.Count > minJsonData)
if (QueueFLog.Count > minJsonData)
{
while (QHelp.QueueFLog.Count > 0)
while (QueueFLog.Count > 0)
{
List<string> listaValori = new List<string>();
// se ho + di maxJsonData elementi --> invio un set di dati alla volta
if (QHelp.QueueFLog.Count > maxJsonData)
if (QueueFLog.Count > maxJsonData)
{
string currVal = "";
// prendoi primi maxJsonDataValori
for (int i = 0; i < maxJsonData; i++)
{
QHelp.QueueFLog.TryDequeue(out currVal);
QueueFLog.TryDequeue(out currVal);
listaValori.Add(currVal);
}
sendDataBlock(urlType.FLog, listaValori);
@@ -4478,11 +4483,11 @@ namespace IOB_WIN
else
{
// invio in blocco
listaValori = QHelp.QueueFLog.ToList();
listaValori = QueueFLog.ToList();
// invio
sendDataBlock(urlType.FLog, listaValori);
// svuoto!
QHelp.QueueFLog = new ConcurrentQueue<string>();
QueueFLog = new ConcurrentQueue<string>();
}
}
// HO FINITO invio di FLog...
@@ -4490,10 +4495,10 @@ namespace IOB_WIN
else
{
string currVal = "";
while (QHelp.QueueFLog.Count > 0)
while (QueueFLog.Count > 0)
{
// INVIO COMUNQUE...!!!
QHelp.QueueFLog.TryDequeue(out currVal);
QueueFLog.TryDequeue(out currVal);
sendToMoonPro(urlType.FLog, currVal);
}
}
@@ -4505,7 +4510,7 @@ namespace IOB_WIN
// chiudo la connessione all'adapter...
tryDisconnect();
DtHelp.StopAdp = DateTime.Now;
StopAdp = DateTime.Now;
adpTryRestart = tryRestart;
adpRunning = false;
// chiudo!
@@ -4519,12 +4524,12 @@ namespace IOB_WIN
public void svuotaCodaSignIN()
{
// verifico SE la coda abbia dei valori...
if (QHelp.QueueIN.Count > 0)
if (QueueIN.Count > 0)
{
// invio pacchetto di dati (max da conf)
for (int i = 0; i < nMaxSend; i++)
{
if (QHelp.QueueIN.Count > 0)
if (QueueIN.Count > 0)
{
string currVal = "";
// se online provo
@@ -4533,16 +4538,16 @@ namespace IOB_WIN
if (IobOnline)
{
// se ho + di 2 elementi in coda --> uso invio JSON in blocco...
if (QHelp.QueueIN.Count > 1)
if (QueueIN.Count > 1)
{
List<string> listaValori = new List<string>();
// se ho + di maxJsonData elementi --> invio un set di dati alla volta
if (QHelp.QueueIN.Count > maxJsonDataEv)
if (QueueIN.Count > maxJsonDataEv)
{
// prendoi primi maxJsonDataValori
for (int j = 0; j < maxJsonDataEv; j++)
{
QHelp.QueueIN.TryDequeue(out currVal);
QueueIN.TryDequeue(out currVal);
listaValori.Add(currVal);
}
sendDataBlock(urlType.SignIN, listaValori);
@@ -4550,17 +4555,17 @@ namespace IOB_WIN
else
{
// invio in blocco
listaValori = QHelp.QueueIN.ToList();
listaValori = QueueIN.ToList();
// invio
sendDataBlock(urlType.SignIN, listaValori);
// svuoto!
QHelp.QueueIN = new ConcurrentQueue<string>();
QueueIN = new ConcurrentQueue<string>();
}
}
else
{
// INVIO SINGOLO...!!!
QHelp.QueueIN.TryDequeue(out currVal);
QueueIN.TryDequeue(out currVal);
sendToMoonPro(urlType.SignIN, currVal);
}
// salvo come last signal in il currVal ultimo... SE !=""
@@ -4592,7 +4597,7 @@ namespace IOB_WIN
/// </summary>
public virtual void tryConnect()
{
DtHelp.AvvioAdp = DateTime.Now;
AvvioAdp = DateTime.Now;
}
/// <summary>
+11 -11
View File
@@ -59,8 +59,8 @@ namespace IOB_WIN
{
// gestione invio ritardato contapezzi
pzCountDelay = utils.CRI("pzCountDelay");
DtHelp.lastPzCountSend = DateTime.Now;
DtHelp.lastWarnODL = DateTime.Now;
lastPzCountSend = DateTime.Now;
lastWarnODL = DateTime.Now;
if (IOBConf != null)
{
// inizializzo correttamente aree memoria secondo CONF - iniFileName
@@ -232,10 +232,10 @@ namespace IOB_WIN
}
catch (Exception exc)
{
if (DateTime.Now.Subtract(DtHelp.lastWarnODL).TotalSeconds > 15)
if (DateTime.Now.Subtract(lastWarnODL).TotalSeconds > 15)
{
lgError(exc, "Errore in fase di chiamata URL x ODL corrente | URL chiamato: {0}", urlGetCurrODL);
DtHelp.lastWarnODL = DateTime.Now;
lastWarnODL = DateTime.Now;
}
}
}
@@ -251,7 +251,7 @@ namespace IOB_WIN
if (!string.IsNullOrEmpty(currODL) && currODL != "0")
{
// controllo se è passato intervallo minimo tra 2 controlli/elaborazioni x distanziare invio e ridurre letture
if (DateTime.Now >= DtHelp.lastPzCountSend.AddMilliseconds(pzCountDelay))
if (DateTime.Now >= lastPzCountSend.AddMilliseconds(pzCountDelay))
{
// se sono differenti MOSTRO...
if (contapezziPLC != contapezziIOB)
@@ -282,16 +282,16 @@ namespace IOB_WIN
pzCntReload(true);
}
// resetto timer...
DtHelp.lastPzCountSend = DateTime.Now;
lastPzCountSend = DateTime.Now;
}
}
else
{
if (DateTime.Now >= DtHelp.lastPzCountSend.AddMilliseconds(pzCountDelay))
if (DateTime.Now >= lastPzCountSend.AddMilliseconds(pzCountDelay))
{
lgInfo($"Attenzione: mancanza ODL non procedo con gestione contapezzi. contapezziPLC OSAI: {contapezziPLC} | contapezziIOB {contapezziIOB}");
// resetto timer...
DtHelp.lastPzCountSend = DateTime.Now;
lastPzCountSend = DateTime.Now;
}
}
}
@@ -632,7 +632,7 @@ namespace IOB_WIN
if (!connectionOk)
{
// controllo che il ping sia stato tentato almeno pingTestSec fa...
if (DateTime.Now.Subtract(DtHelp.lastPING).TotalSeconds > utils.CRI("pingTestSec"))
if (DateTime.Now.Subtract(lastPING).TotalSeconds > utils.CRI("pingTestSec"))
{
if (verboseLog || periodicLog)
{
@@ -647,7 +647,7 @@ namespace IOB_WIN
if (needPing)
{
// in primis salvo data ping...
DtHelp.lastPING = DateTime.Now;
lastPING = DateTime.Now;
// ora PING!!!
IPAddress address = IPAddress.Loopback;
IPAddress.TryParse(cIobConf.cncIpAddr, out address);
@@ -674,7 +674,7 @@ namespace IOB_WIN
// refresh stato allarmi!!!
if (connectionOk)
{
DtHelp.AvvioAdp = DateTime.Now;
AvvioAdp = DateTime.Now;
if (adpRunning)
{
lgInfo("Connessione OK");
+14 -10
View File
@@ -47,7 +47,11 @@ namespace IOB_WIN
/// <summary>
/// ultimo controllo decremento eventi
/// </summary>
protected DateTime DtHelp.lastEvCheck;
protected DateTime lastEvCheck;
/// <summary>
/// DataOra ultimo SimData
/// </summary>
protected DateTime lastSimData = DateTime.Now;
/// <summary>
/// Durata minima ODL x reset quando pezzi iob > pezzi macchina...
@@ -107,10 +111,10 @@ namespace IOB_WIN
// gestione invio ritardato contapezzi
DateTime adesso = DateTime.Now;
DtHelp.lastPzCountSend = adesso;
DtHelp.lastWarnODL = adesso;
DtHelp.lastEvCheck = adesso;
DtHelp.lastSimData = adesso;
lastPzCountSend = adesso;
lastWarnODL = adesso;
lastEvCheck = adesso;
lastSimData = adesso;
// sistemo parametri x simulazione...
if (cIobConf.optPar.Count > 0)
{
@@ -407,7 +411,7 @@ namespace IOB_WIN
}
}
// resetto timer...
DtHelp.lastPzCountSend = DateTime.Now;
lastPzCountSend = DateTime.Now;
}
}
// provo a fare split ODL SE NON E' multi....
@@ -637,7 +641,7 @@ namespace IOB_WIN
// valore non presente in vers default... se gestito fare override
Dictionary<string, string> outVal = new Dictionary<string, string>();
// verificare periodo SIM parametri... se passato li invio altrimenti NO... FIX a 20 sec
if (DtHelp.lastSimData.AddSeconds(waitSimPar) < DateTime.Now)
if (lastSimData.AddSeconds(waitSimPar) < DateTime.Now)
{
Random rnd = new Random();
// controllo conf memorie json (se ci sono...)
@@ -662,7 +666,7 @@ namespace IOB_WIN
}
catch
{ }
DtHelp.lastSimData = DateTime.Now;
lastSimData = DateTime.Now;
}
return outVal;
}
@@ -701,14 +705,14 @@ namespace IOB_WIN
/// </summary>
public override void processVHF()
{
if (DtHelp.lastEvCheck.AddMilliseconds(periodoMSec) < DateTime.Now)
if (lastEvCheck.AddMilliseconds(periodoMSec) < DateTime.Now)
{
// decremento contatore ultimo evento
bit2.wait--;
bit3.wait--;
bit4.wait--;
bit5.wait--;
DtHelp.lastEvCheck = DateTime.Now;
lastEvCheck = DateTime.Now;
}
}
+5 -5
View File
@@ -321,7 +321,7 @@ namespace IOB_WIN
bool answ = false;
if (!string.IsNullOrEmpty(MPIP))
{
if (utils.DtHelp.dtVetoPing < DateTime.Now)
if (utils.dtVetoPing < DateTime.Now)
{
IPStatus pingStatus = testPingServer;
// se passa il ping faccio il resto...
@@ -344,7 +344,7 @@ namespace IOB_WIN
if (answ)
{
lgInfo("SERVER ONLINE");
utils.DtHelp.dtVetoPing = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec);
utils.dtVetoPing = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec);
}
else
{
@@ -356,7 +356,7 @@ namespace IOB_WIN
else
{
// allungo periodo controllo...
utils.DtHelp.dtVetoPing = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec * 3);
utils.dtVetoPing = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec * 3);
}
}
else
@@ -365,8 +365,8 @@ namespace IOB_WIN
utils.MPIO_Online = false;
updateComStats(0, 0, false);
// imposto veto a 10 volte reinvio dati standard...
utils.DtHelp.dtVetoPing = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec * 10);
utils.dtVetoSend = utils.DtHelp.dtVetoPing;
utils.dtVetoPing = DateTime.Now.AddMilliseconds(baseUtils.nextPauseSendMSec * 10);
utils.dtVetoSend = utils.dtVetoPing;
}
}
else