Forum Italiano sui Prodotti NI

cancel
Showing results for 
Search instead for 
Did you mean: 
Reply

GetUserEvent causa un General Protection fault

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.

 

0 Kudos
Message 1 of 7
(1,511 Views)

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...?



Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
0 Kudos
Message 2 of 7
(1,508 Views)

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!!

0 Kudos
Message 3 of 7
(1,482 Views)

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?



Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
0 Kudos
Message 4 of 7
(1,469 Views)

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.

0 Kudos
Message 5 of 7
(1,466 Views)

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 = ....
}


Proud to use LW/CVI from 3.1 on.

My contributions to the Developer Community
________________________________________
If I have helped you, why not giving me a kudos?
0 Kudos
Message 6 of 7
(1,455 Views)
Highlighted

Ti ringrazio, proverò questa soluzione.

0 Kudos
Message 7 of 7
(1,453 Views)