aprire e chiudere un VI dinamicamente
Moderatore: ILVG mod
-
- Advertisement
10 messaggi
• Pagina 1 di 1
aprire e chiudere un VI dinamicamente
...ma ciao!
quasi sicuramente sto sbagliando una cosa banale ma ho la testa in mille cose e non ne esco, quindi chiedo a voi.
Ho un VI col quale devo aprire dinamicamente un altro VI ( questo mi servirà perchè dovro' aprire piu' copie dello stesso VI)
Quando lo chiamo dinamicamente, la prima volta lo metto in memoria e lo mando in run, dalla seconda in poi, apro e chiudo solo il front panel.
Ho pero' un problema....per capire se devo o meno mandarlo in run, vado a guardare la proprietà execution state.
Andando pero' a verificare l'execution state, anche se arresto l'esecuzione del subVI, questa mi resta sempre in stato RUNNING anzichè passar ein Idle come mi aspettarei.
Come mai? mi sto aspettando la cosa sbagliata? sto utilizzando la proprietà sbagliata?
grazie!
Allego un estratto del mio VI.
quasi sicuramente sto sbagliando una cosa banale ma ho la testa in mille cose e non ne esco, quindi chiedo a voi.
Ho un VI col quale devo aprire dinamicamente un altro VI ( questo mi servirà perchè dovro' aprire piu' copie dello stesso VI)
Quando lo chiamo dinamicamente, la prima volta lo metto in memoria e lo mando in run, dalla seconda in poi, apro e chiudo solo il front panel.
Ho pero' un problema....per capire se devo o meno mandarlo in run, vado a guardare la proprietà execution state.
Andando pero' a verificare l'execution state, anche se arresto l'esecuzione del subVI, questa mi resta sempre in stato RUNNING anzichè passar ein Idle come mi aspettarei.
Come mai? mi sto aspettando la cosa sbagliata? sto utilizzando la proprietà sbagliata?
grazie!
Allego un estratto del mio VI.
- Allegati
-
executionstateerror.rar
- (20.33 KiB) Scaricato 209 volte
..ma ciao!


-
gepponline - Moderatore
- Messaggi: 2149
- Iscritto il: ven gen 28, 2005 11:27 am
- Località: Monticello Brianza
Advertisement
Re: aprire e chiudere un VI dinamicamente
non riesco ad aprirlo, ho ancora il 2014, ma credo possa essere dovuto al reference del vi sbagliato.....
Ogni copia rientrante che lanci ha il suo proprio ref.
Aris
Ogni copia rientrante che lanci ha il suo proprio ref.
Aris
E' sempre colpa di una massa.....e se non è quella è un if!
-
aris - Super Utente ++
- Messaggi: 645
- Iscritto il: ven lug 30, 2004 10:49 am
- Località: Medolla -MO-
Re: aprire e chiudere un VI dinamicamente
gepponline ha scritto:...ma ciao!
quasi sicuramente sto sbagliando una cosa banale ma ho la testa in mille cose e non ne esco, quindi chiedo a voi.
Ho un VI col quale devo aprire dinamicamente un altro VI ( questo mi servirà perchè dovro' aprire piu' copie dello stesso VI)
Quando lo chiamo dinamicamente, la prima volta lo metto in memoria e lo mando in run, dalla seconda in poi, apro e chiudo solo il front panel.
Ho pero' un problema....per capire se devo o meno mandarlo in run, vado a guardare la proprietà execution state.
Andando pero' a verificare l'execution state, anche se arresto l'esecuzione del subVI, questa mi resta sempre in stato RUNNING anzichè passar ein Idle come mi aspettarei.
Come mai? mi sto aspettando la cosa sbagliata? sto utilizzando la proprietà sbagliata?
grazie!
Allego un estratto del mio VI.
Anch'io non riesco a caricare LV17, mi fermo a LV16, ma posso intuire quale sia il tuo problema.
Una delle due affermazioni seguenti è giusta:
- Hai stoppato l'istanza del subVI sbagliata.
- Stai guardando l'execution state dell'istanza del SubVI sbagliata.
bye
Mai dire Mai
- paracarro
- Moderatore
- Messaggi: 877
- Iscritto il: lun ago 18, 2003 3:04 pm
- Località: MILANO
Re: aprire e chiudere un VI dinamicamente
rimando in versione 2012
- Allegati
-
execution state error Folder.zip
- (13.12 KiB) Scaricato 220 volte
..ma ciao!


-
gepponline - Moderatore
- Messaggi: 2149
- Iscritto il: ven gen 28, 2005 11:27 am
- Località: Monticello Brianza
Re: aprire e chiudere un VI dinamicamente
mah!
io distinguerei 2 differenti approcci all'esecuzione dinamica di subVI, in funzione della seguente condizione:
il SubVI è caricato (in memoria) oppure no?
Nel tuo caso sicuramente SI perchè :
1) nella openVI per il "type specifier VI refnum" indichi il subVI in questione (quindi viene caricato in memoria insieme al chiamante caller)
2) nella openVI il "vipath" è una stringa e non un path, per cui, specificando il solo nome del VI, si presume che il VI sia già in memoria.
Ora, tutti noi sappiamo che se un VI viene caricato in memoria nel momento in cui viene caricato il VI principale, esso NON E' EDITABILE, tanto che se noi apriamo uno di questi subVI mentre il VI principale è in esecuzione mentre esso stesso non è in esecuzione, appare una freccettina particolare che ti indica appunto che il tuo SubVI è cmq in uso e non può essere modificato.
E' un po come dire : il VI principale è running, quindi sono running tutti i VI caricati in memoria insieme a lui.
spero di essere stato chiaro.
bye
io distinguerei 2 differenti approcci all'esecuzione dinamica di subVI, in funzione della seguente condizione:
il SubVI è caricato (in memoria) oppure no?
Nel tuo caso sicuramente SI perchè :
1) nella openVI per il "type specifier VI refnum" indichi il subVI in questione (quindi viene caricato in memoria insieme al chiamante caller)
2) nella openVI il "vipath" è una stringa e non un path, per cui, specificando il solo nome del VI, si presume che il VI sia già in memoria.
Ora, tutti noi sappiamo che se un VI viene caricato in memoria nel momento in cui viene caricato il VI principale, esso NON E' EDITABILE, tanto che se noi apriamo uno di questi subVI mentre il VI principale è in esecuzione mentre esso stesso non è in esecuzione, appare una freccettina particolare che ti indica appunto che il tuo SubVI è cmq in uso e non può essere modificato.
E' un po come dire : il VI principale è running, quindi sono running tutti i VI caricati in memoria insieme a lui.
spero di essere stato chiaro.
bye
Mai dire Mai
- paracarro
- Moderatore
- Messaggi: 877
- Iscritto il: lun ago 18, 2003 3:04 pm
- Località: MILANO
Re: aprire e chiudere un VI dinamicamente
..ok, quindi viene considerata in running l'applicazione e non il VIspecifico?
Nel senso che il vi è si caricato in memoria, pero' non è in RUN il subvi (freccetta bianca ON) che è quello che io vorrei verificare.
C'e' modo di verificare quello?
Nel senso che il vi è si caricato in memoria, pero' non è in RUN il subvi (freccetta bianca ON) che è quello che io vorrei verificare.
C'e' modo di verificare quello?
..ma ciao!


-
gepponline - Moderatore
- Messaggi: 2149
- Iscritto il: ven gen 28, 2005 11:27 am
- Località: Monticello Brianza
Re: aprire e chiudere un VI dinamicamente
una volta che viene messo in run mi sembra che non ci sia modo di verificare quello che vuoi tu.
Allo "stop" del vi devi chiudere anche il suo handle e riaprirne uno nuovo, rimarrà in idle fin che non lo mandi in run.
L'alterativa è gestire un flag nel vi chiamato.
Allo "stop" del vi devi chiudere anche il suo handle e riaprirne uno nuovo, rimarrà in idle fin che non lo mandi in run.
L'alterativa è gestire un flag nel vi chiamato.
E' sempre colpa di una massa.....e se non è quella è un if!
-
aris - Super Utente ++
- Messaggi: 645
- Iscritto il: ven lug 30, 2004 10:49 am
- Località: Medolla -MO-
Re: aprire e chiudere un VI dinamicamente
L'idle pare non esistere se il reference è di tipo strictly type. Appena lo carichi, risulta in running.
Ho probvato a replicar el'esmepio non usando lo strictly type e non usando l'asyncronous call e tutto funziona, ma il grosso problema è legato al fatto che vorrei creare N istanze dello stesso subVI senza sapere a priori quante e ad ognuna di queste passare dei valori legati al valore N dell'istanza.
Diciamo che vorrei mettere a pannello 3 pulsanti e ognuno chiama un istanza dello stesso subVI.
Ogni pulsante, a seconda che la relativa istanza sia aperta in run, aperta e stoppata o chiusa dovrà mandare in run, aprire o chiudere l'istanza relativa.
Ho probvato a replicar el'esmepio non usando lo strictly type e non usando l'asyncronous call e tutto funziona, ma il grosso problema è legato al fatto che vorrei creare N istanze dello stesso subVI senza sapere a priori quante e ad ognuna di queste passare dei valori legati al valore N dell'istanza.
Diciamo che vorrei mettere a pannello 3 pulsanti e ognuno chiama un istanza dello stesso subVI.
Ogni pulsante, a seconda che la relativa istanza sia aperta in run, aperta e stoppata o chiusa dovrà mandare in run, aprire o chiudere l'istanza relativa.
..ma ciao!


-
gepponline - Moderatore
- Messaggi: 2149
- Iscritto il: ven gen 28, 2005 11:27 am
- Località: Monticello Brianza
Re: aprire e chiudere un VI dinamicamente
Beh, ogni istanza avrà il suo reference (quindi li gestisci con un array), mentre per passare i valori puoi utilizzare il "set control value".
E' sempre colpa di una massa.....e se non è quella è un if!
-
aris - Super Utente ++
- Messaggi: 645
- Iscritto il: ven lug 30, 2004 10:49 am
- Località: Medolla -MO-
Re: aprire e chiudere un VI dinamicamente
Non sono sicuro aver capito bene, ma perchè non utilizzi 40 invece che 80 (che vuole una ref stryctly type) devi fare una call and forget o altro?
Se invece vuoi gestire solo il lancio di cloni dello stesso vi puoi utilizzare semplicemente la chiamata allo stesso vi con codice 40, e gestirne il numero di chiamata con un array.
Ho abbozzato la mia soluzione, da perfezionare.
Sempre che ho capito bene,
Se invece vuoi gestire solo il lancio di cloni dello stesso vi puoi utilizzare semplicemente la chiamata allo stesso vi con codice 40, e gestirne il numero di chiamata con un array.
Ho abbozzato la mia soluzione, da perfezionare.
Sempre che ho capito bene,

-
nicola - Moderatore
- Messaggi: 1525
- Iscritto il: gio gen 08, 2004 3:30 pm
- Località: Ferrara
10 messaggi
• Pagina 1 di 1
Chi c’è in linea
Visitano il forum: Nessuno e 1 ospite