tpPopulateIONetworkDisplay
🖥️ 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
CommDriverscontenente iTagStructurerelativi agli IO rack remoti. - Un layout UI (
IONodesDisplaydi tipoColumnLayout) 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:
- Recupera il folder
CommDriverscontenente i tag strutturati degli IO rack.- Pulisce il layout UI
IONodesDisplayper prepararlo a contenere i nuovi pannelli.- Costruisce un array con i nomi dei tag attesi (
AB:1734_{slot}SLOT:I:0da 1 a 64).- Filtra i nodi di tipo
TagStructureTypecorrispondenti ai nomi attesi.- Per ciascun nodo valido, richiama il metodo
getRemoteIONodesper creare il pannello remoto.
getRemoteIONodes(UAReference r)
Descrizione:
- Ottiene il nodo
TagStructuredi destinazione dal riferimento passato.- Estrae il nome del dispositivo remoto (
remoteIOName).- Crea un pannello (
PanelType) figlio del pannelloRemoteIO, con nome uguale al dispositivo remoto.- Imposta la variabile
RemoteIONamedel pannello appena creato con il nome del dispositivo remoto.- Aggiunge il pannello al layout
IONodesDisplay.- Effettua una pausa di 250ms (necessaria per problemi di sincronizzazione con dispositivi Rockwell).
- Invoca il metodo
Populate()della NetLogicPopulateIORackcontenuta 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.