Boucle FOR dans une boucle while
Bonjour à tous,
je rencontre un problème, car lorsque j'exécute une série de commande dans boucle FOR, celle ci ne s'arrête jamais.
Ma boucle FOR est censée exécuter toutes les sections lues à partir d'un fichier de configuration et s'arrêter.
Mais elle répète en boucle mes sections..
Je ne vois pas bien d'où vient mon problème.
Cordialement
Résolu !
Accéder à la solution.
Pièces jointes :
Mode _Auto_Cluster.vi 151 KB
@aznnath :
Mode_Auto_Cluster.vi.
jolie surprise, bravo pour l'effort évident de propreté du BD. (on va dans la bonne direction)
une certaine réponse était peut-être un rien "rigide".
à ma décharge, une certaine forme de récurrence n'aide pas.
et respect à TiTou pour sa déterminantion dans l'aide qu'il t'apporte.
Similar Messages
-
Boucle FOR dans une boucle while avec un registre à décalage
Bonjour à tous,
je rencontre un problème au niveau de l'indexation de l'execution de mes commandes.
Lorsque j'exécute mon programme, seulement la dernière commande est prise en compte.
Faut-il enlever mon registre à décalage? Changer le mode du tunnel ?
Cordialement
Pièces jointes :
Boucle FOR, while.JPG 134 KBça peut avoir son utilité lorsque le diagramme est conséquent et illisible
alors c'est que tu "reprends en main" le diagram d'un autre ....
sinon... si c'est le tien ... il ne sera jamais illisible.
Et si tu veux "gagner du temps" ... je t'assure ... cable "propre" du premier coup.
Lisibilité, compréhensibilité, évolutivité ... tu seras gagnant à tous les coups. (à 1000%)
Sans compter "le coup d'oeil" quand "un autre" ouvrira ton code.
Avant d'aller plus loin et de comprendre quoi que ce soit dans ce que tu as fait ...
la propreté de ton diagram sera "ta signature".
Ah oui ... un diagramme aussi propre que ça ... ça ne peut être que Geoffrey !
ça l'fait non ? -
Arrêter une boucle FOR dans une boucle While
Bonjour à tous,
J'ai une boucle while me permettant de faire une acquisition de température et en même temps, exécuter des commandes en fonction des sections..
Néanmoins une fois toutes mes sections exécutées à partir de mon fichier ini, l'execution recommence.
Ce que je ne souhaite pas..
Auriez-vous une solution ?
Résolu !
Accéder à la solution.
Pièces jointes :
Mode _Auto_Cluster.vi 124 KBTiTou a écrit : Tu comptes finir un jour ce blog post?
Je ne sais pas... j'ai commencé en LV2010, et en 2012 des "choses" ont été modifiées par le "process" NI qui gére les templates. Le principe de départ reste le même, mais avec quelques modification sur le specpage, et surtout le postcopy. Je travaille parfois, à mes heures perdues, tardivement dessus. Mais je voudrai faire beaucoup plus via le gestionnaire custom, donc il y a du travail, hors j'ai pas beaucoup d'heures perdues!!!
TiTou a écrit : Vous avez des templates de projets personnalisés chez Mesulog?
oui nous avons, 2 modèles de projet, réalisés suivant
Partie 1/3 : Créer des modèles de projet personnalisés avec le gestionnaire de projet LabVIEW - Pour...
et distribué aujourd'hui suivant le gestionnaire "standard" de NI
Partie 2/3 : Distribuer des modèles de projet personnalisés avec le gestionnaire de projet LabVIEW -...
il reste donc "quelques opérations manuels", surtout concernant le build, et du renommage de vi, comme le main et fichier ini.
TiTou a écrit : On a un framework chez QMT et j'aimerai le distribuer sous forme de package VIPM et pour ça j'aimerai d'abord l'intégrer au templates gérés par LabVIEW.
J'avais proposé pour les rencontres LUGE, users group de la région, de discuter de cela. Mais pas beaucoup de retour. Les personnes étaient plus intéressées par une présentation sur les techniques de programmation LabVIEW que par les projets...
Si cela intéresse d'autres personnes...
Sinon nous pourrions réflechir à une journée technique MESULOG - SAPHIR - QUALIMATEST...
@+
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 -
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 KBBonjour,
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... -
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 -
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 -
Probleme de decalage dans une boucle FOR
Bonjour j'ai un petit probleme dans ma boucle j'ai un code source et je dois extraire des informations de temperature de vent ... voici les lignes où je dois extraire les infos :
<tr class="temp">
<th scope="row">Temp. (°C)</th>
<td class="first-col">6°</td>
<td class="">6°</td>
<td class="">6°</td>
<td class="">6°</td>
<td class="">5°</td>
<td class="">5°</td>
<td class="">4°</td>
<td class="last-col">4°</td>
</tr>
<tr class="realfeel">
<th scope="row">RealFeel®</th>
<td class="first-col">3°</td>
<td class="">3°</td>
<td class="">4°</td>
<td class="">3°</td>
<td class="">3°</td>
<td class="">4°</td>
<td class="">4°</td>
<td class="last-col">3°</td>
</tr>
<tr class="realfeel">
<th scope="row">Précipitations</th>
<td style="border-right:solid 1px #EFECE4;" class="first-col" colspan="3">50%</td>
<td style="border-right:solid 1px #EFECE4;" class="bggray" colspan="3">50%</td>
<td class="last-col" colspan="3">40%</td>
</tr>
<tr>
<th scope="row">Vent (km/h)</th>
<td class="first-col">13 OSO</td>
<td class="">11 OSO</td>
<td class="">10 OSO</td>
<td class="">8 OSO</td>
<td class="">6 OSO</td>
<td class="">6 OSO</td>
<td class="">5 OSO</td>
<td class="last-col">5 SO</td>
</tr>
<tr>
<th scope="row">Humidité</th>
<td class="first-col">80%</td>
<td class="">81%</td>
<td class="">82%</td>
<td class="">85%</td>
<td class="">87%</td>
<td class="">90%</td>
<td class="">92%</td>
<td class="last-col">93%</td>
</tr>
<tr>
<th scope="row">Indice UV</th>
<td class="first-col">1</td>
<td class="">0</td>
<td class="">0</td>
<td class="">0</td>
<td class="">0</td>
<td class="">0</td>
<td class="">0</td>
<td class="last-col">0</td>
</tr>
<tr>
<th scope="row">Couverture nuageuse</th>
<td class="first-col">83%</td>
<td class="">100%</td>
<td class="">100%</td>
<td class="">100%</td>
<td class="">100%</td>
<td class="">100%</td>
<td class="">100%</td>
<td class="last-col">100%</td>
</tr>
<tr class="last-row">
<th scope="row">Point de rosée</th>
<td class="first-col">3°</td>
<td class="">3°</td>
<td class="">4°</td>
<td class="">3°</td>
<td class="">3°</td>
<td class="">3°</td>
<td class="">3°</td>
<td class="last-col">3°</td>
</tr>
Le probleme que c'est j'ai fais 2 boucle For imbriqué la premiere elle lit les données " les valeurs de la temperature..." et la deuxieme pour quelle passe à la prochaine donnée par exemple: vent pour que je puisse lire ces valeurs ainsi de suite , mais ca marche pas !!! vu quelle reste toujours dans la premiere donnée "temperature " ensuite elle sort, et au final j'ai juste les primiere valeurs AIDER MOI PLZZZZZZ !!! MERCI
PS : voici mon VI dans les pieces jointes
Pièces jointes :
La total.vi 95 KBBonjour,
Pour ce qui est de récupérer tes valeurs, il suffit de récupérer et de modifier le Vi que je t'avais envoyé dans le post suivant :
http://forums.ni.com/t5/Discussions-de-produit-de-NI/remplir-un-tableau/m-p/1870401#M45083
Il d'y ajouter une boucle For de modifier les fins de lignes et de faire un tableau 1D avec les en-têtes des blocs de mesures que tu veux récupérer, par exemple :
<th scope="row">Temp. (°C)</th>
<th scope="row">RealFeel®</th>
<th scope="row">Vent (km/h)</th> -
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 -
Table: enleverun ligne dans une boucle while
bonjour,
je remplis une table avec des valeurs, le but est de pouvoir effacer une ligne quand j'ai fais une faute ,
le probleme quand je click droit souris sur la table supprimer la ligne , ca ne marche pas,car je suis dans un boucle infini.
je veux rester dans la boucle et effacer la ligne , si vous avez une idée, ou améliorer mon programme
merci.
Pièces jointes :
table.vi 136 KBBonjour Babnour,
J'espère que cet exemple vous éclairera; à vous par la suite de le réutiliser et de l'adapter exactement à ce dont vous avez besoin. Il me semble que vous connaissez déjà la structure évènement, et je l'ai enregistré pour LabVIEW 7.0...
Une remarque concernant les tableaux: il est recommandé lorque l'on en connaît la taille, d'utiliser la fonction remplacer un élément, plutôt que ajouter un élément (gestion de mémoire plus efficace, puisque dès l'initialisation du tableau, l'espace mémoire nécéssaire est alloué).
Dans l'exemple, la taille du tableau est réglable (avant de lancer l'éxécution) et paramétrée à 8 par défaut. en focntion de l'évènement "clic" détecté, on détermine l'index qui servira pour la fonction remplacer, et l'index pour la prochaine itération de la boucle globale. Si cet index suivant sort de la gamme d'index possible du tableau, on ne modifie pas le tableau, on ne prend pas en compte la modification d'index, et un message apparaît.
Cordialement,
Message Edité par Mathieu R. le 09-08-2006 03:26 PM
.mrLeft{float:left} .mrInfo{border-left:solid 1px #989898;font-size:x-small;color:#989898}
Mathieu R.
CTD - Certified TestStand Developer / Développeur TestStand Certifié
CLAD - Certified LabVIEW Associate Developer
Pièces jointes :
tableRem.vi 47 KB -
Sélection de valeurs numériques lues dans une boucle
Bonjour à tous,
Presque débutant, je cherche à résoudre le problème suivant :
Je lis une valeur numérique à 1Hz.
Si elle est > à 1
et
Si elle est différente de la valeur précédente.
Je l'écris dans un fichier.
Malheureusement je n'arrive pas à me sortir de cette affaire.
Pouvez vous m'aider ?
Salutations
Résolu !
Accéder à la solution.Bonsoir,
Voici une petite traduction de l'algo à utiliser
Pour l'enregistrement il y a des fonctions existantes dans la palette File IO, je vous laisse le soin de choisir celle qui vous conviendra...
Cordialement,
Rodéric L
Certified LabVIEW Architect
Pièces jointes :
Sans titre.jpg 19 KB -
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 KBBonjour 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 -
Boucle For et boucle While - Lequel choisir ?
Bonjour à tous,
Petite question : dans la mesure du possible, est-il préférable d'utiliser une boucle while ou une boucle for ?
Cordialement,
Geoffrey, LabVIEW Associate DeveloperC'est légèrement différent, on peut décider de ce qu'il faut faire si la boucle prend du retard (sortir et donner une erreur, attendre un multiple de, ignorer le retard).
Mais si il n'y a pas de problème de cadence dans une boucle while ou for, il est fort peu probable que ça jouera aussi avec une timed loop. L'avantage sera que si d'autre tâches viennent prendre de la ressource pendant que cette boucle tourne, "normalement" (oui... on est sous Windows...) la timed loop bénéficie d'une priorité plus élevée.
Note : le "attendre un multiple de" est très bien mais attention au piège car si le code met plus que la valeur demandée pour s'exécuter, on attend le prochain multiple et ça peut (pas forcément mais c'est possible) décaler encore plus.
When my feet touch the ground each morning the devil thinks "bloody hell... He's up again!" -
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/ -
Slt ,
Je ne comprend pas comment on utilise la boucle for dans Labview. J'ai un code d'une boucle for de ce style :
for (i=2; i>=10,i++)
printf(" ouvrir les fenetre");
i++;
J'aimerais savoircomment le traduire dans l'une des boucles (si For loop n'et pas la bonne) dans labview svp..
("Desolée de déranger avec des quedtions comme sa, mais je suis bloquée )Bonjour, j'ai une version Anglaise:
For Loop
Owning Palette: Structures
Requires: Base Package
Executes its subdiagram n times, where n is the value wired to the count (N) terminal. The iteration (i) terminal provides the current loop iteration count, which ranges from 0 to n-1.
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
Maybe you are looking for
-
Seperate Java Apps accessing the same table
I have 2 Java applications running independently that will be modifying the same table simultaneously. I am trying prevent the programs from "stepping on each others toes" for lack of a better term. I only want one program to be able to work on this
-
HFM Rule - Calculated Account with formula
I have added a new calculated EBITDA account (Called "WACCEBITDA") to my metadata and now I need a rule to poulate the amount. Below is the current rule and what the calc should be for the new account. I have updated the rule and tested, but i get an
-
SMTPD consumes all available RAM resources
Hi all, I have a mail server that has extremely heavy disk activity after a few minutes of being booted, I have narrowed this down to heavy RAM usage by the SMTPD process. In Activity monitor, multiple SMTPD processes are spawned, consuming up to 2GB
-
CM21 - How to display only released orders in CM21
Hi, I want to display only released orders in trasaction CM21. Currently it is displaying both created and released orders. could you please guide me how to proceed? BR/ Laxmikant Lande
-
How to create LR (2.*) web templates? Hi
Hi, I make my web sites with Dream weaver. I want to create templates for LR2 in dream weaver so they have the same look and feel as my own web site. Any ideas who this can be done? The LR web template method can not be that secret? Regards Chris