Bonjour,
Je rencontre un problème dans mon application finale qui est integrée sous teststand. J'utilise actuellement CVI 2013. Mon IHM comportent des boutons qui font appellent à des callbacks. En parrallèle, mon appli contient 2 timers qui arrivent à échéance toute les 200ms et 100ms. Dans l'un de ces timers la boucle ci-dessous est présente :
do
{
SetCtrlVal (handle, IHM_LED,TRUE); //allumage de la led
etat = CmtGetLock(Mutex_Log);
DELAY_MS(5.0); // attente de 5ms
Loop ++;
} while((etat !=0)&&(Loop < NBLOOPS_Log));
SetCtrlVal (handle, IHM_LED,FALSE); //extinction de la led
.......
.......
etat = CmtReleaseLock(Mutex_Log);
Le problème est que si :
- PAS d'appui sur les boutons => fonctionnement correct.
- clic court ou double clic => fonctionnement correct.
- clic long => fonctionnement correct les timers continuent à tourner.
- clic ou double clic très rapide (pas systematiquement) => le programme reste bloqué sur CmtGetLock et donc mon IHM reste figée, les timers sont arretés.
Mes boutons sont gerés par une callback, mes timers par 2 callback, n'y a t-il pas un problème sur la gestion des evenements ?
Je débute dans labwindows et je ne maitrise pas bien les commandes CmtxxxLock, mais cette boucle était déjà existante dans un projet precedent et ne semblait pas poser problème.
Merci par avance pour vos contributions.