Forum Italiano sui Prodotti NI

annulla
Visualizzazione dei risultati per 
Cerca invece 
Intendevi dire: 

VI e subVIs

Salve a tutti,
 
vado subito al nocciolo del problema: usando LabVIEW 8.0 voglio creare un'unica VI che mi consenta di salvare i dati di un'acquisizione e successivamente di aprire il file salvato.
Ho pensato dunque di creare due subVI: una che gestisce l'acquisizione e il salvataggio dei dati, ed una per aprire il file salvato.
Quello che voglio ottenere è l'indipenza delle due subVI e la ciclicità dell'applicazione: mi spiego meglio!...L'applicazione deve funzionare fin quando l'utente non interrompe l'applicazione completa, avendo sempre la possibilità, finché ciò non accade, di poter far funzionare una o l'altra subVI senza interrompere di volta in volta l'applicazione totale.
Per realizzare la selezione delle due subVI ho pensato di usare un Tab Control...ho fatto bene?
Non capisco perché quando finisco di usare un'applicazione, ad esempio dopo aver salvato il dato, quando ritorno al front panel della VI completa, selezionando in "Open File" il tasto "Open Wave" l'applicazione non parte...questo accade anche viceversa.
Confido nella vostra Pazienza ed Esperienza 🙂
Grazie
  Francesco
 
p.s. ho allegato le VI e le subVIs...spero non ci siano problemi nell'apertura!
0 Kudos
Messaggio 1 di 10
6.137Visualizzazioni
Ciao Francesco,
    per qualche strana ragione ti rispondo sempre io! Vabè, magari mi offrirai un caffè quando passi da pavia...

    Ho aperto l'applicazione "Open_prova_unico_blocco.vi", e credo che ci sia qualcosa di non troppo elegante, per così dire...   per come è strutturato il tutto, tu dovresti, prima di lanciare l'applicazione, attivare il bottone con l'operazione desiderata, e poi lanciare l'applicazione stessa, e così esegui una sola azione, ma non credo che questo modo di funzionamento sia quello che desideri.

   Credo che dovresti gestire il tutto tramite eventi: avrai un main loop, che contiene l'event structure, ed a seconda del tasto premuto, avrai un'azione che segue.

   Riguardo il fatto di aprire il file salvato nello stesso VI in cui lo crei... bè, non è il massimo, io avrei fatto due applicazioni distinte, ma se usi gli eventi, dovrebbe andare bene.

   Ah, dimenticavo: non sono stato in grado di aprire completamente l'applicazione, in quanto non hai allegato i subVI, ma il senso è chiaro lo stesso...

   Ora guardo meglio gli altri files, ma credo che preparerò un'applicazione scheletro, almeno è più chiaro.

graziano
0 Kudos
Messaggio 2 di 10
6.126Visualizzazioni
Eccomi qua,
   come promesso... lo scheletro è molto semplice, ma contiene dei semplici consigli per strutturare il tuo codice.  Da notare l'ENUM collegato al CASE Structure, che ti permette di scrivere un codice più leggibile! Smiley Felice

   Il limite di questo programmino è che fin quando non hai finito l'acquisizione, non puoi aprire il file, e viceversa, ma credo che questo possa essere considerato un comportamento voluto.

graziano
0 Kudos
Messaggio 3 di 10
6.124Visualizzazioni
OOOPs, ho commesso un grave errore nel primo post.... Pavia si scrive in lettera maiuscola, of course! Smiley Lingua
0 Kudos
Messaggio 4 di 10
6.123Visualizzazioni

Salve Francesco

Se non ho frainteso, la sua esigenza è di realizzare una applicazione che gestisca in maniera continua più processi in parallelo.

L'esempio da lei postato andrebbe rivisto e rielaborato. Alcuni errori di programmazione (il codice esegue un solo case poichè non esiste una struttura ciclica che lo circonda, il ciclo while del caso 'Open File' esegue all'infinito) possono aver causato il malfunzionamento da voi osservato. L'esempio postato da Graziano può indicare una strada per risolvere il problema.

Personalmente le consiglio di osservare e prendere spunti dai seguenti due esempi: 'old Event Handler' e 'New Event Handler' per realizzare una continua analisi di processi paralleli. Trova gli esempi succitati nel NI Example Finder; facilmente accessibile dalla barra del menu di LabVIEW sotto Help»Find Examples...

Spero queste informazioni le possano essere d'aiuto.

Distintamente

Hudson | NIIT AE

0 Kudos
Messaggio 5 di 10
6.112Visualizzazioni
Ciao Graziano,
  scusa se ti rispondo solo adesso...ma ho avuto problemi con internet!...mi piacerebbe davvero offrirti più di un caffé perché il tempo che mi dedichi è veramente impagabile....(vorrei darti le 5 stelline...ma non so come si fa...non le trovo! Devo essere orbo!!!)
In ogni caso non vedo l'ora di provare la VI che mi hai modificato...non finirò mai di ringraziarti!

Anche se in questi giorni (senza internet) avevo trovato un'ottima soluzione, spero di migliorarla apportando delle modifiche con la tua VI...

A presto
  FrancescoSmiley Strizza l'occhio

p.s. a Pavia ancora non ci sono stato...ci dovrò venire!
0 Kudos
Messaggio 6 di 10
6.108Visualizzazioni
Ciao Francesco,
   le stelline non le hai trovate perchései "giovane" in questo forum, mi sa che hai pochi post al tuo attivo, quindi ancora non puoi votare!

   Per quanto riguarda il mio esempio, considera che è veramente uno scheletro, non fa nulla di ciò di cui hai bisogno, pero' rappresenta un modo di organizzare i subVI e l'esecuzione di task diverse a seconda del bottone premuto.

   Per qualsiasi cosa, sono qua...

graziano
0 Kudos
Messaggio 7 di 10
6.098Visualizzazioni

Ciao a tutti!

Avrei anch'io una domanda da porvi!

 

Forse sarà una banalità ma è da poco che utilizzo labview.

Semplicemente il mio programma è formato da un subVI e la struttura principale. Dato che prima di lanciare il programma devo settare alcuni parametri nel subVI, vorrei far comparire il front panel del subVI insieme a quello principale. Come posso fare?

Mi auguro di essere stata chiara.

 

Grazie, Nuvola! 

0 Kudos
Messaggio 8 di 10
5.402Visualizzazioni

Ciao Nuvola,

il modo migliore per settare i parametri del subVI è farlo direttamente dal VI principale, passando i valori che vuoi impostare come input al tuo subVI. Per fare questo devi utilizzare il connector block: ulteriori informazioni sulla procedura da seguire le puoi trovare a questo link.

Se vuoi comunque mostrare il pannello frontale del subVI quando questo viene mandato in run, seleziona l'icona del subVI nel block diagram del tuo main VI, clicca con il tasto destro e scegli la voce SubVI Node Setup. Seleziona quindi l'opzione Show front panel when called ed eventualmente anche Close afterwards if originally closed.

 

Cordialmente,

 

Serena M.

0 Kudos
Messaggio 9 di 10
5.393Visualizzazioni

GRAZIE MILLE!

 

sono riuscita a risolvere il problema! 

0 Kudos
Messaggio 10 di 10
5.367Visualizzazioni