Discussions au sujet des autres produits NI

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

Répétition d'une opération par le biais d'une boucle

Résolu !
Accéder à la solution

Rebonjour, je post un nouveau message pour vous demander à nouveau votre aide.

 

Il y a quelques temps, j'ai réalisé un programme permettant d'envoyer des informations à un capteur (simulation de l'appuie sur la touche a, puis p, puis échap.

 

La réalisaton fonctionne, seulement maintenant j'aurai besoin de realiser plusieur fois la simulation de l'appuie sur la touche p.

 

Je vous met mon programme en pièce jointe, pourriez vous me dire ce qui ne va pas au niveau de la boucle ?

 

Cordialement

 

Note : Dans une version antérieure j'avais mis la boucle seulement sur la partie simulation de l'appuie sur la touche p, cela ne marchait pas non plus

 

 

0 Compliments
Message 1 sur 17
3 716 Visites

Bonjour,

Apparement à chaque tour de boucle (la principale) tu lis une valeur, puis tu écris (ou non) dans l'évènement, et tu recommences. Or là où tu as mis ta boucle (la petite), tu écris 10 fois d'affilé avant de venir lire. Ce n'est pas ça qui pose problème? Est-ce que ton appareil n'attend pas un Read après chaque envoi?

Qu'est-ce qui ne fonctionne pas en fait, quel est le problème?

 

Cordialement,

Simon D.
CLA | Certified LabVIEW Architect
CTA | Certified TestStand Architect
Message 2 sur 17
3 712 Visites

Le problème en fait, vient du fait qu'en mettant une boucle qui doit se faire 10 fois, si je clique sur le bouton specialement créé pour générer dix fois l'appuie sur la touche, cela a pour effet d'augmenter le gain d'une seule fois (l'appuie sur la touche a puis p puis echap génère l'incrementation du gain du capteur d'une fois.)

Voila pourquoi j'utilise une boucle qui se fait 10 fois.

Ensuite je ne vois pas de problème entre la lecture et l'ecriture car la lecture se fait toujours en temps réel, et l'écriture marche aussi en temps réel.

 

Je pense qu'il faut jouer sur les différentes temporisations, mais je n'ai aucune idée desquelles

0 Compliments
Message 3 sur 17
3 710 Visites

Je viens de voir autre chose que je n'avais pas vu! Ton bouton offset TA 10x est relié à tes conditions. Or il est en action poussoir donc l'écriture du gain va se faire au premier tour de boucle, puis tu vas écrire 0 à chaque fois. Tu dois sortir ces conditions, de toute façon la séquence dans ta boucle ne s'exécute que s'il y a eu un clic sur le bouton.

Si ça ne marche toujours pas, essai de faire un test avec un nouveau vi, ou tu mets uniquement la boucle qui tourne 10 fois après avoir configurer ton port.

PS: tu peux utiliser Value change pour les événéments

Cordialement,

Simon D.
CLA | Certified LabVIEW Architect
CTA | Certified TestStand Architect
Message 4 sur 17
3 703 Visites

Bonjour,

 

Comme l'a demandé Simon, qu'est-ce qui ne marche pas exactement?

Tu sembles dire que si tu exécutes le code de ta boucle 1 seule fois cela fonctionne, mais pas lorsque ta boucle fais 10 itération, c'est ca? Est-ce que le code permet au moins de faire 1 incrémentation, même quand tu espères qu'il en fera 10?

De plus, avec la comparaison que tu fais, tu réalises 11 itérations, et non 10, le terminal d'itération commence à 0, et tu l'arretes lorsqu'il vaut 10.

 

Cordialement,

Olivier L. | Certified LabVIEW Developer


Message 5 sur 17
3 702 Visites

@simonD : Je suis daccord avec toi pour sortir le boutons mais pour le mettre ou ? toujours dans la structure évenement ? ou en dehors de celle ci ?

Ensuite a quoi sert le value change ?

 

@Olivier_L : Pour le bouton ou l'action doit se faire une seule fois cela marche, si j'utilise le bouton qui devrait commander l'execution de fois l'action, cela ne la fait qu'une seule fois

Autant pour moi je viens de voir mon erreur au niveau du 10, je le rectifie.

0 Compliments
Message 6 sur 17
3 691 Visites

Bonsoir,

 

Est ce qur vous pourriez poster votre code en LV9 ?

 

 

Cdt

 

Tinnitus

 

 

CLAD / Labview 2011, Win Xp
------------------------------------------------------
Mission d'une semaine- à plusieurs mois laissez moi un MP...
RP et Midi-pyrénées .Km+++ si possibilité de télétravail

Kudos always accepted / Les petits clicks jaunes sont toujours appréciés
Don't forget to valid a good answer / pensez à valider une réponse correcte
Message 7 sur 17
3 686 Visites
Solution
Accepté par l'auteur du sujet isat58

C'est tout à fait normal que ça ne s'exécute qu'une fois, vu que le bouton conditionne l'action, et que tu n'appuies qu'une seule fois dessus. En fait dans tous tes cas tu dois sortir les conditions, et les boutons n'ont pas besoin d'être cablés.

Il faut juste le laisser dans le cas correspondant s'il est en latch pour qu'il se réinitialise (qu'il se relache) mais il n'y a pas besoin de le cabler. L'action choisie génère un évênement qui est enregistré par LabVIEW  pour effectuer l'action correspondante

L'évênement value change correspond à n'importe quel changement de valeur généré par l'utilisateur sur l'IHM ou par l'utilisation d'un noeud de propriété Value(signaling). c'est donc celui qui s'adapte le mieux à la gestion des IHM car tu peux t'en servir sur toutes les commandes et le générer par programmation.

Cordialement,

Simon D.
CLA | Certified LabVIEW Architect
CTA | Certified TestStand Architect
Message 8 sur 17
3 685 Visites
0 Compliments
Message 9 sur 17
3 684 Visites

Je suis totalement d'accord avec Simon,

Il te suffit d'enlever les structures conditions qui ne servent à rien, mais de laisser le bouton à l'intérieur de la structure évenement (il ne sera cablé à rien).

Cela devrait fonctionner.

Olivier L. | Certified LabVIEW Developer


Message 10 sur 17
3 669 Visites