From 83e971f1e9f3d982188ce133fa03c856c1798366 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Fri, 8 Sep 2023 15:22:38 +0200 Subject: [PATCH] Aggiunto veto accodamento QUEUE-IN: - default 1 sec - configurabile in OPCPAR come VETO_QUEUE_IN=15 - indica num secondi x cui NON accoda info IN per l'invio --- IOB-UT-NEXT/baseUtils.cs | 5 +++ IOB-WIN-NEXT/DATA/CONF/PING.ini | 1 + IOB-WIN-NEXT/Iob/Generic.cs | 47 +++++++++++++++++++++++--- IOB-WIN-NEXT/IobFile/IobFileSoitaab.cs | 22 ++++++++---- IOB-WIN-NEXT/IobSql/SqlServPama.cs | 22 ++++++++---- 5 files changed, 79 insertions(+), 18 deletions(-) diff --git a/IOB-UT-NEXT/baseUtils.cs b/IOB-UT-NEXT/baseUtils.cs index c1bab73f..9ad2a84e 100644 --- a/IOB-UT-NEXT/baseUtils.cs +++ b/IOB-UT-NEXT/baseUtils.cs @@ -22,6 +22,11 @@ namespace IOB_UT_NEXT /// public static DateTime dtVetoPing = DateTime.Now; + /// + /// Indicazione VETO accodamento INGRESSI/EVENTI sino alla data-ora indicata + /// + public static DateTime dtVetoQueueIN = DateTime.Now; + /// /// Indicazione VETO invio a server sino alla data-ora indicata /// diff --git a/IOB-WIN-NEXT/DATA/CONF/PING.ini b/IOB-WIN-NEXT/DATA/CONF/PING.ini index de8135e3..dcf81672 100644 --- a/IOB-WIN-NEXT/DATA/CONF/PING.ini +++ b/IOB-WIN-NEXT/DATA/CONF/PING.ini @@ -34,6 +34,7 @@ MAX_COUNTER_BLINK = 15 BLINK_FILT=0 [OPTPAR] +VETO_QUEUE_IN=15 AUTO_CHANGE_ODL=false POWEROFF_TIMEOUT_SEC=60 diff --git a/IOB-WIN-NEXT/Iob/Generic.cs b/IOB-WIN-NEXT/Iob/Generic.cs index d39ae9b1..fc6a3527 100644 --- a/IOB-WIN-NEXT/Iob/Generic.cs +++ b/IOB-WIN-NEXT/Iob/Generic.cs @@ -337,6 +337,8 @@ namespace IOB_WIN_NEXT.Iob // checkLogDir x shrink! checkShrinkDir(); + // imposto veto invio per i prossimi sec + dtVetoQueueIN = DateTime.Now.AddSeconds(vetoQueueIn); // concluso! lgInfoStartup("Istanziata classe preliminare IOBGeneric"); } @@ -396,6 +398,21 @@ namespace IOB_WIN_NEXT.Iob } } + /// + /// Indicazione VETO accodamento valori INGRESSI/EVENTI sino alla data-ora indicata + /// + public static DateTime dtVetoQueueIN + { + get + { + return utils.dtVetoQueueIN; + } + set + { + utils.dtVetoQueueIN = value; + } + } + /// /// Indicazione VETO invio a server sino alla data-ora indicata /// @@ -1696,6 +1713,7 @@ namespace IOB_WIN_NEXT.Iob /// public void accodaSigIN(ref newDisplayData currDispData) { + DateTime adesso = DateTime.Now; // mostro dati variati letti... displayInData(ref currDispData); // verifico veto a invio status macchina @@ -1706,10 +1724,18 @@ namespace IOB_WIN_NEXT.Iob } else { - // --> accodo (valore già formattato)! - QueueIN.Enqueue(qEncodeIN); - // loggo! - lgDebug($"[QUEUE-IN] {qEncodeIN}"); + // verifico non sia in veto invio iniziale... + if (dtVetoQueueIN >= adesso) + { + lgDebug($"[VETO FOR QUEUE-IN] | {qEncodeIN} - MESSAGE NOT SENT | {adesso:yyyyMMdd_HHmmss}"); + } + else + { + // --> accodo (valore già formattato)! + QueueIN.Enqueue(qEncodeIN); + // loggo! + lgDebug($"[QUEUE-IN] {qEncodeIN}"); + } } // aggiorno counters ed eventuale reset nReadFilt++; @@ -2102,6 +2128,8 @@ namespace IOB_WIN_NEXT.Iob return valTransl; } + + /// /// effettua recupero dati ed invio valori modificati... /// @@ -4360,6 +4388,11 @@ namespace IOB_WIN_NEXT.Iob /// protected int[] i_counters; + /// + /// Durata in secondi del divieto accodamento segnali IN alla fase di startup + /// + protected int vetoQueueIn = 1; + /// /// Indica impianto IN SETUP (fino a quando SMETTE di esserlo...) /// @@ -8143,6 +8176,12 @@ namespace IOB_WIN_NEXT.Iob lastPeriodicLog = DateTime.Now; // fix parametri generali... enablePrgName = true; + // valore standard divieto accodamento segnali IN + string VETO_QUEUE_IN = getOptPar("VETO_QUEUE_IN"); + if (!string.IsNullOrEmpty(VETO_QUEUE_IN)) + { + int.TryParse(VETO_QUEUE_IN, out vetoQueueIn); + } } private void svuotaCodaContapezzi() diff --git a/IOB-WIN-NEXT/IobFile/IobFileSoitaab.cs b/IOB-WIN-NEXT/IobFile/IobFileSoitaab.cs index bfa3b5f0..4f617e33 100644 --- a/IOB-WIN-NEXT/IobFile/IobFileSoitaab.cs +++ b/IOB-WIN-NEXT/IobFile/IobFileSoitaab.cs @@ -528,14 +528,22 @@ namespace IOB_WIN_NEXT.IobFile int valInt = decodeSoitaabLog(sLog2send.valString); string currVal = getEncodSigLog(sLog2send.dtRif, valInt, counterSigIN); - // --> accodo (valore già formattato)! - QueueIN.Enqueue(currVal); - // loggo! - lgTrace(string.Format("[QUEUE-IN] {0}", currVal)); - counterSigIN++; - if (counterSigIN > 9999) + // verifico non sia in veto invio iniziale... + if (dtVetoQueueIN >= adesso) { - counterSigIN = 0; + lgDebug($"[VETO FOR QUEUE-IN] | {currVal} - MESSAGE NOT SENT | {adesso:yyyyMMdd_HHmmss}"); + } + else + { + // --> accodo (valore già formattato)! + QueueIN.Enqueue(currVal); + // loggo! + lgTrace(string.Format("[QUEUE-IN] {0}", currVal)); + counterSigIN++; + if (counterSigIN > 9999) + { + counterSigIN = 0; + } } } diff --git a/IOB-WIN-NEXT/IobSql/SqlServPama.cs b/IOB-WIN-NEXT/IobSql/SqlServPama.cs index fbd754a3..a0427b47 100644 --- a/IOB-WIN-NEXT/IobSql/SqlServPama.cs +++ b/IOB-WIN-NEXT/IobSql/SqlServPama.cs @@ -639,14 +639,22 @@ namespace IOB_WIN_NEXT.IobSql foreach (var sLog2send in data2send) { string currVal = getEncodSigLog(sLog2send.DtEve, sLog2send.ValInt, counterSigIN); - // --> accodo (valore già formattato)! - QueueIN.Enqueue(currVal); - // loggo! - lgTrace(string.Format("[QUEUE-IN] {0}", currVal)); - counterSigIN++; - if (counterSigIN > 9999) + // verifico non sia in veto invio iniziale... + if (dtVetoQueueIN >= adesso) { - counterSigIN = 0; + lgDebug($"[VETO FOR QUEUE-IN] | {currVal} - MESSAGE NOT SENT | {adesso:yyyyMMdd_HHmmss}"); + } + else + { + // --> accodo (valore già formattato)! + QueueIN.Enqueue(currVal); + // loggo! + lgTrace(string.Format("[QUEUE-IN] {0}", currVal)); + counterSigIN++; + if (counterSigIN > 9999) + { + counterSigIN = 0; + } } } }