🖥️ tpPopulateIONetworkDisplay

La classe tpPopulateIONetworkDisplay è una NetLogic che si occupa di comporre e mostrare nella UI la diagnostica completa di tutti gli IO rack remoti presenti nel sistema.
Questa classe raccoglie i dati dai dispositivi remoti configurati e crea dinamicamente i pannelli di visualizzazione per ciascun rack IO.


🚦 Panoramica generale

La logica si basa su:

  • Un folder CommDrivers contenente i TagStructure relativi agli IO rack remoti.
  • Un layout UI (IONodesDisplay di tipo ColumnLayout) dove vengono aggiunti dinamicamente i pannelli rappresentanti ogni IO rack.
  • La comunicazione con ogni pannello remoto, che a sua volta usa la logica tpPopulateIORack per popolare i dettagli dello rack.

🛠️ Funzionamento principale

Elemento Descrizione
Populate() Metodo pubblico esportato che avvia un task asincrono per la composizione dinamica della UI.
populateTask() Metodo che esegue la scansione dei tag di tipo TagStructure e costruisce i pannelli remoti.
getRemoteIONodes(UAReference r) Metodo helper che crea un pannello remoto per ogni rack IO e ne avvia il popolamento UI.

🔍 In Depth: Funzioni di tpPopulateIONetworkDisplay


Populate()

Descrizione:
Metodo esportato per avviare la composizione della diagnostica IO in modo asincrono, evitando il blocco del thread UI.


populateTask()

Descrizione:

  1. Recupera il folder CommDrivers contenente i tag strutturati degli IO rack.
  2. Pulisce il layout UI IONodesDisplay per prepararlo a contenere i nuovi pannelli.
  3. Costruisce un array con i nomi dei tag attesi (AB:1734_{slot}SLOT:I:0 da 1 a 64).
  4. Filtra i nodi di tipo TagStructureType corrispondenti ai nomi attesi.
  5. Per ciascun nodo valido, richiama il metodo getRemoteIONodes per creare il pannello remoto.

getRemoteIONodes(UAReference r)

Descrizione:

  1. Ottiene il nodo TagStructure di destinazione dal riferimento passato.
  2. Estrae il nome del dispositivo remoto (remoteIOName).
  3. Crea un pannello (PanelType) figlio del pannello RemoteIO, con nome uguale al dispositivo remoto.
  4. Imposta la variabile RemoteIOName del pannello appena creato con il nome del dispositivo remoto.
  5. Aggiunge il pannello al layout IONodesDisplay.
  6. Effettua una pausa di 250ms (necessaria per problemi di sincronizzazione con dispositivi Rockwell).
  7. Invoca il metodo Populate() della NetLogic PopulateIORack contenuta all’interno del pannello per popolare i dettagli.

⚠️ Note importanti

  • La classe presuppone che i dispositivi remoti e i relativi tag strutturati siano correttamente configurati nel folder CommDrivers.
  • La sincronizzazione e il caricamento dei pannelli sono gestiti con una breve pausa, necessaria per garantire la corretta inizializzazione su dispositivi Rockwell.
  • Ogni pannello remoto utilizza la logica tpPopulateIORack per il popolamento dei dettagli del rack.

Se vuoi vedere come funziona il popolamento di ogni singolo rack IO, dai un’occhiata alla documentazione di tpPopulateIORack.