LabWindows/CVI

cancel
Showing results for 
Search instead for 
Did you mean: 

problème avec CmtGetLock

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.

0 Kudos
Message 1 of 1
(3,369 Views)