From aa59ee74db2f2a2a1bf0ef50705b785d62bc0534 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Sat, 9 Nov 2019 09:22:58 +0100 Subject: [PATCH] Ancora modifica x gestione refresh signalIN con evento... --- IOB-WIN/AdapterForm.cs | 42 ++++++++++++++++---------------- IOB-WIN/IobGeneric.cs | 54 ++++++++++++++++++++++++------------------ IOB-WIN/IobWPS.cs | 5 +++- 3 files changed, 56 insertions(+), 45 deletions(-) diff --git a/IOB-WIN/AdapterForm.cs b/IOB-WIN/AdapterForm.cs index cd2d748c..6bbd5f22 100644 --- a/IOB-WIN/AdapterForm.cs +++ b/IOB-WIN/AdapterForm.cs @@ -646,56 +646,56 @@ namespace IOB_WIN /// /// Effettua update form una volta ricevuto OBJ che contiene le varie innovazioni... /// - /// - public void updateFormDisplay(newDisplayData newData) + /// + 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; } } } diff --git a/IOB-WIN/IobGeneric.cs b/IOB-WIN/IobGeneric.cs index e19771ff..e0d64ae4 100644 --- a/IOB-WIN/IobGeneric.cs +++ b/IOB-WIN/IobGeneric.cs @@ -166,10 +166,12 @@ namespace IOB_WIN /// Coda valori simulazione deterministica... /// public ConcurrentQueue QueueSIM = new ConcurrentQueue(); +#if false /// /// Coda valori letti x DEBUG... /// - public ConcurrentQueue QueueDebug = new ConcurrentQueue(); + public ConcurrentQueue QueueDebug = new ConcurrentQueue(); +#endif /// /// valore booleano di check se sia in fase di COMUNICAZIONE ATTIVA con il PLC/NC @@ -2610,23 +2612,28 @@ namespace IOB_WIN /// 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); } /// /// Processa gestione memoria x invio dati QUANDO IOB è disconnesso da CNC... /// 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); } /// /// Esegue filtraggio dati x bit blinking!!! @@ -2709,11 +2717,14 @@ namespace IOB_WIN /// /// Effettua lettura dati + /// Parametri da aggiornare x display in form /// - 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 } /// /// Accumula in coda i valori Signal IN e logga... + /// Parametri da aggiornare x display in form /// - 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); } /// /// Update visualizzaizone BIT in ingresso + /// Parametri da aggiornare x display in form /// - 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 } /// /// Mostra cosa ha/avrebbe inviato @@ -3428,15 +3443,7 @@ namespace IOB_WIN // mostro update... accodaOtherData(newData); } - /// - /// Accoda (visualizzando in cima allo stack) la nuova stringa di output per area OTHER DATA - /// - /// - 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 /// /// Accoda (visualizzando in cima allo stack) la nuova stringa di output per area OTHER DATA /// @@ -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 /// /// Accoda (visualizzando in cima allo stack) la nuova stringa di output per area OTHER DATA /// diff --git a/IOB-WIN/IobWPS.cs b/IOB-WIN/IobWPS.cs index 798d34ad..33fd6ca3 100644 --- a/IOB-WIN/IobWPS.cs +++ b/IOB-WIN/IobWPS.cs @@ -66,6 +66,8 @@ namespace IOB_WIN /// 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)