02-13-2017 02:51 AM - modificato 02-13-2017 02:52 AM
Buongiorno,
durante un ciclo while richiamo la GetUserEvent ma quest'ultima mi va in FATAL RUN-TIME ERROR.
Questo errore capita in maniera apparentemente randomica perchè alcune volte succede appena eseguito il programma, altre volte passa qualche istante.
La cosa strana è che in altri punti del progetto utilizzo la GetUserEvent allo stesso modo ma non ho mai avuto problemi.
Per programmare utilizzo Labwindows CVI 2012 SP1.
Avete qualche idea su quale possa essere il problema??
Grazie in anticipo.
in data 02-13-2017 02:58 AM
E' difficile fare un'ipotesi senza avere qualche informazioni in più ed eventualmente parte del sorgente. Come hai giustamente notato anche tu, il problema non è nella GetUserEvent che in altri punti del programma funziona correttamente, quindi deve trattarsi dell'interazione di quell'istruzione in quel punto del programma con altri moduli o istruzioni caricati in prima di chiamarla.
Puoi darci il testo esatto dell'errore e il codice della funzione in cui chiami la GetUserEvent? Prima che avvenga l'errore hai caricato funzioni particolari che negli altri punti non sono usate? Controlli customizzati, controlli della libreria Toolslib, librerie di terze parti...?
in data 02-13-2017 04:15 AM
Rispetto ad altre parti del progetto non ci sono chiamate in più o controlli etc. Il progetto è strutturato più o meno tutto allo stesso modo.
Ti allego le due immagini, l'errore e anche il codice della funzione.
Se servono altre info chiedi pure.
Grazie!!
in data 02-13-2017 04:37 AM
Boh, visto così non mi salta all'occhio nulla di strano.
Però avendo 0 come primo parametro di GetUserEvent la funzione termina immediatamente indipendentemente dalla presenza di eventi oppure no, quindi dovresti valutare se eventi ci sono stati e se no eventualmente saltare a fine loop giusto per evitare di sovraccaricare la macchina eseguendo istruzioni inutili; inoltre iEvent si trova sia all'interno della funzione che come valore di ritorno, quindi non so alla fine della riga che valore contenga...
L'errore capita alla prima esecuzione del loop o in tempi successivi?
in data 02-13-2017 04:45 AM
Il fatto che iEvent è sia all'interno che come valore di ritorno è un errore mio, comunque anche togliendolo come lvalue non cambia.
Questo errore capita ogni volta in tempi diversi, quasi mai alla prima chiamata.
in data 02-13-2017 07:26 AM
Bè, come ti dicevo non si vede nel codice qualcosa di evidente che possa spiegare l'errore.
Io proverei comunque a gestire il valore di ritorno della GetUserEvent:
while (iContinue) { iEvent = GetUserEvent (0, &tmp, &iControl); if (iEvent < 0) { // Errore: gestire } else if (!iEvent) goto Loop: // Qui il resto del codice Loop: iContinue = .... }
in data 02-13-2017 07:54 AM
Ti ringrazio, proverò questa soluzione.