Cambio logica controllo MP-IO presente e IOB enabled x send (un solo check)

This commit is contained in:
Samuele E. Locatelli
2019-11-04 10:55:44 +01:00
parent 7107dac65b
commit 643c1575ec
2 changed files with 92 additions and 109 deletions
+1 -1
View File
@@ -38,6 +38,7 @@
<!--gestione invio dati in blocchi Json-->
<add key="minJsonData" value="2" />
<add key="maxJsonData" value="10" />
<add key="sendDataByThread" value="false" />
<!--Modalità DEMO: DemoOUT indica che NON invia davvero al server e DemoIN che simula e NON legge da PLC-->
<add key="DemoIn" value="false" />
<add key="DemoInSample" value="false" />
@@ -70,7 +71,6 @@
<!--logging-->
<add key="recTime" value="true" />
<add key="verbose" value="true" />
<!--<add key="verbose" value="false"/>-->
<add key="logEvery" value="100" />
<add key="zipLogOldDay" value="1" />
<add key="maxLogDirSize" value="400" />
+91 -108
View File
@@ -350,7 +350,7 @@ namespace IOB_WIN
/// </summary>
public bool IobOnline;
/// <summary>
/// stato Online/Offline della IOB
/// stato Online/Offline del server MP IO
/// </summary>
public bool MPOnline;
/// <summary>
@@ -1012,19 +1012,45 @@ namespace IOB_WIN
/// </summary>
private void trySendValues()
{
// verificare come gestire il task secondario senza interferenza (chiamate update su FORM da thread secondari danno errori)
if (false)
// verifico se risponde il server...
if (checkServerAlive)
{
// test con thread separato...
Task taskSigIN = TaskEx.Run(() => svuotaCodaSignIN());
Task taskFlog = TaskEx.Run(() => svuotaCodaFLog());
// verifico SE posso inviare dati
if (checkIobEnabled)
{
// verificare come gestire il task secondario senza interferenza (chiamate update su FORM da thread secondari danno errori)
if (utils.CRB("sendDataByThread"))
{
// invio con thread separato...
Task taskSigIN = TaskEx.Run(() => svuotaCodaSignIN());
Task taskFlog = TaskEx.Run(() => svuotaCodaFLog());
}
else
{
// gestione queue SignalIN (invio, display)
svuotaCodaSignIN();
// gestione queue FluxLog (invio, display)
svuotaCodaFLog();
}
}
else
{
// mostro VETO-SEND x invio... GIALLO
parentForm.sOUT = Semaforo.SG;
if (periodicLog)
{
lgInfo("IOB - VETO SEND");
}
}
}
else
{
// gestione queue SignalIN (invio, display)
svuotaCodaSignIN();
// gestione queue FluxLog (invio, display)
svuotaCodaFLog();
// mostro SERVER KO x invio... ROSSO
parentForm.sOUT = Semaforo.SR;
if (periodicLog)
{
lgInfo("IOB - SERVER NOT READY");
}
}
}
@@ -2218,58 +2244,33 @@ namespace IOB_WIN
// verifico SE la coda abbia dei valori...
if (QueueIN.Count > 0)
{
// verifico se risponde il server...
if (checkServerAlive)
// invio pacchetto di dati (max da conf)
for (int i = 0; i < nMaxSend; i++)
{
// verifico SE posso inviare dati
if (checkIobEnabled)
if (QueueIN.Count > 0)
{
// invio pacchetto di dati (max da conf)
for (int i = 0; i < nMaxSend; i++)
{
if (QueueIN.Count > 0)
{
// recupero ed aggiorno ULTIMO valore...
QueueIN.TryDequeue(out lastSignInVal);
// recupero ed aggiorno ULTIMO valore...
QueueIN.TryDequeue(out lastSignInVal);
#if false
lastSignInVal = QueueIN.Dequeue();
#endif
// se ERA online provo
if (MPOnline)
{
// INVIO!!!
sendToMoonPro(urlType.SignIN, lastSignInVal);
}
else
{
break;
}
}
else
{
break;
}
// se ERA online provo
if (MPOnline)
{
// INVIO!!!
sendToMoonPro(urlType.SignIN, lastSignInVal);
}
else
{
break;
}
}
else
{
// mostro VETO-SEND x invio... GIALLO
parentForm.sOUT = Semaforo.SG;
if (periodicLog)
{
lgInfo("IOB - VETO SEND");
}
}
}
else
{
// mostro SERVER KO x invio... ROSSO
parentForm.sOUT = Semaforo.SR;
if (periodicLog)
{
lgInfo("IOB - SERVER NOT READY");
break;
}
}
}
}
@@ -2290,86 +2291,68 @@ namespace IOB_WIN
// verifico SE la coda abbia dei valori...
if (QueueFLog.Count > 0)
{
// verifico se risponde il server...
if (checkServerAlive)
// invio pacchetto di dati (max da conf)
for (int i = 0; i < nMaxSend; i++)
{
// verifico SE posso inviare dati
if (checkIobEnabled)
// SE ho qualcosa in coda...
if (QueueFLog.Count > 0)
{
// invio pacchetto di dati (max da conf)
for (int i = 0; i < nMaxSend; i++)
if (MPOnline)
{
// SE ho qualcosa in coda...
if (QueueFLog.Count > 0)
{
if (MPOnline)
{
// se ho + di 2 elementi in coda --> uso invio JSON in blocco...
if (QueueFLog.Count > 1)
// se ho + di 2 elementi in coda --> uso invio JSON in blocco...
if (QueueFLog.Count > 1)
{
List<string> listaValori = new List<string>();
// 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++)
{
List<string> listaValori = new List<string>();
// 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++)
{
QueueFLog.TryDequeue(out currVal);
listaValori.Add(currVal);
QueueFLog.TryDequeue(out currVal);
listaValori.Add(currVal);
#if false
listaValori.Add(QueueFLog.Dequeue());
#endif
}
sendDataBlock(urlType.FLog, listaValori);
}
else
{
// invio in blocco
listaValori = QueueFLog.ToList();
// invio
sendDataBlock(urlType.FLog, listaValori);
// svuoto!
QueueFLog = new ConcurrentQueue<string>();
#if false
QueueFLog.Clear();
#endif
}
}
else
{
// INVIO SINGOLO...!!!
string currVal = "";
QueueFLog.TryDequeue(out currVal);
sendToMoonPro(urlType.FLog, currVal);
#if false
sendToMoonPro(urlType.FLog, QueueFLog.Dequeue());
#endif
}
sendDataBlock(urlType.FLog, listaValori);
}
else
{
break;
// invio in blocco
listaValori = QueueFLog.ToList();
// invio
sendDataBlock(urlType.FLog, listaValori);
// svuoto!
QueueFLog = new ConcurrentQueue<string>();
#if false
QueueFLog.Clear();
#endif
}
}
else
{
break;
// INVIO SINGOLO...!!!
string currVal = "";
QueueFLog.TryDequeue(out currVal);
sendToMoonPro(urlType.FLog, currVal);
#if false
sendToMoonPro(urlType.FLog, QueueFLog.Dequeue());
#endif
}
}
else
{
break;
}
}
else
{
// mostro VETO-SEND x invio... GIALLO
parentForm.sOUT = Semaforo.SG;
break;
}
}
else
{
// mostro SERVER KO x invio... ROSSO
parentForm.sOUT = Semaforo.SR;
}
}
}
/// <summary>