Discussions au sujet de NI LabVIEW

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

Interruption boucle while avec un tab control

Bonjour,

 

Je souhaite pouvoir mettre en pause un boucle while lorsque je change d'onglet dans un tab control et la redémarrer quand je reviens dessus.

 

Voici ce que j'ai réussit à produire:

pause.pngmais je ne suis pas satisfait du resultat car lorsque je lance la boucle de la page2 mon interface est bloqué.

Et ma boucle ne redémarre pas lorsque je reviens sur mon onglet, je pourrais ajouter un event struct mais j'aimerais savoir si il y a pas une méthode plus adapté!?

 

Est-ce que quelqu'un pourrait me donner une astuce pour améliorer mon code?

0 Compliments
Message 1 sur 6
3 388 Visites

Salut,

 

Sans avoir ouvert ton VI j'ai plusieurs questions/remarques :

  • à quoi sert la boucle while en haut de l'image ?
  • pourquoi encapsuler une boucle while dans une structure d'événements (en général c'est l'inverse) ?
  • la boucle while dans la structure d'événements ne peut jamais être arrêtée, pourquoi ?
  • ajoute des temps d'attente dans tes boucles ... elles tournent pleine puissance

A+

Cordialement,

Julien V.

[FIRST]

[LabVIEW Programming]


[FIRST]

0 Compliments
Message 2 sur 6
3 351 Visites

Salut,

Je suis en train de travailler sur un banc de test de champs magnétique.

 

J'ai une alim (EA-PS 3016-20 B) sur laquelle je règle la tension et le courant pour générer un champs magnétique dans une bobine. Lequel je viens acquérir grace à un multimètre (metrix mtx 3250).

 

J'ai une boucle de calibration, qui lorsqu'elle s'éxécute devrait stoper l'aquisition afin d'anuler les requêtes inutiles.

 

Si tu vois des abérations dans mon code n'hésite pas à me faire des remarques (c'est mon premier soft LabVIEW).

 

Merci d'avance pour ton aide!

0 Compliments
Message 3 sur 6
3 322 Visites

Salut,

 

Juste en survolant ton code je dirai :

  • Utilise une boucle d'événements dans ton while (pour gérer les boutons)
  • Cadence ta boucle while (là elle tourne à fond les ballons, ça consomme plein de ressources)
  • Tu as un flux d'erreur qui est interrompu, ce n'est pas optimisé

Sinon, je ne vois pas vraiment le rapport entre ce dernier code et celui du premier post ?!

Cordialement,

Julien V.

[FIRST]

[LabVIEW Programming]


[FIRST]

0 Compliments
Message 4 sur 6
3 320 Visites

Salut,

 

De quel boucle while parles-tu (Il y en a 5)?

 

Le rapport avec l'exemple précédent, c'est ma boucle "Measure magnetic field" qui represente la boucle du haut et la boucle "Calibration" la boucle qui en dans l'event struct.

 

En gros ce que je souhaite, c'est que ma boucle "Measure magnetic field" tourne en permanence sauf lorsque la boucle "Calibration" est exécuté.

 

Cordialement,

Eicher

0 Compliments
Message 5 sur 6
3 315 Visites

Zut je n'avais vu que celle de la caméra.

 

Donc mes commentaires sont valables pour toutes les boucles.

Surtout d'utiliser le flux d'erreur dès que possible (et de le gérér bien entendu).

Il y a des boucles while dans les boucles while... Il est préférable (pour la lisibilité et pour éviter les boucles "bloquées) de n'utiliser qu'une boucle while. Si tu as des étapes à faire, utilise des machines à état (http://www.ni.com/white-paper/3024/en/).

Il y a a boucle "Measure magnetic field" qui ne s'arrête jamais, je ne pense pas que ce soit normal.

Elle semble ouvrir une communication COM, mais elle ne la ferme pas ?

 

Ce sont mes remarques de 1ère lecture du VI, je ne peux malheureusement pas analyser tout ton code ...

Si tu le souhaites on peut se focaliser sur ta remarque de boucle qui tourne quand l'autre ne tourne pas (je te conseille à nouveau d'utiliser de la machine à état).

Cordialement,

Julien V.

[FIRST]

[LabVIEW Programming]


[FIRST]

0 Compliments
Message 6 sur 6
3 306 Visites