aprire e chiudere un VI dinamicamente

Discussioni generali sulla programmazione in LabVIEW, domande, problemi e soluzioni.

Moderatore: ILVG mod

  • Advertisement

aprire e chiudere un VI dinamicamente

Messaggioda gepponline » mer set 05, 2018 2:07 pm

...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.
Allegati
executionstateerror.rar
(20.33 KiB) Scaricato 62 volte
..ma ciao!
Immagine
Avatar utente
gepponline
Moderatore
 
Messaggi: 2126
Iscritto il: ven gen 28, 2005 11:27 am
Località: Monticello Brianza

Re: aprire e chiudere un VI dinamicamente

Messaggioda aris » mer set 05, 2018 2:45 pm

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
E' sempre colpa di una massa.....e se non è quella è un if!
Avatar utente
aris
Super Utente ++
Super Utente ++
 
Messaggi: 643
Iscritto il: ven lug 30, 2004 10:49 am
Località: Medolla -MO-

Re: aprire e chiudere un VI dinamicamente

Messaggioda paracarro » mer set 05, 2018 3:21 pm

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: 875
Iscritto il: lun ago 18, 2003 3:04 pm
Località: MILANO

Re: aprire e chiudere un VI dinamicamente

Messaggioda gepponline » mer set 05, 2018 5:30 pm

rimando in versione 2012
Allegati
execution state error Folder.zip
(13.12 KiB) Scaricato 63 volte
..ma ciao!
Immagine
Avatar utente
gepponline
Moderatore
 
Messaggi: 2126
Iscritto il: ven gen 28, 2005 11:27 am
Località: Monticello Brianza

Re: aprire e chiudere un VI dinamicamente

Messaggioda paracarro » gio set 06, 2018 10:37 am

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
Mai dire Mai
paracarro
Moderatore
 
Messaggi: 875
Iscritto il: lun ago 18, 2003 3:04 pm
Località: MILANO

Re: aprire e chiudere un VI dinamicamente

Messaggioda gepponline » gio set 06, 2018 1:58 pm

..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?
..ma ciao!
Immagine
Avatar utente
gepponline
Moderatore
 
Messaggi: 2126
Iscritto il: ven gen 28, 2005 11:27 am
Località: Monticello Brianza

Re: aprire e chiudere un VI dinamicamente

Messaggioda aris » lun set 10, 2018 8:22 pm

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.
E' sempre colpa di una massa.....e se non è quella è un if!
Avatar utente
aris
Super Utente ++
Super Utente ++
 
Messaggi: 643
Iscritto il: ven lug 30, 2004 10:49 am
Località: Medolla -MO-

Re: aprire e chiudere un VI dinamicamente

Messaggioda gepponline » mar set 11, 2018 3:11 pm

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.
..ma ciao!
Immagine
Avatar utente
gepponline
Moderatore
 
Messaggi: 2126
Iscritto il: ven gen 28, 2005 11:27 am
Località: Monticello Brianza

Re: aprire e chiudere un VI dinamicamente

Messaggioda aris » mar set 11, 2018 3:25 pm

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!
Avatar utente
aris
Super Utente ++
Super Utente ++
 
Messaggi: 643
Iscritto il: ven lug 30, 2004 10:49 am
Località: Medolla -MO-

Re: aprire e chiudere un VI dinamicamente

Messaggioda nicola » gio mar 21, 2019 11:11 am

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, :D
Allegati
ExecutionStateModified.png
Snippet mi proposta
Nicola |ILVG STAFF

Bytelabs.it
Avatar utente
nicola
Moderatore
 
Messaggi: 1519
Iscritto il: gio gen 08, 2004 3:30 pm
Località: Ferrara



  • Advertisement

Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti

cron

Pannello di Controllo Utente

Login

Advertisement

Chi c’è in linea

In totale ci sono 3 utenti connessi :: 0 iscritti, 0 nascosti e 3 ospiti (basato sugli utenti attivi negli ultimi 5 minuti)
Record di utenti connessi: 119 registrato il dom mar 31, 2013 11:39 pm

Visitano il forum: Nessuno e 3 ospiti