Structure événement et sous vi

Bonjour à tous,
Mon problème à peut être déjà été traité mais je n'ai rien trouvé dans les exemples et les forums.
Je souhaite lancer un sous vi avec face avant visible à partir d'un vi principal utilisant une structure événement et pouvoir continuer à interagir sur le vi principal pendant que le sous vi s'exécute.
Le sous vi doit afficher une donnée générée par le vi principal.
Je joins un exemple ou le vi principal est bloqué :-( tant que le sous vi s'exécute. Donc la donnée affichée n'évolue pas.
J'ai essayé d'utiliser une exécution dynamique du sous vi, je pense que ça fonctionne mais la face avant du sous vi ne s'affiche pas.
Merci d'avance pour vos suggestions.
Solved!
Go to Solution.
Attachments:
Main.vi ‏11 KB
SubVI.vi ‏10 KB
Variable globale.vi ‏5 KB

Bonjour Syned,
Je pense qu'il faudra deux boucles indépendantes pour gérer ce comportement asynchrone. Je suis parti sur un modèle "producteur/consommateur de messages" en reprenant le même exemple (variable globale + sous-VI).
Laurent V.
Application Engineer - National Instruments (France)
http://france.ni.com/support
http://www.ni.com/support
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;}
Journées techniques : du contrôle d'instruments aux bancs de test
Du 4 au 13 juin : Grenoble - Pari...
Attachments:
ProducerConsumerEvents.vi ‏24 KB
SubVI.vi ‏12 KB
Variable globale.vi ‏5 KB

Similar Messages

  • Structure Événement dans un sous-vi

    Bonjour,
    Je cherche à optimiser mon programme en mettant toutes mes fonctions sous forma de sous-vi.
    Néanmoins, j'ai remarqué qu'une structure événement exécute uniquement la condition de timeout lorsque qu'elle se trouve dans un sous-vi.
    Pouvez vous me confirmer le fait qu'une structure événement ne fonctionne que si elle est directement dans le programme principale.
    Citation: http://forums.ni.com/t5/Discussions-de-produit-de-NI/Structure-evenement-dans-un-sous-vi/m-p/1119267...
    une structure événement peut être considérer comme des interruptions dans d'autres langage. il doit être dans un programme principal. Seul ce qui est à l'intérieur peut être fait en sous vis.
    Cordialement
    L.MICOU
    Labview 8.2 version étudiante
    Sound & Vibration Toolkit
    Résolu !
    Accéder à la solution.

    Bonjour,
    Le timeout d'une structure évènement fonctionne aussi bien dans un VI principal que dans un sous VI à partir du moment ou vous avez indiqué une valeur de timeout à la structure ( par défaut -1).
    La structure évènement permet de monitorer des évènements générés par la face-avant / les composants de la face-avant du même VI. Cependant une structure évènement peut être utilisée pour monitorer des évènements utilisateurs (créés par vous) et dans ce cas elle peut être utilisée dans un VI principal comme dans un sous VI.
    Cordialement,
    Da Helmut

  • Est-il possible d'avoir un exemple plus détaillé de l'utilisation d'une structure évènement?

    Je cherche à piloter une charge programmable de type Prodigit 3254 series grace à Labview sous Windods XP. Une démo était fournie avec le matériel mais comporte beaucoup de bug et surtout surcharge l'UC à 100%. J'ai essayé d'utiliser une structure évènement pour palier à ce problème mais je perd le controle de la charge. Mon programme d'origine me permet de la controler, de faire évoluer sa config mais dès que l'ajoute la structure évènement je perds le controle de tout. Est-il possible d'avoir des détails sur la manière d'utiliser une structure évènement? sur son mode de fonctionnement? Rien ne figure dans le livre de programmation de Francis Cottet pour la version 6.1. Merci d'
    avance

    Bonjour, vous pouvez trouver les infos concernant la structure évènement ici :
    Loops and Structures : http://zone.ni.com/devzone/devzone.nsf/webcategories/E27D46969B82A7FD86256A23005B6947
    Plus précisément dans :
    - Event-Driven Programming in LabVIEW
    - Use the Event Structure in LabVIEW to Capture a Panel Close Event
    - Inside LabVIEW : Event-Driven Programming
    N'hésitez pas à me dire si cela répond à votre besoin.
    Cordialement
    Nicolas François
    National Instruments France

  • Structure évènement

    Bonjour !
    Pour la deuxième fois de l'année, je viens faire un tour sur le forum, parce qu'il m'a bien aidé, mais là je suis bloquée... Je vous explique.
    Ce que je fais
    Je réalise une application qui va contrôlé, à distance, un petit robot capable d'effectuer divers actions (déployer un bras, le rentrer, etc). Au niveau de mon IHM, mon travail consiste à constituer une trame d'ordre (avec le mouvement à réaliser, ses données - de combien de °, combien de temps, ... - , etc), de l'envoyer sur une RS232 reliée à la radio, et de receptionner deux trames : l'une étant l'accusé de réception (si l'ordre était conforme au protocole établis, si les données sont hors limites des possibilitées du robot etc) puis l'accusé de réalisation, une fois que l'ordre a été effectuer.
    Ce que je veux
    Maintenant, le plus important sans doute, est l'ajout un bouton gérant un arrêt d'urgence. En effet, je veux que quelque soit ce qu'est entrain de faire mon programme, il l'abandonne pour sortir des différentes structures et envoyer l'ordre d'arrêt d'urgence.
    Ce que j'ai tenté
    J'ai mis en place une structure d'évènement, avec pour condition un changement d'etat sur mon arrêt d'urgence
    Mon problème
    Ca a marché, lorsque pour tester je faisais juste afficher une constante dans un indicateur (comme "Arrêt d'urgence envoyer). Par contre, maintenant que j'utilise carrément des fonctions pour lire/écrire sur la RS232, lorsque je lance mon programme et appuis sur le bouton ... Tout plante. Quand je dis planter, c'est que je ne peux plus cliquer nul part, que l'ordre n'a pas été envoyer, et que labview est quasiment entrain de me dire "a cesser de fonctionner".
    Pour vous donner un apperçu de mon programme, j'ai fais un squelette simplifié que je joins en PJ, parce que mon appli est assez conséquente.
    En vous remerciant d'avance !
    Pièces jointes :
    Squelette.png ‏73 KB

    Hello,
    La boucle while dans la boucle while gérée par événement, c'est plutôt moyen ça... je soupçonne ta structure événement de détecter l'arrêt, mais l'autre continue de tourner...
    Je sortirais la boucle while interne. Le mieux est d'utiliser une VGF (un simple booléen avec lecture/écriture) pour gérér le stop. Lorsque ta structure événement détecte AU, tu écris vrai dans ta VGF. Tu utilises la VGF en lecture pour piloter l'arrêt de la boucle while que tu as sorti.
    Si tu ne connais pas, il y a pas mal d'exemples de VGF qui trainent ici et là...
    Sinon, il faut bien penser à correctement fermer test sessions visa lorsque tu utilises le RS232, pour ne pas "bloquer" les ressources lors de l'utilisation suivante.
    @ +
    Francis M | Voir mon profil
    Certified LabVIEW Developer

  • Problème structure évènements

    Bonjour,
     J'ai un petit problème concernement l'utilisation de la stucture évènement. Ce que je souhaiterai faire c'est d'afficher une boite dialogue en fonction d'un changement de variables. Pour être plus précis  j'ai 2 variables que l'on nomera X et Y  que l'on peut modifier manuellement et je voudrais afficher un message dès que l'une d'entre elle à été changé. Mais le porblème est que je ne suis pas sûr qu'on puisse utiliser une structure évènement en fonction  de 2 variables et j'ai lu sur le forum que mettre 2 structures évènements dans le même VI n'est  pas conseillé. Donc je suis un peu bloqué. Tout aide de votre part serai la bien venue
    Merci d'avance.

    Oui Nathand a raison
    Suis ses instructions
    Je te mets un exemple
    A+
    Charly
    It's always sunny in California! Certified LabVIEW Associate Developer!
    Attachments:
    EventStructure.vi ‏11 KB

  • Peut-on "désactive​r" des événements dans une structure Evénement?

    Bonjour,
    J'ai dans mon VI une structure événements dont les conditions d'événements sont reliées au changement de valeur de certaine de mes données.
    Ces conditions me permettent de ne pouvoir valider l'utilisation d'un interrupteur que lorsque l'utilisateur à rempli certaines informations sur la face avant (valeurs d'initialisation de mon VI).
    Une fois l'utilisation de cet interrupteur devenu valide, je désire que mes conditions d'événement ne soit plus valide: je ne désire plus que lorsque mes données changent effectuer les actions de certaine de mes conditions d'événement.
    Je cherche donc à faire un peu comme pour un microcontroleur:
    - Valider interruption X,Y,Z
    - si interrupteur basculé dévalider interruption X et Z
    X,Y,Z correspondant à mes conditions 1, 2 et 3 de ma structure d'événement.
    Es ce possible à réaliser?
    Résolu !
    Accéder à la solution.

    Bonjour à vous et à toi ! comme son nom l’indique nœud de propriétés « Register Events » : enregistrement des évènements…. Dynamique.
    Sur une structure évènementielle il y a des évènements enregistrés en dur (à la main dans le code par l'édition de la structure) et des évènements dynamiques. Le  « Register Events » permet un enregistrement des évènements de façon programmatique dans le code.
    Seulement les évènements dynamique sont modifiables et sont annulables.
    L’intérêt ? Par exemple l’enregistrement d’évènement d’un XControl (en dehors de lui-même), plus intéressant ? si tu as un exécutable « générique » (noyau) mais avec une IHM spécifique à des clients, sur laquelle tu veux gérer des évènements alors tu récupères les références des objets et tu les enregistres.
    Il y a un enregistrement d’évènement qui ressemble, se sont les ActiveX avec des vi Callback
    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

  • 2 Structure événement dans machine à état

    Bonjour ,
    J'utilise 2 structures événements dans une structure d'état mais je n'arrive pas à affecter 2 actions différente (par 2 fois) avec le même booléen .
    Les action arrivent simultanément sans que j'ai pu faire les deux actions l'une après l'autre.
    J'ai mis en fichier attaché ,un résumé de mon application
    Comment faire , une idée ?
    PS je veux garder deux structures évenements car j'ai plusieurs pages
    merci
    Michel
    Pièces jointes :
    Two_event.vi ‏13 KB

    Bonsoir,
    Regarde si s'est ce que tu veux faire.
    Bon courage.
    Philippe B.
    Certified Associate Developer / Dépt Moyens d'essais
    www.ingenia-system.com
    Pièces jointes :
    Two_event.vi ‏12 KB

  • Utilisation de la structure évènement (débutant)

    Bonsoir,
    J'ai fait une boucle for. J'ai donc ma condition "vraie" et ma condition "faux" et tout fonctionne. 
    Mais maintenant, j'aimerai qu'une fois la condition vraie rencontrée, qu'il ne quitte plus la boucle et fasse toujours cette opération quelque soit la condition d'entrée. Une fois la condition vraie rencontrée, "tu" continues toujours de faire la condition vraie.
    Je me suis alors tournée vers la structure évènement, mais je n'arrive pas du tout à comprendre comment elle fonctionne. Pensez-vous qu'elle est la solution à mon problème?
    Si non, avez-vous des idèes vers lesquelles m'orienter?
    Merci d'avance.
    Cordialement,
    Laetitia M.

    Bonjour Laetitia,
    Poster un exemple nous aiderait à comprendre ce que tu as déjà fait... sa a l'air un peut confus
    La structure évenement s'utilise plutôt dans une boucle while. 
    vOICI UN PETIT TUTORIEL SUR LES EVENEMENTS/ http://www.youtube.com/watch?v=8eO64fo3Pho
    SInon j'ai mis un petit exemple avec les boucles for qui me semble correspondre à la demande: j'ai mis une condition de fin de la boucle FOR de haut niveau, dans le cas VRAI, on execute le code le nombre de fois restantes... es ce cela qui est recherché?
    Cordialement,
    Rodéric L
    Certified LabVIEW Architect
    Pièces jointes :
    for loop ex.JPG ‏25 KB

  • Problème d'ajout structure événement+vista

    Je vient d'initialiser avec labview 9.0 et j'ai rencontré un problème lors de l'ajout des événements et des conditions dans la structure événement. Notant que je utilise windows Vista.

    In English here.

  • 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

  • Structure Producteur Consommateur et Sous-Vi parallèles

    Bonjour,
    Je souhaite développer une application permettant de piloter plusieurs source/multimètre en GPIB et effectuant des opérations en parallèle mais indépendantes entre elles.
    Le pilotage de ces sources se ferait sur une seule face avant avec plusieurs onglets suivant la source. Je pensais partir sur une structure du type producteur consommateur avec des sous-vi en parallèles gérant chacun une source.
    J'ai donc commencé à réaliser cette structure en m'appuyant sur la très célèbre doc de expressionflow
    Cependant, je rencontre 2 problèmes que je n'arrive pas à résoudre :
    - Une erreur 1 apparait lors de l'execution suite à l'ajout d'un élément dans la file d'attente par le vi parallèle.
    - La fonction d'envoi de message ne fonctionne pas du premier coup, il faut appuyer deux fois sur Send pour transmettre le message.
    Je joins mon programme qui sera certainement plus parlant que de longues explications.
    Merci pour vos avis.
    Attachments:
    ECLab.zip ‏138 KB

    Hello,
    I want to develop an application to control multiple source/multimeter by GPIB and performing operations in parallel but each ones independently.
    The control of these sources would be on a single front panel with multiple tabs depending on the source. I thought from a producer/consumer model with parallel sub-vi, each one managing one source.
    So I began to realize this structure with the famous doc of expressionflow
    However, I encounter two problems I can not solve:
    - An error 1 appears on execution due to the addition of an element in the queue by the parallel vi.
    - The function of sending message does not work the first time, you must press twice on Send to send the message.
    I have attached my program that will certainly be more clear than long explanations.
    Thank you for your opinion.
    Attachments:
    ECLab.zip ‏138 KB

  • Verrouillage non-souhaité de la face-avant dans une structure événement

    Bonjour !
    J'ai deux VIs qui gèrent un processus de calibration similaire. Dans ces deux VIs, je dois commencer par synchroniser mes capteurs avant de pouvoir faire des tests dessus (récupérer les données, etc). Cependant pour un des deux programmes (celui de Calibration Gaz, ci dessous) lorsque je clique sur "Synchroniser", l'événement de synchronisation est bien effectué, mais ensuite toute ma face avant est bloquée, et je me retrouve obligé d'arrêter le VI.
    Pourtant, dans mes deux programmes, la partie qui gère la synchronisation me semble bien similaire... Auriez-vous une idée d'où le problème pourrait venir ?
    Le Programme Fonctionnel :
    Le Programme Bloquant :

    MoonRat a écrit :
    . (pourtant, les cases "verrouiller la face-avant jusqu'à la fin de l'éxecution" dans la struct. événement sont bien décochées...)
    dans ma version de LabVIEW, lorsque j'ouvre ton code, dans le code de calibration gaz, la structure event (qui gére l'action synchroniser) est configurée en lock front panel until.... donc je ne suis pas d'acord avec toi.
    Tu as 2 structures event, et c'est la deuxième qui a l'option décochée.
    Donc pour moi, c'est l'évènement qui n'est pas terminé.

  • Comment remplir un tableau de données avec une structure événement ?

    Bonjour à tous.
    Je cherche à récupérer les données des curseurs d'un graph XY dans un tableau.
    Comme je fait plusieurs relevés j'utilise une fonction événement.
    j'ai réussi à incrémenter l'index du tableau à chaque enregistrement mais je n'arrive pas à inscrire les données dans le tableau.
    Comment inscrire ces données dans un tableau ?

    partant du principe qu'un petit VI vaut mieux qu'un long discours
    si tu as des questions, n'hésites pas
    When my feet touch the ground each morning the devil thinks "bloody hell... He's up again!"
    Attachments:
    add to array.vi ‏26 KB

  • Structure événement variable réseau

    Bonjour à tous,
    Dans un VI, je souhaite que le code ne s'execute que si la valeur de la variable change. J'utilise donc un bloc event. Cepedant, j'aimerais qu'un évènement soit associé à une variable partagée réseau. Est-ce possible de configurer un tel évènement sans qu'il n'y ait le contrôle sur la face avant ? Merci d'avance.
    Gautier
    Pièces jointes :
    VarTest.lvproj ‏2 KB
    VItest.vi ‏11 KB
    BibliothequeTest.lvlib ‏2 KB

    Franchement, je n'ai jamais utilisé de "variable partagée réseau" ...  
    mais ... "la théorie étant toujours la théorie" ... ceci ne pourrait-il pas convenir ?
    Si la valeur de la "variable réseau" est différente de sa valeur précédente,
    alors un "User Event" est généré et "code" est exécuté ... ce, avec un échantillonnage toutes les 50ms
    (peut-être penser à initialiser le shift-registre avec la valeur d'entrée de "variable réseau")
    (le laisse la main à d'autres pour confirmer ou infirmer la validité de ce code ...dans le cas particulier d'une variable réseau)
    Pièces jointes :
    toto.vi ‏14 KB

  • Structure à évènement: problème de coordination temporelle

    Bonjour,
    Ce VI nécessite l'intervention de l'utilisateur pour fonctionner. L'utilisateur a le choix de cliquer sur 2 ronds de coté qui lui donne accès après un temps variable (et suivant un clic lorsque le délai est écoulé) à 1 point.
    Il peut répondre sur un rond et changer pour l'autre mais pour ceci je souhaite qu'il réponde au préalable un certain nombre de fois sur un autre rond qui est placé lui au milieu. Prenons un exemple: il clique 1 fois à droite, le bouton de gauche doit disparaitre. Si il veut cliquer à gauche, il doit cliquer n fois sur le bouton de centre et ensuite le bouton gauche apparait et le droit disparait.
    Là mon vi ne fonctionne pas comme ça. Déjà je n'arrive pas à programmer l'exigence d'appuyer plusieurs fois sur le bouton de centre. Ensuite, je dois appuyer sur le bouton centre + sur le bouton droit pour faire disparaitre ce bouton et apparaitre le bouton gauche.
    Merci d'avance pour votre aide et en espérant que mes explications soient claires. 
    Pièces jointes :
    Choose_Left_Or_Right COD essai.vi ‏27 KB

    Tape machine à état dans l'aide LabVIEW, et tu as pas mal d'explication sur le sujet.
    Concrètement, tu définis un modèle dans lequel tu créés des états et des transitions entre les états. Le mieux est de commencer par faire un schéma avec tous tes états et leurs propriété, ensuite tu définis les transitions (les conditions pour passer d'un état à l'autre), et ensuite tu passes au codage.
    Cordialement
    Benoît C.
    Certified LabVIEW Associate Developer

Maybe you are looking for

  • Global memory

    Hi , could any one tell me ,whether we can pass internal table by using SPA AND GPA(SAP MEMORY). REGARDS SANJEEV

  • Selection question

    I have just upgraded from elements to PS CS4. I'm used to using the magnetic lasso to grab stuff, then magnifying to the edges of the select, then using a brush to touch up a few areas of the selection. I'm finding I can do all that in PS CS4 except

  • SOAP response without envelope

    Hi!!! Anybody can help me please? I send a SOAP message to a WebService and I receive a reply message. The problem is that I can see correctly the answer using replyMessage.writeTo(System.out); but if I call SOAPBody body = reply.getSOAPBody(); I hav

  • Does Remote Desktop Services Gateway Support RSA SecurID without TMG or ISA?

    We would like to roll out a single server RDS Gateway in our DMZ that can allow users to work from home and access their primary Windows 7 physical box workstation in the office. Instead of purchasing laptops for everyone who only occasionally needs

  • My browser was Google and now it is Yahoo. I don't want yahoo. How do I change it back?

    When I put an address in the bar above I get a Yahoo window and I don't want a Yahoo window. I want Google.