Discussions au sujet de NI LabVIEW

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

Redemarrer une boucle while

Bonjour a tous !

 

J'aimerais savoir comment faire pour relancer une boucle while. Je m'explique : quand la boucle est lancee, on peut creer un bouton stop tout simple pour l'arreter. Seulement, existe t'il un moyen tout aussi simple de faire s'executer une nouvelle fois cette boucle ?
L'idee est de pouvoir simplement : lancer le trace d'un graphe a partir d'une DAQ, pouvoir l'arreter (en gardant la courbe a l'ecran), puis de le relancer (et de rafraichir le graph a partir de rien).

 

Je vous remercie d'avance pour votre aide.

 

ps : desole pour l'absence d'accents mais il n'y en a pas sur un clavier allemand 😕

0 Compliments
Message 1 sur 9
5 035 Visites

Bonjour,

 

Tu peux peut-être regarder du côté des machines d'états dont un exemple est disponible dans les modèles de base LabVIEW. En créant 3 états tu devrais pouvoir faire ce que tu souhaites :

 

  1. Un état "Attente" qui te permet de mettre le VI en "pause" le temps que tu regardes ton graphe. 
  2. Un état "Traitement" qui exécute ta boucle normalement,acquiert les données et les affiche.
  3. Un état "Fin" qui permet d'arrêter ton programme. 

Je te laisse jeter un oeil à tout ça, n'hésite pas si tu veux plus d'informations 😉

CLAMaxime -- Kudos are a great way to say thank you
Message 2 sur 9
5 031 Visites

Merci beaucoup pour ta reponse !

Tu me conseilles donc de creer une structure event, selectionnee par un bouleen ou enum, dans laquelle il y aura : un etat ou le graphique affiche les donnees, un deuxieme etat ''pause'' ou rien ne sera relie au graphique, et un troisieme etat avec une constante ''null'' reliee au noeud de propriete history data pour avoir une sorte de clear chart ?

0 Compliments
Message 3 sur 9
5 023 Visites

Bonjour,

Non une machine à état est composée d'une boucle FOR dont les valeurs sont pilotées par un enum, incluse dans une boucle While.


La structure "Event" est à utiliser surtout quand tu as besoin d'intéragir suite à une action utilisateur, sur face avant par exemple.

 

Cdt,


Michael.

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
0 Compliments
Message 4 sur 9
5 013 Visites

Tu me conseilles donc de creer une structure event, selectionnee par un bouleen ou enum, dans laquelle il y aura : un etat ou le graphique affiche les donnees, un deuxieme etat ''pause'' ou rien ne sera relie au graphique, et un troisieme etat avec une constante ''null'' reliee au noeud de propriete history data pour avoir une sorte de clear chart ?

 

Regarde les exemples qu'on trouve sur le web Smiley clignant de l'œil

 

Le concept c'est d'utiliser l'Enum pour faire discuter de ce qu'on veut faire : initialiser, acquérir, attendre l'appui sur un bouton... et on discture de ça dans une structure condition.

Le plus propre est de laisser une seule structure event qui est dans l'étape où on attends une interaction de l'utilisateur (avec plusieurs structures event on risque de bloquer l'interface par mégarde, donc surtout à éviter).

 

 

Edit : plusieurs intérêts :

  • on rend le code arbitrairement séquentiel : on se sait ce qui se passe dans quel ordre,
  • on peut s'arranger pour que le code ne prenne qu'un seul écran : plus facile à lire/maintenir,
  • on a le flux d'erreur toujours accessible si on le fait passer via un registre à décalage dans la boucle while,
  • on peut ranger les données dans un cluster : on évite le diagramme spaghetti en ne sortant que ce dont on a besoin pour l'étape du calcul,
  • on met toutes les interactions utilisateurs à un seul endroit (structure événement) : plus facile à gérer et maintenir (et on évite le bug d'une structure événement qui bloque la face avant en attendant un événement, empêchant une autre structure d'interagir).

 

0 Compliments
Message 5 sur 9
5 011 Visites

Sinon dans le menu de LabVIEW :

Aide > Recherche d'exemples

ça ouvre une fenêtre et on trouve un exemple de machine à état dans :

Fondamentaux > Boucles et structures > Pricnipes de bases des machines à états

 

Le VI proposé est abondamment documenté, ça aide à comprendre 😉

0 Compliments
Message 6 sur 9
4 998 Visites

Je vais etudier ca en detail merci beaucoup pour votre aide 🙂 je ne connaissais pas ce concept de ''machine a etats''.

(je rame aussi un petit peu parce que je travaille sur labVIEW en allemand et je ne parle, tout au plus, qu'anglais)

 

bonne journee

0 Compliments
Message 7 sur 9
4 989 Visites

Michael.C a écrit :

est composée d'une boucle FOR


 

Boucle while plutôt

A+

0 Compliments
Message 8 sur 9
4 975 Visites

MathieuSteiner a écrit :

Michael.C a écrit :

est composée d'une boucle FOR


 

Boucle while plutôt

A+

Effectivement, j'ai fait une erreur, en ecrivant le message, tout en faisant autre chose. Je voulais dire une structure"Condition" dans une boucle while avec une registre à décalage pour le passage d'un cas à un autre.

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
Message 9 sur 9
4 970 Visites