Je fais un projet pour l'université et j'ai besoin que la boucle while s'arrête après 6s. J'ai donc fait comme d'habitude, en configurant le wait(ms) pour attendre 6000ms et en le comparant à 6000const pour obtenir une valeur bool de TRUE qui aurait dû arrêter ma boucle, mais ce n'est pas le cas. Je me demandais donc si vous aviez une idée de ce que pouvait être le problème ?
Réponses
Trop de publicités?Vous ne voulez pas d'une fonction " Wait " (attendre) : cette fonction arrête l'exécution jusqu'à ce que ce nœud se termine, ce qui signifie que votre boucle While ne s'exécutera qu'une fois, et que cette fois durera 6000 ms.
Ce que vous voulez, c'est la fonction Tick Count.
Vous pouvez faire glisser cette image depuis votre navigateur (certains navigateurs peuvent vous demander d'enregistrer d'abord le PNG sur le disque) sur votre schéma fonctionnel pour recréer le code (si vous avez LV 2016 ou une version ultérieure, comme indiqué par le numéro de version dans le coin supérieur droit). Cette image a été créée en utilisant "Edit >> Create VI Snippet From Selection".
Une autre option pour résoudre votre problème peut être d'utiliser une boucle temporisée. Ces boucles sont spécialement conçues pour les tâches de chronométrage. L'avantage d'une boucle temporisée est que vous avez un contrôle plus précis du moment où elle s'arrête. La boucle while proposée (par srm) s'arrêtera après 6 secondes + le temps nécessaire pour terminer le code. L'"inconvénient" d'une boucle temporisée est qu'elle se comporte plus comme une boucle for où chaque boucle prend un intervalle de temps spécifique, habituellement je trouve cela plus un avantage qu'un inconvénient :
J'ai également mis la solution suggérée précédemment (par srm) pour comparaison. Sur mon pc, la boucle temporisée s'arrête avec une précision de l'ordre de la ms alors que la boucle while a un retard de plusieurs dizaines de milisecondes.
La raison pour laquelle votre valeur bool est fausse est que la sortie du VI Wait (ms) n'est pas le nombre de millisecondes que le VI a attendu mais "milliseconds timer" qui est le nombre de millisecondes depuis le démarrage de Windows ou quelque chose de ce genre. C'est le même nombre que vous obtiendriez si vous lanciez le VI Tick Count (ms) à l'instant où le VI Wait se termine.
D'autres ont raison de souligner qu'une attente de 6 secondes dans la boucle empêchera votre boucle de terminer son exécution et de se répéter jusqu'à ce que les 6 secondes soient écoulées.