Nella progettazione di interfacce utente in LabVIEW, l’ Inizializzazione Dinamica dei Controlli, su dati estratti da file di configurazione (come INI o CSV) è una pratica comoda per garantire flessibilità anche in runtime.
Per tale ragione, è stato sviluppato un VI che sfrutta il VI Server e le proprietà intrinseche dei controlli per assegnare i valori nel loro formato originale, contribuendo così a mantenere il codice modulare e facilmente riutilizzabile.
Input e Struttura dei Dati
Il VI si basa su un dizionario, con due input principali:
- Array bidimensionale di stringhe:
Colonna 0(Key): contiene il nome o label del controllo da aggiornare.
Colonna 1(value): specifica il valore da assegnare a ciascun controllo. - Array di Control References: rappresenta l’insieme dei controlli presenti sul pannello frontale.
Questa struttura consente di mappare in modo diretto i valori di configurazione sui controlli.
Se la chiave corrispondente esiste come Label di un controllo, viene assegnato il valore corrispondente.
Un modo flessibile per inizializzare i default di controlli e indicatori.

Funzionamento e Meccanismo di Aggiornamento
Il VI Server è il motore che permette accesso alle classi e sottoclassi dell’applocazione.
Utilizzando la proprietà “VI/Pane/Controls”, è possibile ottenere un array contenente le reference di tutti i controlli presenti sul pannello.
Il VI esegue quindi un confronto tra le etichette dei controlli e quelle presenti nell’array di stringhe, aggiornando esclusivamente i controlli che presentano corrispondenza.
ù
Applicazioni nei Nostri Progetti
Questo metodo rappresenta la base su cui sono stati realizzati numerosi progetti, traduttori e altre applicazioni che permettono di configurare interfacce grafiche avanzate.
Può essere esteso con una classe per supportare il polimorfismo e quindi non solo file di testo lookup table, ma anche strutturati come file XML o JSON, garantendo così una notevole flessibilità nella gestione dei dati e nella configurazione delle GUI.
Vantaggi e Benefici del Metodo
- Flessibilità: aggiorna controlli di tipo diverso senza sviluppare codice dedicato per ciascun elemento.
- Riutilizzabilità: la separazione della logica di estrazione dei dati dall’interfaccia utente consente l’integrazione del VI in diversi progetti, riducendo tempi e complessità di sviluppo.
- Scalabilità: la gestione dinamica di un elevato numero di controlli rende il sistema particolarmente adatto per applicazioni complesse, dove la configurazione massiva è fondamentale.
Implementazione e Integrazione nel Progetto
Il codice è predisposto per essere salvato come subVI, dotato dei terminali necessari per ricevere sia l’array bidimensionale dei dati che l’array delle Control References di tipo control generico.
Una volta inserito nel diagramma a blocchi dell’applicazione, il subVI opera automaticamente seguendo questi passaggi:
- Riceve i dati di configurazione (ad esempio, da un file CSV, XML, JSON).
- Ottiene le reference dei controlli tramite la proprietà “Pane.Controls”.
- Confronta le etichette e aggiorna i controlli corrispondenti in maniera diretta e automatizzata.

Riutilizzo:
L’adozione di questo VI rappresenta una soluzione avanzata per la gestione dinamica dei controlli in LabVIEW.
Sfruttando il VI Server e il supporto del VI “String to Datatype”, il sistema garantisce aggiornamenti precisi e affidabili, mantenendo elevati standard di flessibilità, riutilizzabilità e scalabilità.
Questo metodo costituisce la base con cui sono stati realizzati numerosi progetti, traduttori e altre applicazioni che permettono di configurare GUI avanzate, sfruttando file di testo in formato lookup table e strutture dati complesse, come file XML o JSON.
Quali esperienze avete avuto nell’adozione di queste tecniche?
In che modo il riutilizzo di questo approccio ha facilitato lo sviluppo delle vostre applicazioni?
Nei nostri corsi hands-on, condividiamo esperienze pratiche come questa, ritornando ai vostri progetti le best practice raccolte in anni di progettazione.
Conversione dei Dati e Gestione Eterogenea
Per ottenere la conversione del dato è stato utilizzato il VI “String to Datatype”.
Converte la stringa (value) letta dal file di configurazione nel datatype originario del controllo, ma si deve conoscere preventivamente il tipo di dato. Si può per esempio salvare la class name o il type number, processato da un case selector, evitando così adattamenti manuali.