Discussions au sujet des autres produits NI

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

Arrêt une boucle While

Résolu !
Accéder à la solution

Bonjour,

 

Pourriez-vous me donner des infos pour arrêter une boucle while ci-joint le vi. Merci par avance  

Tout télécharger
0 Compliments
Message 1 sur 9
3 428 Visites

Bonjour,

 

Merci d'avoir posté sur le forum de national instruments.

 

Je ne comprend pas le problème avec vos boucles. Elles ne s'arrêtent pas avec le bouton STOP?

Brice S.
National Instruments France

0 Compliments
Message 2 sur 9
3 424 Visites

Bonjour,

 

Si le boucle arrête mais pas complètement ci-joint la copie de l'écran. Je pense c'est la boucle consommateur ainsi j'ai fais une variable globale mais le problème n'est toujours pas résolu. Si vous iniber la boucle consommateur alors le bouton stop effectue correctement.    

0 Compliments
Message 3 sur 9
3 421 Visites

Bonjour,

 

Le problème de non arrêt est provoqué du fait que votre 2eme boucle attendra un élément de la file d'attente qui n'arrive pas car la première boucle est déjà arrêtée.

 

Mais plusieurs problème subsiste dans votre programme puisque vous utilisez une file d'attente pour envoyer vos résultat d'acquisition mais vous n'utiliser pas cette file d'attente pour enregistrer vos données. La file d'attente avec une constante chaine vide ne sert à rien ?

 

N'oubliez pas que le test de votre variable globale est faite en meme temps que l'attente d'un élément dans la file d'attente, donc elle est lue avant qu'il y est la possibilité d'avoir un élément dans cette file et donc comme vous n'avez configuré aucun time out sur cette fonction elle attendra indéfiniment un élément qui ne viendra jamais.

 

Vous pouvez observer le phénomène après avoir appuyé sur le bouton stop, passez sur votre diagramme et animez l'exécution, votre 2éme boucle est bloquée sur "supprimer le premier élément d'une file d'attente"

 

Cordialement

 

 

Greg S.
CNRS
LV 7.1 8.2 8.6 2009 2011 2012 2013 2014
LPMC - CNRS
N'oubliez pas de complimenter cela fait toujours plaisir.
Message 4 sur 9
3 414 Visites

Bonjour Greg,

 

Merci pour des infos précieuses, mais ce n'est pas le programme complet par contre le timeout dans la file d'attente je ne sais pas comment gérer. Y-a-il la possibilité de synchroniser avec le bouton stop pour générer une erreur afin de quitter la deuxième boucle ? Je l'ai fait avec une boucle de condition ci-joint la copie d'écran et ça fonctionne avez-vous une autre méthode ? Merci d'avance.

 

        

 

 

0 Compliments
Message 5 sur 9
3 385 Visites

Plusieurs possibilités s'offrent à vous, vous pouvez aussi écrire dans la file d'attente quelque chose qui sera géré pour arrêter votre 2ème boucle, en envoyant un élément ou une chaine suivant ce vous utiliser puis vous gérez normalement avec vos conditions puis arrêt ou pas de la seconde boucle, donc plus besoin de variable globale.

 

Cordialement

Greg S.
CNRS
LV 7.1 8.2 8.6 2009 2011 2012 2013 2014
LPMC - CNRS
N'oubliez pas de complimenter cela fait toujours plaisir.
Message 6 sur 9
3 373 Visites

Bonjour,

 

Merci Greg pour la réponse si vous avez un exemple concret pour arrêter la deuxième boucle avec la file d'attente je serai prenneur. Merci d'avance.  

 

 

0 Compliments
Message 7 sur 9
3 366 Visites
Solution
Accepté par GSXR100038

Dans votre cas mettez simplement la liberation des files d'attentes à l'intérieur de votre structure séquence juste en sortie de votre première boucle, comme cela une erreur sera presente sur la "focntion supprimer le premier elements de la file d'attente" comme vous testez l'erreur pour arrêter la boucle elle s'arretera automatiquement. Je n'avais pas vu avantt que vous liberiez après la structure séquence les file d'attente donc la 2 ème boucle ne pouvait être arrêter seulement par un éléement de file d'attentes.

 

Le flux de donnée ne permettait pas l'arrêt de votre seconde boucle puisque pour libérer les files d'attentes il fallait attenndre l'arrêt des 2.

 

Dans le modèle l'arrêt de la boucle consommatrice est sur l'erreur de la fonction "supprimer" (animez l'execution du modèle pour l'observez ou un indicateur d'erreur sur la fonction)

 

Cordialement

Greg S.
CNRS
LV 7.1 8.2 8.6 2009 2011 2012 2013 2014
LPMC - CNRS
N'oubliez pas de complimenter cela fait toujours plaisir.
Message 8 sur 9
3 358 Visites

Bonjour Greys,

 

J'ai pu faire le nécessaire avec des infos quetu m'a donné. 

Cordialement,  

0 Compliments
Message 9 sur 9
3 300 Visites