in data 09-04-2006 04:40 AM
in data 09-05-2006 04:37 AM
Direi che si puo' pensare di usare
Utilizzando ad esempio un Control Reference di un oggetto che si trova su Front Panel del SubVI puo' essere piazzato nel main VI per avere aggiornamento in tempo reale di quello che succede.
http://zone.ni.com/devzone/conceptd.nsf/webmain/68D318643AFA3CA086256928006C64A4
09-05-2006 07:33 AM - modificato 09-05-2006 07:33 AM
In un certo senso sono anche io un principiante
Anche io faro’ uno sforzo di chiarezza, perdona la prolissità della risposta.
Quando si programma con LabView bisogna sempre tenere a mente che l’ordine di esecuzione è controllato dai dati che scorrono attraverso il programma (DataFlow).
E’ naturale dunque che nella situazione da te descritta il Vi chiamante si aggiorni solo quando l’esecuzione del subVi chiamato termina. Questo accade perche’ solo al termine dell’esecuzione del subVi il dato è pronto per essere trasferito all’esterno.
Il fenomeno puo’ sembrare analogo al return di un dato in una funzione C, solo quando la funzione chiamata ha finito di operare restituisce il dato alla funzione chiamante, in realtà c’e’ una differenza radicale che bisogna chiarire subito.
Labview opera secondo uno paradigma di DataFlow cio’ significa che le azioni vengono effettuate quando i dati sono pronti. In LabView due azioni che non si scambiano dati all’interno di uno stesso codice possono essere eseguite contemporaneamente.
Per renderti conto di cio’ puoi fare un semplice Vi con 2 cicli while e 2 bottoni di stop separati. In ciascun ciclo inserici un wait con valori differenti e generi un random number che aggiorna una chart. Vedrai che i due cicli vivono di vita propria. Generare un esempio analogo in C non e’ altrettanto semplice, perche’ una volta entrato in un ciclo è necessario terminarlo prima di eseguire il successivo. Il C è un linguaggio Procedurale quindi i comandi vengono eseguiti come compaiono nel listato. LabView è un linguaggio di Dataflow i comandi vengono eseguiti quando i dati sono pronti.
Dopo questa premessa passiamo ad affrontare il tuo problema specifico.
Per risolvere il tuo problema esistono alcune possibilità.
Queste due mi vengono in mente subito.
1) Se il problema è sclusivamente di visualizzazione puoi semplicemente aprire il FrontPanel del subVi e “guardare” la sua esecuzione.
2) Se il problema è più complicato e richiede l’elaborazione dei dati “Real-Time” mentre questi vengono prodotti dal SubVi puoi usare l’ottimo suggerimento di Alessio.
3) Un ulteriore alternativa può essere il metodo di programmazione “producer-consumer” che sfrutta le code per passare dati tra più cicli di uno stesso Vi.
Tieni conto che la gestione delle code non è mai semplice e che generalmente usare questo metodo ha senso solo se il ciclo che “produce” i dati deve viaggiare con un rate ben specifico, chiaramente dipende dall’applicazione.
Puoi trovare ulteriori informazioni a questo URL
http://zone.ni.com/devzone/conceptd.nsf/webmain/C54BADADD8BBDE4286256C5200533B80
Buon Lavoro.
Filippo
Message Edited by FiloP on 09-05-2006 08:14 AM
in data 09-06-2006 10:34 AM
Mirko, oltre a questo esiste il forum di ILVG - Italian LabVIEW user Group su cui puoi cercare o chiedere aiuto, abbiamo aiutato tanti "principianti" come te 😉
@zampala wrote:
Salve, sono un principiante e mi scuso se questo non e' il forum adatto in cui postare, ma non ho trovato una soluzione sul web...