Comment dans un évènement exécuter une boucle qui s'arrête avec un bouton stop?

Je travaille sous LabVIEW 7.1.
Sur l'exemple "Wave file payer" dans le répertoire E/S/sons, dans l'évènement [2] PLAY une boucle while s'exécute. A l'intérieur de cette boucle while des booléens stop et pause peuvent ête lus.
Lorsque je crée un diagramme similaire, pendant l'exécution de la boucle while tout la face avant est inaccessible. Le programme se bloque sur la boucle while puisque le bouton stop l'arrêtant est inaccessible.
Que manque-t-il à mon code?
Merci.

Comme je le pensais, c'est un "petit truc à savoir"
En faisant un clic droit sur la structure Event, on peut aller dant "Edit event handled by this case..."
Dans cette fenetre, en bas il faut décocher l'option "lock front panel until the event case for this event completes"... cette option parle d'elle même pour peut qu'on y prête attention et qu'on comprenne l'anglais
J'espère que cela résoudra tes problèmes.
When my feet touch the ground each morning the devil thinks "bloody hell... He's up again!"

Similar Messages

  • Comment crée une boucle qui ce répète le même nombre de fois que le nombre d'impultions que reçoit l'entrée compteur de ma carte NI USB-6009 ?

    Bonjour à tous,
    Je cherche à relever la tension aux bornes d'un capteur en fonction de la position de celui-ci donc en fonction du nombre de pas du moteur qui le déplace.
    Pour celà je cherche comment créer une boucle qui ce répète le même nombre de fois que le nombre d'impultions que reçoit l'entrée compteur de ma carte NI USB-6009.
    Le problème c'est que lorsque j'utilise pour cela une boucle while, la mesure ce fait en continue même si je n'ai aucune impulsion sur mon compteur (que le moteur ne tourne pas).
    Alors que je voudrais que la mesure ne se fasse que quand me moteur tourne et s'arrete lorsque qu'il s'arrete.
    Je suis vraiment débutant avec LabView j'ai donc beaucoup de peine malgré plusieurs heures d'essai infructueux.
    Ci-joint le .VI actuel.
    Merci d'avance à tous pour votre temps et votre aide.
    Cordialement,
    Alpine13
    Attachments:
    Presque.vi ‏166 KB

    Bonjour Alpine 13,
    Pour créer une boucle qui ce répète le même nombre de fois que le nombre d'impultions de compteur, il faut utiliser le boucle "for" qui prend les impulsion de votre compteur comme l'entrée.Je vous suggère de commencer avec un simple exemple. Regardez l'exemple suivant:
    LabVIEW >> Help >> Find Examples >> Hardware Input and Output >> DAQmx >> Counter Measurements >> Count Digital Events >> Count Digital Events.vi
    Vous pouvez modifier cet exemple, de façon suivant. Mettez un boucle "for" dans le boucle "while" et branchez le sortie "Data" dans le nombre d'itérations de votre boucle "for", de cette façon votre boucle "for" va executer  le même nombre de fois que le nombre d'impultions de votre compteur. Aussi pour devenir plus à l'aise avec la programmation LabVIEW,  je vous recommande les articles suivants:
    Learn 10 Functions in NI-DAQmx and Handle 80 Percent of Your Data Acquisition Applications
    Getting Started with NI-DAQmx: Main Page
    Synchronize Encoder Counter Input and Analog Input
    Mikhail
    RF Toolkits, Product Support Engineer
    National Instruments

  • Comment puis-je faire pour créer une formule qui additionne les montants d'une commande ?

    Bonjour,
    Je suis en train de faire un formulaire pour faire un bon de commande de nos produits. Est-ce que c'est possible de faire un formulaire qui ferait les additions suivantes :
    Montant de l'article (multiplié par) la quantité =  sous-total (en argent)
    ET
    L'addition des sous-totaux = TOTAL FINAL (en argent).
    Merci de m'aider
    Bonne journée
    Simon

    par exemple augmenter la taille du buffer du graphique : chart history length
    Luc Desruelle | Voir mon profil | LabVIEW Code & blog
    Co-auteur livre LabVIEW : Programmation et applications
    CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW
    CLD : Certified LabVIEW Developer / Certifié Développeur LabVIEW

  • Comment récupérer le n° d'une ligne sélectionnée dans une liste multicolonne

    Je cherche à récupérer le numéro de la ligne sélectionnée dans une liste multicolonne

    Normalement, c'est exactement ce que fait un control du type "liste multicolonne" : renvoyer le n° de la ligne sélectionnée ! Mais peut-être n'ai-je pas compris votre question ?
    Vous pouvez changer le mode de sélection (0 ou 1 item, 1 item uniquement, etc...).
    Bien entendu, le control doit être dans une boucle qui attend soit une modification de la valeur, soit que l'opérateur valide l'état d'une manière ou d'une autre.
    Chilly Charly    (aka CC)
             E-List Master - Kudos glutton - Press the yellow button on the left...        

  • 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 :/

    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 
    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).

  • Relancer une boucle while

    Bonjour, 
    est ce que quelqu'un sait comment controler une boucle while a l'aide d'un bouton poussoir : position pour arreter la boucle et l'autre bour la relancer.
    Merci d'avance 
    Résolu !
    Accéder à la solution.

    Salut,
    Je te joins ce que j'aurais fait naturellement. Ce n'est peut-être pas la façon la plus propre de faire mais c'est fonctionnel. A adapter à ton projet évidemment
    Maxime
    Certified LabVIEW Associate Developper
    Pièces jointes :
    PauseWhile.vi ‏14 KB

  • Comment je peux récupérer une chaine de caratères d'un fichier(txt par expl) dans une ligne (spécifiée) et une colonne (aussi spécifiée) avec notre adorable software LABVIEW

    Salut à tous,
    Comment je peux récupérer une chaine de caratères d'un fichier(txt par expl) dans une ligne (spécifiée) et une colonne (aussi spécifiée) avec notre adorable software LABVIEW.
    Thx
    Nizar
    Résolu !
    Accéder à la solution.

    Si ton fichier est un fichier tableur ce qu'a dit yohann me parait le mieux. Par contre si c'est un fichier texte qui contient une chaine au format tableur (sepération avec des tabulations) il faut utiliser "lire un fichier texte" + "Convertir un chaine au format tableur en tableau" et ensuite indexer la case qui t'intéresse.
    Maintenant si tu as un simple fichier texte  et que tu veux lire un couple ligne/colonne qui désigne un caractère précis il faut utiliser "définir la position dans le fichier" en connaissant la largeur de ton fichier texte. et la tu n'as plus qu'à rentrer dans offset: indice_ligne*largeur+indice_colonne comme une vieille réminiscence du c.
    Sebastien DEVISSCHER - Nerys

  • Comment créer une source de cadencement à 1MHz dans une boucle cadencée?

    Comment créer une source de cadencement à 1MHz dans une boucle cadencée?

    Bonjour Julie,
    Je ne comprends pas très bien votre question.
    Tout d'abord, à l'avenir, préférez recréer votre propre post sur le forum, celui-ci datant de 2006, vous pouvez être quasiment sûr que les gens qui y ont participé ne sont plus aussi disponible pour vous répondre.
    D'autre part, le module 8451, qui gère la communication SPI peut gérer des horloges jusqu'à 12MHz, je ne vois pas où est votre problème d'horloge à 1MHz.
    Le problème qui se posait dans le poste d'origine était d'avoir une boucle logicielle qui allait à plus d'1MHz, ce qui est très dur et qui demande du matériel particulier. C'est déjà une limite quasiment inatteignable avec un environnement RT, et il faudra plutot se tourner vers de la technologie FPGA.
    En revanche, si votre besoin est de gérer une comm SPI à 1MHz, vous pouvez très bien avoir le module 8451 qui fait le codage et décodage SPI, et votre programme qui lui tourne à quelques ms pour récupérer ou envoyer de nouvelles données sur le bus!
    J'espère vous avoir éclairé!
    Cordialement,
    Olivier L. | Certified LabVIEW Developer

  • Comment faire de l'ordre dans les événement dans iTunes, surtout apres avoir fait de l'ordre dans iPhoto?

    Bonjour:
    Comment faire de l'ordre dans les événement dans iTunes, surtout après avoir fait de l'ordre dans iPhoto?

    Do matters improve if you update to iPhoto 9.4.1?
    iPhoto 9.4.1
    From the release notes for the new version:
    What's New in Version 9.4.1
    Improves the reliability of syncing to iOS devices via iTunes 
    Fixes an issue that could cause iPhoto to quit unexpectedly when using the Export command 
    Addresses an issue that could cause iPhoto to quit unexpectedly when upgrading multiple books, cards, and calendars 
    Resolves an issue with downloading and viewing photos synced from Facebook albums

  • Exécuter une partie du programme une seul fois lors du premier lancement

    Bonjour un tous!
    Dans le cadre d'un stage, je suis amené à gérer un spectrophotomètre avec Labview.
    J'aimerais qu'une partie de mon programme ne s'exécute que lors de la première exécution du programme.
    En fait, je désire que lors de la première exécution, le spectro fasse un auto-zéro et que ensuite il fasse ses mesures normalement.
    J'ai testé avec l'outil "premier appel" et une boucle condition mais cela ne fonctionne pas. Quand le programme tourne en boucle, il concidère à chaque fois que c'est la première exécution. Je suppose donc que j'ai mal compris cette fonction.
    Je cherche donc un moyen d'arriver à mes fins.
    Voivi le programme (Labview 2011)
    Résolu !
    Accéder à la solution.
    Pièces jointes :
    Mesure spectro.vi ‏32 KB

    Bonjour,
    J'imagine que pour exécuter votre code en continu, vous cliquez sur la double flèche d'exécution qui lance l'exécution du VI en continu. L'utilisation de cette méthode d'exécution revient à lancer le VI à la suite manuellement, autrement dit, le VI s'arrête et se relance entre chaque exécution.
    Il ne faut utiliser cette flèche qu'a des fin de débugage de votre application, par pour lancer une application en continue.
    Dans votre cas, la fonction premier appel renvoi toujours vrai, car le VI est arrêté et relancé donc, oui, c'est toujours un premier appel. Il faut rajouter une boucle while (ou tant que dans votre code pour exécuter en continue la mesure une fois l'initialisation terminée.
    Si joint votre VI modifié. C'est une modification très rapide et pas forcément optimisée, mais pour illustré le principe. Ca devrait tout de même mieux fonctionner pour votre application.
    On configure la ressource, on fait l'initialisation, puis on fait la mesure en continue jusqu'à un appui sur stop.
    J'ai placé l'enregistrement dans la boucle, la encore, je ne sais pas si c'est ce que vous souhaitez vraiment faire. Le but était de vous montrer comment utiliser la boucle while.
    Cordialement
    .mesLeft{float:left} .mesInfo{border-left:solid 1px #989898;font-size:x-small;color:#989898} .mesLogo{float:right;opacity:0.18} .mesLogo:hover{opacity:0.9}
    Maxime R.  
      CLD - Certified LabVIEW Developer / Développeur LabVIEW Certifié  
      CLAD - Certified LabVIEW Associate Developer   
    Pièces jointes :
    Mesure spectro 2.vi ‏20 KB

  • Modif de valeurs pour un sousvi dans une boucle while

    Bonjour, j'ai une question qui a surement l'air un peu idiote mais j'essaie de modifier une frequence de sinusoide en utilisant un sous vi. Ce sous vi est dans une boucle while et helas il ne prend en compte que la premiere valeur au demarrage du vi. Comment je peux modifier les vi de facons a ce que je puisse modifier la valeur de la frequence a mon gre. D'avance merci, je joins un projet exemple de ce que j'aimerais faire, merci de votre aide
    Pièces jointes :
    essai.lvproj ‏8 KB

    Bonjour,
    Vous pouvez utiliser les références pour contrôler votre sous-VI. Voici un exemple : Using Control References to Pass Access of Front Panel Controls to SubVIs
    Cordialement,
    Charlotte F. | CLAD
    National Instruments France
    #adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
    >> "Du 11 octobre au 17 novembre, 2 sessions en parallèle : bien démarrer - approfondir vos connais...

  • Mesure de temps dans une boucle while

    Bonjour,
    Je travaille sur une application qui doit exécuter les ligne d'un tableau contenant différent paramètre les unes après les autres.
    Il faudrait que la boucle While se stoppe quand le temps passer dans la boucle est égale au paramètre de temps contenu dans le tableau. C'est pour la partie mesure du temps dans la boucle que je galère.
    Si quelqu'un a des idées, merci d'avance.

    Bonjour,
    Excusez moi mais j'ai un peu de mal à comprendre votre problème.
    J'ai essayé de faire un test que je vous envoie en pièce jointe.
    Ici j'ai initialisé mon tableau et chaque itération de boucle se fait au bout de 1 sec.
    Etant donné que la seule donnée logique de mon tableau initialisé se trouve à la ligne n ou je met n (attention le tableau commence à l'indice 0) alors je sortirai de la boucle ou bout de n+1 sec.
    J'espère que ce VI répondra à votre question, sinon, n'hésitez pas à revenir vers nous et à nous donner plus d'informations.
    Cordialement.
    Pierre Denis
    National Instrument
    Pierre_D
    National Instruments France
    #adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
    LabVIEW Tour
    Journées Techniques dans 10 villes en France, du 4 au 20 novembre 2014
    Attachments:
    test.vi ‏9 KB

  • Gestion externe d'une boucle d'événement

    Bonjour,
    je souhaite créer une boucle d'événement dans un VI ( déclenchement sur une valeur changée dans un tableau).
    Le problème est que le taleau en question se trouve dans un autre VI.
    Pouvez vous m'indiquer une méthode pour faire le lien entre ces 2 VI.
    Merci de votre réponse.
    Résolu !
    Accéder à la solution.

    @makflai: on ne peut pas utiliser les VP pour déclencher l'evenement. Ce qu'il souhaite faire c'est pouvoir déclencher un évênement alors qu'il s'est produit dans une autre boucle. Sinon avec la VP il peut remonter les valeurs dans l'autre VI mais pas les évenements produits dessus.
    Pour cela il faut utiliser les évenements utilisateurs, il y a un exemple: Programmatically Fire events qui explique les évenements dynamiques, et l'exemple Dynamically Monitor VI's qui correspond un peu au problème. 
    Cordialement,
    Simon D.
    CLA | Certified LabVIEW Architect
    CTA | Certified TestStand Architect

  • Keithley 2400 Meter Read dans une boucle - probleme de status byte read

    Bonjour,
    j'utilise un Keithley 2400 pour mesurer un potentiel. J'ai débuté en utilisant le modèle Read.vi du driver. Dans mon cas, la portion "read single" se trouve dans une boucle for et après un certain nombre de mesures (cela semble aléatoire), la fonction gèle et en remontant les étapes, on découvre qu'il s'agit de la lecture de "status byte" qui ne reçoit aucune réponse en amont. Il faut alors redémarrer complètement le programme. Celà survient à chaque fois et après un nombre d'itérations variable.
    J'ai même tenté de mettre une boucle while directement dans l'exemple "read single" (le .vi) et le problème est exactement le même, même si on ajoute un wait à la boucle. Après un certain temps, ça gèle et c'est le status read qui ne reçoit aucune réponse.
    Merci.

    Bonsoir PG123,
    Ce que je vois directement dans votre VI c'est le fait que vous exécutiez à la vitesse maximum votre boucle While sans le moindre cadencement ne laissant ainsi jamais de temps disponible au processeur pour effectuer d'autres tâches. Il est propable de plus que l'instrument ne supporte pas un nombre de requêtes aussi élevée saturant peut être son buffer ou ne laissant pas le temps à l'instrument d'écrire correctement les valeurs.
    De plus, je pense que vous n'avez pas besoin de récupérer à la vitesse maximum toutes les valeurs possibles provenant de votre instrument. C'est pourquoi je pense qu'une lecture toutes les 200ms suffirait déjà amplement.
    Voici donc à quoi devrait ressembler l'intérieur de votre boucle While :
    Essayez avec un cadencement d'1 seconde (1000ms en entrée de la fonction) dans un premier temps et voyez si le problème de gel se produit. Si ce n'est pas le cas, vous pourrez alors progressivement diminuer la valeur de cadencement (jusqu'à 200ms minimum, celà devrait suffire comme déjà dit au dessus.
    Cordialement,
    Jérémy C.
    National Instruments France
    #adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
    Travaux Pratiques d'initiation à LabVIEW et à la mesure
    Du 2 au 23 octobre, partout en France

  • Diagramme de bode dans une boucle de simulation

    Bonjour,
    je continue mes questions sur control design et simulation
    Comment à partir d'un système décrit dans une boucle de simulation, tracer le diagramme de Bode de la fonction de transfert en boucle ouverte?
    merci
    Robert Papanicola
    http://sciences-indus-cpge.papanicola.info/
    http://www.medicalistes.org/~maxime-plus/

    Bonjour,
    Excusez moi mais j'ai un peu de mal à comprendre votre problème.
    J'ai essayé de faire un test que je vous envoie en pièce jointe.
    Ici j'ai initialisé mon tableau et chaque itération de boucle se fait au bout de 1 sec.
    Etant donné que la seule donnée logique de mon tableau initialisé se trouve à la ligne n ou je met n (attention le tableau commence à l'indice 0) alors je sortirai de la boucle ou bout de n+1 sec.
    J'espère que ce VI répondra à votre question, sinon, n'hésitez pas à revenir vers nous et à nous donner plus d'informations.
    Cordialement.
    Pierre Denis
    National Instrument
    Pierre_D
    National Instruments France
    #adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
    LabVIEW Tour
    Journées Techniques dans 10 villes en France, du 4 au 20 novembre 2014
    Attachments:
    test.vi ‏9 KB

Maybe you are looking for

  • New machine, missing content?

    Just purchased a new MacBook Pro and re-installed FCP X. It seems I remember that with my previous machine I had to install some additional content, music, loops, effects. I have totally forgotten where to obtain those. Would appreciate some info. Th

  • Imp: Error while sending message: 500 Internal Server Error

    Hi all while testing my scenarios- by sending the message through component monitoring in RWB I get the following error in Integration Server <b>"Error while sending message: 500 Internal Server Error "</b> It seems that integration server is not pic

  • Cut/copy and paste

    eveytime I try to cut/copy and then paste it it uses and old copy from a week ago. It being this http://boats.iboats.com/2013-sea-hunt-boats-25-gamefish-orange-beach-al/1518357. html

  • MBA external display video playback

    I use MBA 2012 with Dell U2413 via miniDP to DP cable avilable from Dell. Everything works perfectly, full resolution and sharp image. Only thing that bothers me is when I play video in any program including from youtube. There is a purple blotch whe

  • How do I get playlists from my phone on to my mac?

    Hi I have an iPhone 4S that I've been using as my iPod. It has all my playlists and much of my music (though not enough memory for all my music). This all came from my old laptop. Earlier this year I bought a MacBook Air (love it!) and although I man