Continuo integrazione nuova coda ULog

This commit is contained in:
Samuele Locatelli
2022-02-28 16:39:59 +01:00
parent d680cbd2ab
commit 0199e8364c
3 changed files with 114 additions and 2 deletions
+2
View File
@@ -58,6 +58,8 @@ SIM_RC=100|1
SIM_RS=200|1
; indica simulazione dichiarazioni (note) utente
SIM_DICH=300|1
; indica matricola opr simulata
SIM_MATR_OPR=1
; gestione DynData simulati
ENABLE_DYN_DATA=TRUE
+70
View File
@@ -1069,6 +1069,11 @@ namespace IOB_WIN_NEXT
/// </summary>
public int counterFLog { get; set; }
/// <summary>
/// Contatore x invio dati UserLog
/// </summary>
public int counterULog { get; set; }
/// <summary>
/// Contatore x invio dati SignalIN
/// </summary>
@@ -3284,6 +3289,28 @@ namespace IOB_WIN_NEXT
}
}
/// <summary>
/// Accumula in coda i valori USER LOG e logga...
/// </summary>
/// <param name="val">VALORE RAW (x display)</param>
/// <param name="encodedVal">VALORE già processato con qEncodeULog(...)</param>
public void accodaUserLog(string val, string encodedVal)
{
// mostro dati variati letti...
displayOtherData(val);
// accodo IN PRIMIS al FluxLog --> accodo (valore già formattato)!
QueueULog.Enqueue(encodedVal);
// loggo!
lgInfo(string.Format("[QUEUE-USER-LOG] {0}", encodedVal));
counterULog++;
if (counterULog > 9999)
{
counterFLog = 0;
}
}
/// <summary>
/// Accumula in coda i valori Flux Log e logga...
/// </summary>
@@ -4602,6 +4629,22 @@ namespace IOB_WIN_NEXT
{ }
return answ;
}
/// <summary>
/// Fornisce il valore di UserLog e valore in formato valido x messa in coda nel formato dtEve#flux#value#cont
/// <paramref name="flusso">Flusso dati (RC/RS/DI)</paramref>
/// <paramref name="valore">Valore da inviare</paramref>
/// </summary>
public string qEncodeULog(string flusso, string valore)
{
string answ = "";
try
{
answ = $"{DateTime.Now:yyyyMMddHHmmssfff}#{flusso}#{valore}#{counterULog}";
}
catch
{ }
return answ;
}
/// <summary>
/// Fornisce il valore di flusso e valore in formato valido x messa in coda nel formato dtEve#flux#value#cont
@@ -5095,6 +5138,33 @@ namespace IOB_WIN_NEXT
sendToMoonPro(urlType.FLog, currVal);
}
}
// svuoto coda ULog
while (QueueULog.Count > 0)
{
List<string> listaValori = new List<string>();
// se ho + di maxJsonData elementi --> invio un set di dati alla volta
if (QueueULog.Count > maxJsonData)
{
string currVal = "";
// prendoi primi maxJsonDataValori
for (int i = 0; i < maxJsonData; i++)
{
QueueULog.TryDequeue(out currVal);
listaValori.Add(currVal);
}
sendDataBlock(urlType.ULog, listaValori);
}
else
{
// invio in blocco
listaValori = QueueULog.ToList();
// invio
sendDataBlock(urlType.ULog, listaValori);
// svuoto!
QueueULog = new ConcurrentQueue<string>();
}
}
}
parentForm.displayTaskAndLog("[STOP] Stopping adapter...");
adpTryRestart = false;
+42 -2
View File
@@ -60,7 +60,10 @@ namespace IOB_WIN_NEXT
/// </summary>
protected simPar simDich;
/// <summary>
/// Matricola OPR simulato
/// </summary>
protected int matrOpr = 1;
protected bool disableSimStatus = false;
@@ -167,6 +170,7 @@ namespace IOB_WIN_NEXT
simRC = setupSimPar("SIM_RC");
simRS = setupSimPar("SIM_RS");
simDich = setupSimPar("SIM_DICH");
int.TryParse(getOptPar("SIM_MATR_OPR"), out matrOpr);
}
setParamPlc();
// ricarico da server i dati dei pezzi fatti...
@@ -500,7 +504,10 @@ namespace IOB_WIN_NEXT
// preparo record controlli... guasto se mi esce un secondo divisibile x 25
DateTime adesso = DateTime.Now;
bool esitoOk = adesso.Second % 25 == 0 ? false : true;
string note = esitoOk ? "" : $"SIM Controllo fallito alle {DateTime.Now:yyyy-MM-dd HH:mm:ss}";
string sVal = $"MatrOpr: {matrOpr} | Esito: {esitoOk} | note: {note}";
// accodo x invio
accodaUserLog(sVal, qEncodeULog("RC", $"{esitoOk}|{note}"));
// decremento duration
simRC.duration--;
// controllo se sia scaduta la duration... in quel caso reset...
@@ -509,6 +516,39 @@ namespace IOB_WIN_NEXT
simRC = setupSimPar("SIM_RC");
}
}
if (simRS.wait <= 0)
{
// preparo record controlli... guasto se mi esce un secondo divisibile x 25
DateTime adesso = DateTime.Now;
int causale = adesso.Second % 5;
string note = $"SIM Scarto alle {DateTime.Now:yyyy-MM-dd HH:mm:ss} | causale: {causale}";
string sVal = $"MatrOpr: {matrOpr} | Causale: {causale} | note: {note}";
// accodo x invio
accodaUserLog(sVal, qEncodeULog("RS", $"{causale:00}|{note}"));
// decremento duration
simRS.duration--;
// controllo se sia scaduta la duration... in quel caso reset...
if (simRS.duration <= 0)
{
simRS = setupSimPar("SIM_RS");
}
}
if (simDich.wait <= 0)
{
// preparo record controlli... guasto se mi esce un secondo divisibile x 25
DateTime adesso = DateTime.Now;
string note = $"SIM Nota automatica alle {DateTime.Now:yyyy-MM-dd HH:mm:ss}";
string sVal = $"MatrOpr: {matrOpr} | nota: {note}";
// accodo x invio
accodaUserLog(sVal, qEncodeULog("DI", $"{note}"));
// decremento duration
simDich.duration--;
// controllo se sia scaduta la duration... in quel caso reset...
if (simDich.duration <= 0)
{
simDich = setupSimPar("SIM_DICH");
}
}
// init obj display