diff --git a/IOB-WIN/DATA/CONF/MAIN.ini b/IOB-WIN/DATA/CONF/MAIN.ini
index 5d8d8e0a..5327409f 100644
--- a/IOB-WIN/DATA/CONF/MAIN.ini
+++ b/IOB-WIN/DATA/CONF/MAIN.ini
@@ -47,7 +47,7 @@ CMDIOB2CALL=/IOB/getIob2call?GWIP=
; SIMULAZIONE verso server ufficio
-STARTLIST=SIMUL_01
+STARTLIST=SIMUL_01,SIMUL_02,SIMUL_03,SIMUL_04
;STARTLIST=SIM_DP_02
;STARTLIST=SIMUL_03,SIMUL_04,SIMUL_05,SIMUL_06,SIMUL_07,SIMUL_08
diff --git a/IOB-WIN/IobGeneric.cs b/IOB-WIN/IobGeneric.cs
index 859a2deb..7125e18d 100644
--- a/IOB-WIN/IobGeneric.cs
+++ b/IOB-WIN/IobGeneric.cs
@@ -3,6 +3,7 @@ using Newtonsoft.Json;
using NLog;
using System;
using System.Collections;
+using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
@@ -36,7 +37,7 @@ namespace IOB_WIN
///
/// Indicazione VETO check status IOB x evitare loop troppo stretti...
///
- public static DateTime dtVetoCheckIOB = DateTime.Now;
+ public DateTime dtVetoCheckIOB = DateTime.Now;
///
/// Contapezzi attuale
///
@@ -116,19 +117,19 @@ namespace IOB_WIN
///
/// Oggetto della coda degli elementi letti (e non ancora trasmessi)
///
- public Queue QueueIN = new Queue();
+ public ConcurrentQueue QueueIN = new ConcurrentQueue();
///
/// Oggetto della coda degli elementi letti di tipo FluxLog (e non ancora trasmessi)
///
- public Queue QueueFLog = new Queue();
+ public ConcurrentQueue QueueFLog = new ConcurrentQueue();
///
/// Coda valori simulazione deterministica...
///
- public Queue QueueSIM = new Queue();
+ public ConcurrentQueue QueueSIM = new ConcurrentQueue();
///
/// Coda valori letti x DEBUG...
///
- public Queue QueueDebug = new Queue();
+ public ConcurrentQueue QueueDebug = new ConcurrentQueue();
///
/// valore booleano di check se sia in fase di COMUNICAZIONE ATTIVA con il PLC/NC
@@ -437,9 +438,15 @@ namespace IOB_WIN
// svuoto code se richiesto
if (resetQueue)
{
+ QueueIN = new ConcurrentQueue();
+ QueueFLog = new ConcurrentQueue();
+ QueueSIM = new ConcurrentQueue();
+#if false
+ // non permresso clear --> creo nuove code!
QueueIN.Clear();
QueueFLog.Clear();
- QueueSIM.Clear();
+ QueueSIM.Clear();
+#endif
}
// imposto contatori blink a zero...
i_counters = new int[32];
@@ -781,7 +788,12 @@ namespace IOB_WIN
while (QueueIN.Count > 0)
{
// INVIO COMUNQUE...!!!
- sendToMoonPro(urlType.SignIN, QueueIN.Dequeue());
+ string valore = "";
+ QueueIN.TryDequeue(out valore);
+ sendToMoonPro(urlType.SignIN, valore);
+#if false
+ sendToMoonPro(urlType.SignIN, QueueIN.Dequeue());
+#endif
}
parentForm.displayTaskAndLog("Svuotamento FORZATO coda FluxLOG...");
// se ho + di 2 elementi in coda --> uso invio JSON in blocco...
@@ -793,10 +805,15 @@ namespace IOB_WIN
// se ho + di maxJsonData elementi --> invio un set di dati alla volta
if (QueueFLog.Count > maxJsonData)
{
+ string currVal = "";
// prendoi primi maxJsonDataValori
for (int i = 0; i < maxJsonData; i++)
{
- listaValori.Add(QueueFLog.Dequeue());
+ QueueIN.TryDequeue(out currVal);
+ listaValori.Add(currVal);
+#if false
+ listaValori.Add(QueueFLog.Dequeue());
+#endif
}
sendDataBlock(urlType.FLog, listaValori);
}
@@ -807,17 +824,25 @@ namespace IOB_WIN
// invio
sendDataBlock(urlType.FLog, listaValori);
// svuoto!
- QueueFLog.Clear();
+ QueueFLog = new ConcurrentQueue();
+#if false
+ QueueFLog.Clear();
+#endif
}
}
// HO FINITO invio di FLog...
}
else
{
+ string currVal = "";
while (QueueFLog.Count > 0)
{
// INVIO COMUNQUE...!!!
- sendToMoonPro(urlType.FLog, QueueFLog.Dequeue());
+ QueueFLog.TryDequeue(out currVal);
+ sendToMoonPro(urlType.FLog, currVal);
+#if false
+ sendToMoonPro(urlType.FLog, QueueFLog.Dequeue());
+#endif
}
}
}
@@ -2186,7 +2211,10 @@ namespace IOB_WIN
if (QueueIN.Count > 0)
{
// recupero ed aggiorno ULTIMO valore...
- lastSignInVal = QueueIN.Dequeue();
+ QueueIN.TryDequeue(out lastSignInVal);
+#if false
+ lastSignInVal = QueueIN.Dequeue();
+#endif
// se ERA online provo
if (MPOnline)
{
@@ -2265,10 +2293,15 @@ namespace IOB_WIN
// se ho + di maxJsonData elementi --> invio un set di dati alla volta
if (QueueFLog.Count > maxJsonData)
{
+ string currVal = "";
// prendoi primi maxJsonDataValori
for (int j = 0; j < maxJsonData; j++)
{
- listaValori.Add(QueueFLog.Dequeue());
+ QueueFLog.TryDequeue(out currVal);
+ listaValori.Add(currVal);
+#if false
+ listaValori.Add(QueueFLog.Dequeue());
+#endif
}
sendDataBlock(urlType.FLog, listaValori);
}
@@ -2279,14 +2312,21 @@ namespace IOB_WIN
// invio
sendDataBlock(urlType.FLog, listaValori);
// svuoto!
+ QueueFLog = new ConcurrentQueue();
+#if false
QueueFLog.Clear();
- // HO FINITO invio di FLog...
+#endif
}
}
else
{
// INVIO SINGOLO...!!!
+ string currVal = "";
+ QueueFLog.TryDequeue(out currVal);
+ sendToMoonPro(urlType.FLog, currVal);
+#if false
sendToMoonPro(urlType.FLog, QueueFLog.Dequeue());
+#endif
}
}
else
diff --git a/Jenkinsfile b/Jenkinsfile
index d818ad0d..a1a85bd0 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -16,7 +16,7 @@ pipeline {
/* calcolo numero versione... diverso x branch MASTER/DEVELOP */
script {
- withEnv(['NEXT_BUILD_NUMBER=486']) {
+ withEnv(['NEXT_BUILD_NUMBER=487']) {
// env.versionNumber = VersionNumber(versionNumberString : '2.3.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true)
env.versionNumber = VersionNumber(versionNumberString : '2.3.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2006-01-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}')
env.APP_NAME = 'MAPO-IOB-WIN'