Ancora modifica x gestione refresh signalIN con evento...

This commit is contained in:
Samuele E. Locatelli
2019-11-09 09:22:58 +01:00
parent ee177d3a1a
commit aa59ee74db
3 changed files with 56 additions and 45 deletions
+21 -21
View File
@@ -646,56 +646,56 @@ namespace IOB_WIN
/// <summary>
/// Effettua update form una volta ricevuto OBJ che contiene le varie innovazioni...
/// </summary>
/// <param name="newData"></param>
public void updateFormDisplay(newDisplayData newData)
/// <param name="currDispData"></param>
public void updateFormDisplay(newDisplayData currDispData)
{
// ciclo x ogni oggetto x caricare le innovazioni...
if (newData != null && newData.hasData)
if (currDispData != null && currDispData.hasData)
{
// RealTime display
if (!string.IsNullOrWhiteSpace(newData.newInData))
if (!string.IsNullOrWhiteSpace(currDispData.newInData))
{
dataMonitor_0 = limitLine2show($"{newData.newInData}{Environment.NewLine}{dataMonitor_0}");
dataMonitor_0 = limitLine2show($"{currDispData.newInData}{Environment.NewLine}{dataMonitor_0}");
}
if (!string.IsNullOrWhiteSpace(newData.newSignalData))
if (!string.IsNullOrWhiteSpace(currDispData.newSignalData))
{
dataMonitor_1 = limitLine2show($"{newData.newSignalData}{Environment.NewLine}{dataMonitor_1}");
dataMonitor_1 = limitLine2show($"{currDispData.newSignalData}{Environment.NewLine}{dataMonitor_1}");
}
if (!string.IsNullOrWhiteSpace(newData.newFLogData))
if (!string.IsNullOrWhiteSpace(currDispData.newFLogData))
{
dataMonitor_3 = limitLine2show($"{newData.newFLogData}{Environment.NewLine}{dataMonitor_3}");
dataMonitor_3 = limitLine2show($"{currDispData.newFLogData}{Environment.NewLine}{dataMonitor_3}");
}
if (!string.IsNullOrWhiteSpace(newData.newUrlCallData))
if (!string.IsNullOrWhiteSpace(currDispData.newUrlCallData))
{
dataMonitor_2 = limitLine2show($"{newData.newUrlCallData}{Environment.NewLine}{dataMonitor_2}");
dataMonitor_2 = limitLine2show($"{currDispData.newUrlCallData}{Environment.NewLine}{dataMonitor_2}");
}
// Bitmap lettura attuale
if (newData.counter >= 0)
if (currDispData.counter >= 0)
{
lblCounter.Text = newData.counter.ToString();
lblCounter.Text = currDispData.counter.ToString();
}
// Bitmap lettura attuale
if (!string.IsNullOrWhiteSpace(newData.currBitmap))
if (!string.IsNullOrWhiteSpace(currDispData.currBitmap))
{
lblBitmap.Text = newData.currBitmap;
lblBitmap.Text = currDispData.currBitmap;
lblBitmap.Refresh();
}
// LiveLog
if (!string.IsNullOrWhiteSpace(newData.newLiveLogData))
if (!string.IsNullOrWhiteSpace(currDispData.newLiveLogData))
{
logWatcher = newData.newLiveLogData;
logWatcher = currDispData.newLiveLogData;
}
// semafori
if (newData.semOut != Semaforo.ND)
if (currDispData.semOut != Semaforo.ND)
{
//aggiorno comunque!
sOUT = newData.semOut;
sOUT = currDispData.semOut;
}
if (newData.semIn != Semaforo.ND)
if (currDispData.semIn != Semaforo.ND)
{
//aggiorno comunque!
sIN = newData.semIn;
sIN = currDispData.semIn;
}
}
}
+31 -23
View File
@@ -166,10 +166,12 @@ namespace IOB_WIN
/// Coda valori simulazione deterministica...
/// </summary>
public ConcurrentQueue<int> QueueSIM = new ConcurrentQueue<int>();
#if false
/// <summary>
/// Coda valori letti x DEBUG...
/// </summary>
public ConcurrentQueue<int> QueueDebug = new ConcurrentQueue<int>();
public ConcurrentQueue<int> QueueDebug = new ConcurrentQueue<int>();
#endif
/// <summary>
/// valore booleano di check se sia in fase di COMUNICAZIONE ATTIVA con il PLC/NC
@@ -2610,23 +2612,28 @@ namespace IOB_WIN
/// </summary>
private void processAllMemory()
{
// init obj display
newDisplayData currDispData = new newDisplayData();
// in primis SALVO valori previous/precedenti
B_previous = B_output;
// poi faccio lettura NUOVI valori
readAllData();
readAllData(ref currDispData);
// eseguo il filtering dei valori (per i bit "blinking")
filterData();
// effettuo confronto valori vecchi/nuovi... SE trovo variazione OPPURE se è passato + di un timeout di controllo...
if (B_output != B_previous)
{
accodaSigIN();
accodaSigIN(ref currDispData);
}
raiseRefresh(currDispData);
}
/// <summary>
/// Processa gestione memoria x invio dati QUANDO IOB è disconnesso da CNC...
/// </summary>
public void processMemoryDiscon()
{
// init obj display
newDisplayData currDispData = new newDisplayData();
// controllo contatore invio "keepalive"... invio solo a scadenza
if (DateTime.Now.Subtract(lastDisconnCheck).TotalSeconds > utils.CRI("disconMaxSec"))
{
@@ -2634,10 +2641,11 @@ namespace IOB_WIN
B_input = 0;
B_output = 0;
B_previous = 0;
accodaSigIN();
accodaSigIN(ref currDispData);
// update controllo
lastDisconnCheck = DateTime.Now;
}
raiseRefresh(currDispData);
}
/// <summary>
/// Esegue filtraggio dati x bit blinking!!!
@@ -2709,11 +2717,14 @@ namespace IOB_WIN
/// <summary>
/// Effettua lettura dati
/// <paramref name="currDispData">Parametri da aggiornare x display in form</paramref>
/// </summary>
public virtual void readAllData()
public virtual void readAllData(ref newDisplayData currDispData)
{
// init obj display
newDisplayData currDispData = new newDisplayData();
if (currDispData == null)
{
currDispData = new newDisplayData();
}
try
{
if (DemoIn)
@@ -3213,11 +3224,12 @@ namespace IOB_WIN
}
/// <summary>
/// Accumula in coda i valori Signal IN e logga...
/// <paramref name="currDispData">Parametri da aggiornare x display in form</paramref>
/// </summary>
public void accodaSigIN()
public void accodaSigIN(ref newDisplayData currDispData)
{
// mostro dati variati letti...
displayInData();
displayInData(ref currDispData);
// --> accodo (valore già formattato)!
QueueIN.Enqueue(qEncodeIN);
// loggo!
@@ -3398,19 +3410,22 @@ namespace IOB_WIN
string newString = string.Format("{0:X}", B_input);
currDispData.newInData = newString;
#if false
accodaRawData(newString);
// salvo coda debug...
QueueDebug.Enqueue(B_input);
#endif
QueueDebug.Enqueue(B_input);
}
/// <summary>
/// Update visualizzaizone BIT in ingresso
/// <paramref name="currDispData">Parametri da aggiornare x display in form</paramref>
/// </summary>
public void displayInData()
public void displayInData(ref newDisplayData currDispData)
{
// mostro update...
string newString = string.Format("{0:0000}|{1}", counterSigIN, utils.IntToBinStr(B_output, 8));
accodaSignaInlData(newString);
currDispData.newSignalData = newString;
#if false
accodaSignaInlData(newString);
#endif
}
/// <summary>
/// Mostra cosa ha/avrebbe inviato
@@ -3428,15 +3443,7 @@ namespace IOB_WIN
// mostro update...
accodaOtherData(newData);
}
/// <summary>
/// Accoda (visualizzando in cima allo stack) la nuova stringa di output per area OTHER DATA
/// </summary>
/// <param name="newLine"></param>
public void accodaRawData(string newLine)
{
// inserisco in cima allo stack, trimmo e aggiorno display
parentForm.dataMonitor_0 = limitLine2show(string.Format("{0}{1}{2}", newLine, Environment.NewLine, parentForm.dataMonitor_0));
}
#if false
/// <summary>
/// Accoda (visualizzando in cima allo stack) la nuova stringa di output per area OTHER DATA
/// </summary>
@@ -3445,7 +3452,8 @@ namespace IOB_WIN
{
// inserisco in cima allo stack, trimmo e aggiorno display
parentForm.dataMonitor_1 = limitLine2show(string.Format("{0}{1}{2}", newLine, Environment.NewLine, parentForm.dataMonitor_1));
}
}
#endif
/// <summary>
/// Accoda (visualizzando in cima allo stack) la nuova stringa di output per area OTHER DATA
/// </summary>
+4 -1
View File
@@ -66,6 +66,8 @@ namespace IOB_WIN
/// </summary>
private void reloadAdapterConf()
{
// init obj display
newDisplayData currDispData = new newDisplayData();
lgInfo("BEGIN reloadAdapterConf");
// inizializzo LUT decodifica
string jsonConf = getOptPar("LUT_CONF");
@@ -84,7 +86,7 @@ namespace IOB_WIN
// imposto a zero la bitmap x riavvio!
B_input = 0;
// FORZO invio dati...
accodaSigIN();
accodaSigIN(ref currDispData);
// loggo!
lgInfo($"init input bitmap to zero: {B_input}");
}
@@ -95,6 +97,7 @@ namespace IOB_WIN
}
}
lgInfo("DONE reloadAdapterConf");
raiseRefresh(currDispData);
}
#region Metodi specifici (da verificare/completare in implementazione)