Start Bouton / boucle While

Salut
J'ai des signaux des cartes PCMCIA et USB NI, maintenant je veux  contrôler les données d'entrée à l'aide d'un bouton start / stop, donc,  je veux savoir si mon VI c'est un bon moyen de faire un Panneau de control,
J'utilise une boucle while dans une boucle while et je ne sais pas si sa rend plus lent mon programme.
Quels conseils pouvez-vous me donner, merci pour votre aide.
Pièces jointes :
Buttons to Initiate Actions.vi ‏65 KB

Je pense qu'il faut rester sur une machine d'états mais il faudrait l'arranger, rajouter des états pour que sa soit plus clair et leur donner des noms explicites: Init acquisition, acquisition, cleanup acquisition, INIT program, STOP program,etc...
Donner des noms aux controles plus explicites que "booléens"
A quoi sert le registre à décalage string dans ce programme? j'ai l'impression qu'il ne fait rien non?
Ajouter des commentaires, des labels sur les fils importants, nettoyer l'apparence graphique du code (fils droits etc)
Ajouter une étape après l'acquisition pour enregistrer les données plutôt qu'a chaque mesure
Eviter les VI express et utiliser des fonctions plus "bas niveau"
Rodéric L
Certified LabVIEW Architect

Similar Messages

  • Sortir d'une boucle while par un bouton extérieur à cette boucle

    Bonsoir,
    question bête...lorsque l'on se trouve dans une boucle while existe-t-il un moyen pour sortir de cette boucle en actionnant un bouton qui ne se trouverait pas intégré à la boucle ?
    Merci d'avance pour vos réponses.
    Cordialement.

    Hi SyP,
    Thanks for posting on the National Instruments Forum. 
    This part of the Forum is in English, please post here in English and over there in French. 
    It is possible to create a local variable to implement what you want to do. Please find below an example where you have 2 While loops in parallel and one Boolean control which interact in both loops using right click on the stop control>>Create>>Local Vairbale.
    Message Edité par BenjaminR le 08-13-2009 03:58 AM
    Benjamin R.
    R&D Software Development Manager
    http://www.fluigent.com/

  • Problème boucle while bouton

    bonjour,
    je voudrais arrêter une boucle while quand un bouton  change de valeur ( qu'il soit sur on ou off peu importe , juste qu'il change de valeur) et je ne sais pas comment faire.
    Pouvez-vous m'aider ?
     Meri d'avance !!
    Julie

    Bonjour,
    Je vois plusieurs possibilités pour résoudre ton problème :
    - Tu peux mettre une structure d'évènement qui détectera ton changement de valeur (après configuration de ta structure bien sûr)
    - Tu peux également mettre un registre à décalage sur ta boucle While afin de détecter une différence entre ton bouton et le retour du registre...
    Bastien

  • Stopper plusieurs boucle while dans une structure évènement

    Bonjour.
    Je gère actuellement l'acquisition de données sous LabVIEW et ai mis en place une structure évènementielle.
    Mon programme possède 6 fonctionnalités principales correspondant à 6 boutons :
    - paramètres de sécurité
    - étalonnage des capteurs
    - paramètres de l'essai
    - quitter le programme
    - démarrer l'essai
    - arrêt de l'essai
    Jusqu'à présent, les 5 premières fonctionnalités s'exécutent à merveille.
    Le problème réside dans l'interruption du code (sans le quitter attention !!) lors de l'appui du bouton "arreter essai".
    Lors de l'appui du bouton démarrer, 5 boucles while s'exécutent simultanément (soit dans l'évènement "Demarrer Essais : value change").
    J'ai tenté de relier chaque condition d'arrêt de ces boucles à la variable locale "Arreter Essais" (cf. ex ici http://forums.ni.com/t5/Discussions-de-produit-de-NI/Quitter-une-boucle-While-dans-une-structure-Eve... post n°7/9).
    Le programme semble alors bien s'interrompre... mais repart de plus belle sans que je ne sache pourquoi :/
    Autre test : relier les conditions d'arrêt à une variable globale prenant la valeur vraie dans l'évènement "Arreter essais : value change", là encore échec cuisant.
    Je vous joint une imprécran d'une des 5 boucles while en question, afin d'illustrer peut-être de meilleure manière mon problème.
    Si vous avez une piste de résolution du problème, n'hésitez surtout pas.
    Pour finir, je travaille sous LabVIEW 8.6.1
    Merci d'avance.
    Arnaud
    Attachments:
    Boucle WHILE d'affichage sur le graphe.png ‏29 KB

    Duplicate
    Flo
    Open Diagram First

  • Remise à 1 boucle while

    Bonjour,
    Pour une application que je développe, je souhaite remettre (par appui sur un bouton commande) à 1 la valeur i d'une boucle while. J'ai trouvé une solution (cf. fichier joint) mais je voudrai tout de même savoir si il n'existe pas une solution plus simple.
    Merci.
    Djamel
    Résolu !
    Accéder à la solution.
    Pièces jointes :
    RA1.vi ‏10 KB

    Je pense que Simon parle de ceci,
    ceci dit, avec le noeud de rétroaction et la soustraction ... l'idée était astucieuse.

  • Séquence évènement-Arrêt boucle while interne.

    Bonjour,
    J'ai une séquence évènement lancé par le changement d'état d'un  bouton "Marche".
    Dans cette séquence évènement une boucle While est démarrée et trace des données sur un graph  .
    A partir de ce moment LV ne rend pas la main pour une autre action comme l'arrêt par  "Stop" .
    Peux t'on arrêter cette boucle while ? Si oui, comment ?
    Merci
    Cordialement.
    Pièces jointes :
    Essai1.vi ‏13 KB

    Je suis d’accord avec Rodéric L, tu n’utilises pas la structure évènementiel correctement. Le but est effectivement de programmer des détections d’actions, principalement utilisateur. Le code doit pouvoir réagir rapidement, pour que l’IHM soit réactive, par exemple si appui sur un bouton stop…
    Dans ton cas, l’IHM se bloque car lorsque tu programmes un évènement (édition de l’évènement) par défaut il y a une option « bloque l’IHM tant que le code dans l’évènement n’est pas terminé » (je n’ai pas LV ouvert alors je n’ai pas le texte exacte), mais c’est en bas à gauche dans l’édition de l’évènement.
    Par exemple si tu programmes un évènement sans code mais juste avec un wait de 10 minutes, ton IHM sera bloquée pendant 10 minutes. Par contre si tu désactives l'option d'attendre, alors la structure évènement va exécuter le code d'attendre 10 minutes, mais tu peux toujours agir sur l'IHM, et la structure mémorise les évènements à exécuter.
    Par contre je pense que tu dois pouvoir faire fonctionner ton exemple, en désactivant le blocage de l’IHM tant que l’évènement n’est pas terminé, et comme ton bouton stop est dans le même état….
    >>>> Mais ton code ne sera pas évolutif et il est condamné à ne plus rien faire d’autre.
    La solution réside dans une autre structure de code, par exemple de type producteur consommateur, avec comme producteur la structure évènementielle. Tu peux regarder dans les exemples de NI dans Fichier > nouveaux (je crois, je n’ai toujours pas LV d’ouvert !)
    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

  • Mettre boucle While en pause/ structure séquence

    Bonjour,
    Actuellement en stage il m'a été demandé de développer une interface LabVIEW en vue du pilotage d'une alimentation triphasé.
    Pour l'instant la majeure partie de mon programme fonctionne mais je me heurte à un problème. Il m'a été aussi demandé que mon programme récupère les informations de mesure provenant de l'alimentation. Cette partie fonctionne également à une exception près : si l'on appuie sur un bouton alors que la commande Write de mesure est en exécution (commande TST dans mon VI), une autre commande sera alors transmise au générateur et la fonction READ ne lira plus de mesure et le VI affichera une erreur de TimeOut. Je cherche donc depuis 2 jours une solution qui me permettrait de mettre la boucle While de mesure en pause en cas d'appuie sur un bouton lors d'une mesure et la reprendre a la fin d'un temps donné.
    Je vous fournie un exemplaire de mon VI afin que cela paraisse plus clair (PS : Je suis sur LabVIEW 2009).
    Je vous remercie d'avance de votre réponse.
    Cordialement.
    Résolu !
    Accéder à la solution.
    Pièces jointes :
    VI.vi ‏55 KB

    Je vous remercie beaucoup de vos réponse. J'ai utilsé vos amélioration et idée et je pense que en théorie ça devrait marcher mais avant d'entamer les tests sur l'alimentation je suis confronté à un nouveau problème : j'ai ajouté des onglets qui devrait me permettre de passer d'un type de langage de commande à un autre. Pour gérer le changement d'onglet j'ai utilisé une structure condition avec une boucle While et une structure évènement. Sur le papier l'idée me paraissait bonne mais après test l'interface se bloque lors du premier changement. La faute est due à la structure évènement qui bloque sur changement d'onglet : valeur changé. Si vous connaissez une alternative à cette solution je vous serez très reconnaissant si vous pouviez me la faire connaitre.
    En vous remerciant par avance.
    Pièces jointes :
    FGV style Visa(1).vi ‏22 KB
    ELGAR TEST 2.vi ‏86 KB

  • Mettre en pause boucle while qui comporte une attente

    Bonjour,
    Je cherche à interrompre une attente qui est dans une boucle while.
    A l'aide d'un bouton pause par ex. je voudrais interrompre l'attente et en enlevant la pause, reprendre l'attente où elle en était.
    Merci pour vos idées.
    Manu

    Bonjour Manu,
    Tu trouveras un exemple ici :
    https://decibel.ni.com/content/docs/DOC-10792
    Cdlmt,
    Pierre
    Pierre V, Application Engineer
    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

  • Arrêt forcé d'une boucle while

    Bonjour,
    Est-il possible d'arrêter une boucle while avant la fin de l'exécution de la boucle ou avant la fin du temps d'attente ?
    Exemple si je programme un temps de cycle de 5 secondes ou plus (quelques minutes), et que j'appuie sur le bouton stop de la boucle j'observe alors une tempo de 5 s (ou plus) avant l'arrêt de la boucle.
    Merci.

    Oui, c'est possible. Vous pouvez remplacer la fonction d'attente avec une structure de gestion des évenements avec un timeout correspondant.
    J'attache un example.
    Paolo
    LV 7.0, 7.1, 8.0.1, 2011
    Attachments:
    Example.vi ‏18 KB

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

  • Arrêt une boucle While

    Bonjour,
    Pourriez-vous me donner des infos pour arrêter une boucle while ci-joint le vi. Merci par avance  
    Résolu !
    Accéder à la solution.
    Pièces jointes :
    VGL.lvlib ‏2 KB
    Test-de ProducerConsumerDataNI.vi ‏51 KB

    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
    LPMC - CNRS
    N'oubliez pas de complimenter cela fait toujours plaisir.

  • 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

  • Boucles While en parallele

    Bonjour,
    J'ai créé un programme où je fais, dans une boucle While le contrôle d'un pressurisateur et dans une autre boucle l'acquisition et l'enregistrement des données.
    Le pressurisateur doit fonctionner en continu alors que l'enregistrement se fait lors de l'appuis sur un bouton.
    Est-ce que deux voire trois boucles While peuvent fonctionner en parallèle, si oui, faut-il faire qqch de spécial dans le diagramme ou ça fonctionne sans paramètres spéciaux.
    Merci, cdt
    J. Perrin
    Résolu !
    Accéder à la solution.

    dans ton 1er exemple ... c'est l'erreur typique d'une méconnaissance du principe du "flux de données".
    Ta boucle "du bas" ne commencera son exécution qu'àprès la fin de l'exécution de la boucle "du haut".
    Car elle a besoin pour "commencer" d'avoir toutes les données présente à ses entrées.
    Elle s'exécutera ... mais n'exécutera qu'une seule itération.
    voici une solution ... il y a plusieurs façons de stopper des while en // ... celle-ci est,disons, la plus "simple".
    clic droit sur ton bouton "stop" ... create / local variable ... et placer cette variable locale en "lecture".
    Pièces jointes :
    Test_While_qui_fonctionne.vi ‏60 KB

  • On MacBook Pro unable to print webpage; I get a single blank page. But I can print using Safari. Started last week while using Firefox 3.6. I downloaded Firefox 5.0--same problem.

    On MacBook Pro unable to print webpage; I get a single blank page. But I can print using Safari. Started last week while using Firefox 3.6. I downloaded Firefox 5.0--same problem.

    I am now able to do live broadcasts with my i-sight, but my original problem still exisits....
    Unsolved Problem:I need to be able to broadcast from CamTwist as CamTwist is the only program that will allow me to do what I need to do.   Justin.tv and Ustream.tv do not recognize CamTwist for reasons I can not explain.

  • I have an iMac that I purchased back in 2010 and over the past 9 month or less my computer just started shutting down while someone was in the process or working on it.  What could this come from?  Is there a simple solutions to this problem?

    I have an iMac that I purchased back in 2010 and over the past 9 month or less my computer just started shutting down while someone was in the process or working on it.  What could this come from?  Is there a simple solutions to this problem?

    Which model iMac do you have?  http://support.apple.com/kb/HT1758 How to identify iMac models 
    Which OS is currently installed? 
    Check out KB Articles:  http://support.apple.com/kb/HT3964 Intel-based Macs: Resetting the System Management Controller (SMC) and http://support.apple.com/kb/HT1379 Resetting your Mac's PRAM and NVRAM 
    If not of the above works and you have AC, call them.  Let them deal w/it.  Otherwise, take your iMac down to your local AS or an AASP.  Diagnostic testing is FREE! 
    You can also research for a solution on YouTube's "How To" website and iFixit. 

Maybe you are looking for

  • Printing cover art from iTunes albums

    Back in the days of Jaguar it used to be easy to print album art work from music purchased from iTunes Store. It was just the right size for a jewel case. Now with Tiger I can select the art work, copy it to a word processing app, and print it, but i

  • t:panelTabbedpane tag of tomahawk

    I am trying to use <t:panelTabbedpane> but i am unable to use it i am trying myfaces1.1.2 jars and tomahawk1.1.2 jars is this version of myfaces support <t:panelTabbedpane> I am able to use use <t:inputDate> but unable to use <t:panelTabbedpane> my c

  • Project stock and MD51 (or MD03) use with nonvaluated materials (ie ERSA)

    I am looking for some help on a CBP(consumption based planning project) we are implementing for materials we treat financially as non-valuated in  our business. MD51 works for valued materials with project stock  for us in CBP, but not for non-valuat

  • Most Apple applications not starting up

    I've been having issues with system software recently. When I try to start iCal, Safari, Software Update, even the Calculator, the software's icon starts bouncing but never starts up. This is really starting to bug me since I can't update my software

  • Is this is a motherboard issue?

    I have a 2007-08 white MacBook. Recently it froze, so I shut it down. Now, the keyboard doesn't work, nor does the track pad or CD/DVD Drive. It doesn't recognize the battery, the green battery light glows very dimly, the battery shows no charge and