Priorité dans une file d'attente

bonjour
je cherche un moyen afin de définir une priorité dans une file d'attente.
j'ai une boucle qui envoie des éléments dans une file d'attente et deux autres qui les traitent en parallèle, mon soucis est de pouvoir décider dans quel boucle de traitement est envoyé mon élément.
je joint un exemple pour se faire une meilleur idée !
merci de votre aide
Il a LabVIEW, il a tout compris !
Pièces jointes :
Sans titre 1.vi ‏15 KB

Salut,
Une idée, au lieu de transmettre juste une information, est de transmettre en plus un destinataire sous la forme d'un énuméré.
La file d'attente tranporte donc des clusters (association d'éléments) contenant un énuméré de destination et une chaîne de caractère correspondant aux données.
Dans tes boucles consommatrices, lis l'élément dans la file d'attente (sans le supprimer), et si la boucle doit le traiter, lit le en le supprimant.
Ca donne un code dans le genre.
A+
Edit: VI en PJ, car il semble qu'il y ai un bug (au moins d'affichage dans le png au dessus au niveau du type d'éléments à câbler lors de la création de la file d'attente)
Mathieu Steiner, Test System Engineer, Safran Engineering
CLD, ISTQB
Pièces jointes :
Sans titre 1.vi ‏20 KB

Similar Messages

  • Supprimer une file d'attente d'évènement statique

    Bonjour,
    Je suis en train de réaliser une application pour un banc de test sous labview.
    Dans le cadre de ce programme j'ai utilisé une structure évènement pour gérer les différentes actions réalisables sur l'IHM.
    Voila mon problème :
    Certains de mes boutons vont activer des évènements longs à traiter, durant tout ce temps de traitement labview vérouille la face avant mais stock tous les évènements dans un file d'attente et les traite une fois que l'évènement en cour est terminé. Cela me pose problème car j'ai peur qu'un utilisateur ne sachant pas qu'un évènement est en cours de traitement puisse appuyer sur plusieurs boutons, ne comprenant pa pourquoi l'interface est vérouillée, et qu'au moment du traitement de tout ces évènements cela ne plante mon programme.
    Je me demandais donc si il était possible de supprimer la file d'attente d'évènement statique d'une structure évènement pour éviter ce problème. Ou peut -être existe t'il d'autres solution (un vérouillage plus éfficace de la face avant ...) ??
    Voila voila j'espère que j'ai été assez clair, n'hésitez pas si vous avez des questions et merci d'avance pour votre aide, je suis vraiment bloqué là ....
    Résolu !
    Accéder à la solution.

    1)
    sur un Controle ... tu as le noeud de propriété "disabled".
    Tu peux donc à souhait rendre inactif un Controle du FP (un, des ou tous)
    inactivation à l'entrée du code .... et réactivation du ou des controles en sortie de code.
    2)
    oui, la fonction "flush event queue" permet aussi de "flusher" les event static.
    (il faut mettre une de ses entrées à "true" (voir l'aide sur cette fonction)
    le soucis est que "flush event queue" n'est disponible que pour LV 2013 et  supérieure,
    et donc que ton code sera impossible à convertir vers une version inférieure à 2013.

  • Connexion CAN lente à la reception de données - File d'attente

    Bonjour,
    J'ai un problème dans la reception CAN. Je travail avec un IXXAT et je communique (j'envoie et reçois des trames).
    MAIS, il y a une création d'une file d'attente des données, c'est à dire, qu'au demarrarge de mon exe, les données affichées sont directes...
    Puis plus le temps s'écoule (15, 30, 60...secondes), les donnés se rafraichissent de moins en moins rapidement...
    Au bout d'1 minute de connexion, les datas ont pret de 5 sec de retard et découlent comme se elles étaient bloquées dans une file d'attente ...
    J'ai vérifié les param FIFO, ils sont à 1... donc normalement, ils n'ont pas d'influence sur mon programme.
    Y a t'il un autre paramètre a modifier afin de désactiver cette fonction ?
    Merci d'avance !

    Bonjour Eric,
    En fait, je réalise ma comm en 3 phases :
    -> Première séquence, j'ouvre ma comm (VI Config CAN)
    -> Deuxieme séquence, je lis et j'écris (VI Lecture Ecriture), et simultanément je éxécute les différentes actions avec mon programme global (piloter un DAQ générateur de signaux via un IHM)
    -> Troisième séquence, je ferme la comm (je n'ai pas joint le VI, c'est uniquement Close) en mm temps que la fermeture de mon programme.
    J'ai regardé la fonction Prod/Consommateur, j'ai tenté de la mettre en place, mais je n'ai pas reussi a retrouver ma lecture dynamique des trames CAN... mais peut être est-ce car je n'ai pas bien compris l'action de cette fonction? Comment la fonctionnalité file d'attente peut justement supprimer ma file d'attente que je ne veux plus avoir ?
    En ce qui concerne le programme "exemple", il fonctionne très bien. J'en conclu que c'est la réalisation de l'ensemble de ma boucle qui ralentit la comm et donc me fait avoir du retard?... J'ai tenté de mettre les 3 séquences dans ma boucle de réalisation générale du programme : je n'ai plus ce phénomène de retard, mais ma comm mets 1 à 2 sec à se rafraichir (je ferme et ré-ouvre une nouvelle connexion à chaque tour de boucle...) et ralentit enormément le programme global...
    Pièces jointes :
    Lecture ecriture.vi ‏153 KB
    ConfigCAN.vi ‏34 KB

  • File d'attente

    Bonjour, je veux enregistrer des mesures dans un fichier excel j'ai reussi a le faire mais je veux que la periode d'enregistrement soit plus petite, je voulais savoir comment utiliser une file d'attente pour stocker les mesures avant de les enregistrer car l'enregistrement au meme temps que l'aquisition prend beaucoup du temps
    pouvez vous m'aider svp  
    Résolu !
    Accéder à la solution.

    je ne sais pas comment les récupérer
    Quand tu actionnes l'arrêt de ton VI, cela ne doit pas être une action réelle, mais "une demande".
    Demande d'arrêt qui sera validée "si et seulement si" la boucle consommatrice a terminé de vider la file d'attente, et donc terminé ses enregistrements.
    Tu envoies ta demande d'arrêt à la boucle productrice .... celle-si stoppe .... en envoyant elle-même une demande d'arrêt à la boucle consommatrice.
    La boucle consommatrice reçoit la demande d'arrêt et (par une logique) valide uniquement lorsque la file est vide.
    Pour transmettre ta "demande" d'arrêt à la boucle consommatrice ... une variable locale, un Notifier, une FGV
    ou tout simplement (si tu connais le temps maximum entre 2 mesures) ... via le "time out" de la fonction "Dequeue Element" (dans la boucle consommatrice)
    Tu peux également "jouer" avec "Get Queue Status / nombre d'élements dans la queue.
    Il y a certainement une bonne dizaine de façons différentes de faire ça.
    Sans code sous les yeux, difficile de donner une solution concrète.
    [edit]
    je n'avais pas encore lu le message d'Eric quand j'ai posté. (bonjour Eric)
    [/edit]

  • File d'attente et Structures condition

    Bonjour,
    Je fais une acquistion de température et pour traiter mes toutes mes données, j'utilise la fonction file d'attente.
    Pour traiter ces données je réalise différents tests et je souhaiterai savoir si cela est possible, sous certaine condition, de ne pas réaliser tous les tests à chaque itération?
    Cdt

    Ci-joint, voici le VI que j'implémente.
    Pour l'état "Palier", il y a plusieurs tests qui engendrent d'autres tests..
    Une fois que la T_Réelle = T_Consigne, je souhaiterai qu'à la prochaine donnée de température traitée (la prichaine donnée dans la file d'attente), les tests précédents ne soient plus réalisés jusqu'à une certaine condition.
    Une fois la condition accomplie, répéter toutes les conditions.
    Cdt
    Pièces jointes :
    Alarme_Alerte.vi ‏14 KB

  • Utilisations des Notifiers et files d'attentes

    Bonjour,
    Je réalise un programme qui demande 3 boucles while. Ma première boucle permet d'acquérir un signal vidéo à grande vitesse. Je dois transférer ce signal vidéo dans 2 autres boucles : 
    - 1 pour l'enregistrement (toutes les images)
    - 1 pour un traitement d'image qui prend du temps (plus lent que la boucle d'acquisition) ---->on veut 10 traitements /s  (dernière image acquise)
    Je pensais utiliser un notifiers pour la boucle de traitement et une file d'attente pour l'enregistrement.
    Est ce qu'il est possible d'utiliser les notifiers ET les files d'attentes ?
    Cordialement

    Bonjour,
    tout d'abord ce forum est la section anglophone du forum NI. Il aurait été plus judicieux de poster dans la section francophone pour poster en français...
    Pour répondre à la question finale, il est effectivement possible d'utiliser des notifiers et des FIFO (files d'attentes)
    Cordialement,
    Rodéric L
    Certified LabVIEW Architect

  • Problème d'export depuis file d'attente de PPro vers AME

    Bonjour,
    Depuis quelques temps j'ai un souci avec PPro et AME. Quand je veux réaliser un export depuis la file d'attente de PPro vers AME, AME s'ouvre, mais PPro plante et ne répond plus!
    J'ai tenté de contacter l'assistance qui m'a demandé de tenter de créer un compte local sous windows 8.1 64b, et de voir si le problème perdurais.
    Apparemment non. Mais auparavant je n'avais aucun souci!
    D'autre part, à chaque ouverture d'une sessions PPro, mon espace de travail est complétement désorganisé, je suis obligé de le réinitialiser à chaque fois.
    Quelqu'un aurait une ou plusieurs solutions à ces problèmes récemment apparus?

    Tout d'abords, merci pour vos réponses, ça fait plaisir
    Les VIs qui sont appelés par référence (ici D-MGR Journaux.vi) doivent être ajouté manuellement dans le Builder. Pour faire ça, dans "Sources Files" de ton Build, tu dois les mettre dans la liste "Allways included"
    C'était déjà fait !
    ... Et juste un truc, le chemin change entre le mode développement et le mode exécutable. C'est peut-être ça le problème.
    Essaie d'appeler les VIs avec récupération du chemin dynamique comme dans l'image annexe.
    Comme ceci, ça marche en local très bien, mais pas en exécutable (dans le sens ou la face-avant de s'ouvre pas...)
    Donc le problème ne vient pas du "lancement" mais plutôt de l'affichage. Parce que je pense que le vi tourne mais sans la face-avant affiché.
    Dans le vi appelé (D-MGR-Journaux.vi) voici par quoi commence le code, pour forcer l'affichage de la face avant. (Sur les autres vis ça semble fonctionner).
    J'ai même tenté le simple noeud de propriété "État" de la face avant que le met à Standard. Mais même en éxecutant ça ne fonctionne pas, face avant toujours fermée.
    peut-être as-tu utilisé la commande "create sub-vi"
    Dans ce cas, les terminaux se placent à "la distance" qu'ils avaient lors de la sélection.
    Avec "create sub-vi" ... point de vue code, aucun soucis ... mais le résultat graphique n'est pas toujours parfait (il faut le re-travailler)
    Je passe par le menu "Edition > Créer un extrait de VI à partir de la sélection". Même sans sélectionner les fils d'erreur en entrée et sortie, il les reprends et les places là ou y'a une autre fonction ou un tunnel si c'est dans une structure (boucle ou condition). ça serait bien qu'il fasse un "nettoyage" du code sélectionner et des commandes/indicateurs ajouter, avec un prévisualisation. Car des fois, c'est un peu n'importe quoi ^^.

  • File d'attente Écriture TCP (Via STM) :

    Bonjour,
    Je viens vers vous pour une petite question à propos des deux fonctions ci-dessous entre les sous-vis de file d'attente et de communication TCP :
    (c'est pas très droit, je pensais que l'extrait de vi allait tout mettre en ordre tout seul comme un grand ^^)
    Dans l'exemple des files d'attente, le sous-vi foruni pour la récupération des données de la file d'attente est toujours suivit par la fonction "Variant en données" car les données sont stockés sous forme de variant dans ce genre de file d'attente.
    Dans l'exemple de communication TCP (palette STM), le sous-vi d'envoie de données est toujours précédé de la fonction "Aplatir en chaine".
    Sachant que les données du serveurs seront toujours des chaines, c'est utile d'utiliser les deux fonctions du milieu ?
    Ne peut-on pas tout simplement connecter le variant à "aplatir en chaine" ?
    Ou au contraire, connecter la chaine en sortie de "Variant en données" au sous-vi tcp ?
    A moins qu'une chaine applati en chaine change quelque chose... mhh
    Résolu !
    Accéder à la solution.

    C'est bon, j'ai trouvé la réponse moi-même...
    Les deux fonctions sont nécessaires pour le bon fonctionnement du sous-vi d'écriture TCP.

  • Mettre une photo dans une forme illustrator

    Bonsoir,
    J'ai un problème!
    J'ai fait une forme sur Illustrator: des anneaux olympiques en gros , avec un peu d'extrusion en 3D pour que ça fasse joli! jusque là pas de pbs
    Mon but est de mettre des photos dans les anneaux et d'écrire dessus.. pour cela j'ai mis ma forme sur photoshop mais à partir de là impossible .. je ne sais pas comment faire!
    J'ai essayé de tout faire sur photoshop mais la forme rend vraiment pas terrible par rapport à ce que j'ai fait sur Illustrator
    Quelqu'un pourrait-il me guider? je ne sais même pas s'il faut que je l'insère en tant que smart object, pixels, path ou shape layer au début..
    Merci beaucoup!!!
    je mets mon fichier ai en pièce jointe si vous voulez vous faire une idée
    Bonne soirée
    doud05

    Bonjour!
    Si vous voulez insérer des photos dans les parties intérieures blanches,
    vous devez utiliser les masques (d'écrêtage dans Illustrator, de fusion dans Pshop).
    Pour cela vous devez dupliquer les formes blanches seulement; ces formes seront utilisées comme masques.
    Comme elles «n'existent pas» vectoriellement parlant, il faut que vous sélectionnez le tout puis,
    menu Objet » Décomposer l'aspect.
    Par la suite, vous pourrez sûrement obtenir les formes indépendantes en utilisant les pathfinders.
    Mais c'est un travail assez long, et je ne garantis pas la réussite, surtout si vous n'êtes pas habiles avec les Pathfinders.
    Par contre dans Pshop c'est simple (le seul hic c'est que les dégradés sont moins visibles).
    Il s'agit de copier-coller votre image illustratror ou de la sauvegarder en .eps et de l'ouvrir dans Pshop en CMJN et non en RVB comme j'ai fait.
    Vos photos devront être en CMJN aussi.
    Ensuite, vous remplissez de noir 100% toute l'illustration dans Illustrator et vous sélectionnez le tout, puis copiez-collez dans une nouvelles couche de pshop.
    Attention, si elle se copie dans un calque, il s'agit de repartir du calque pour copier-coller dans la couche et jeter le calque inutile.
    Par la suite vous faites des copies de la couche, pour isoler sur chaque, les parties blanches que vous voulez utiliser comme masques, en remplissant de noir le reste. Puis inverser pour obtenir un élément noir sur fond blanc.
    Chacune de ces couches serviront de masque.
    J'ai fait un exemple avec le premier masque de votre illustration; je vous indexe deux photos écrans, la première montrant les couches, la deuxième montrant un calque avec masque.
    Il se peut qu'il y ait un léger décalage avec les anneaux en couleur mais en agrandissant beaucoup vous pouvez déplacer légèrement l'image et son masque.
    Bon travail!  ;o-)

  • Lancer un executable dans une fenêtre de mon VI

    Bonjour,
    Je souhaite lancer un executable dans mon VI, comme s'il faisait parti de mon code (pas à l'exterieur)
    Pour simplifier les choses, mon programme fera la liste de tous les executables disponibles dans un repertoire défini puis les proposera dans une boite à onglet
    Ces executables sont des SFP de ressource
    Ainsi je me retrouve avec un applicatif qui contient tous les SFP que j'ai de disponible (je ne pense pas en avoir plus de 10 sur un banc de test)
    Pour la gestion de la boite à onglet j'ai trouvé et ca marche bien
    Il ne me reste plus qu'a lancer les executables dans les différentes pages et là, je ne vois pas comment faire
    je sais que l'on peux lancer des executables à côté, mais cela ne m'interesse pas, je les veux dedans
    est-ce faisable ?
    D'avance merci
    Cordialement
    Résolu !
    Accéder à la solution.

    Hello,
    Attention, cette méthode était valable avant, et sur Windows XP (ou antérieur) : 
    - http://digital.ni.com/public.nsf/allkb/8545726A00272EB0862571DA005B896C?OpenDocument
    Pour les raisons citées, désormais on utilise plutôt les bibliothèques empaquetées. Elles sont compilées, donc pas de risque d'avoir de fuite de code :-)
    Un très bon début avec cette architecture :
    - https://decibel.ni.com/content/docs/DOC-19176
    Alternative moins crédible : appeler les exe par la fonction "System Exec", et jouer avec les fonctions Windows (au fond de user32.dll) pour que la fenêtre des exe soit une fenêtre enfant du VI appelant...
    A+
    --Eric
    Eric M. - Application Engineering Specialist
    Certified LabVIEW Architect
    Certified LabWindows™/CVI Developer

  • Arrêter l'éxécutio​n d'un sous-VI dans une machine d'états

    Bonjour à toutes et à tous,
    J'ai réalisé un programme utilisant une machine d'états standard (du même type que dans les exemples). L'activation d'un bouton dans l'étape d'attente dirige vers un état qui lance l'exécution d'un sous-VI. Je souhaite pouvoir stopper l'éxécution de ce sous-VI via la face avant de la machine d'états.
    Le problème et je l'ai bien compris c'est que pendant l'éxécution du sous-VI, je n'ai plus la main dans l'étape d'attente donc je ne peux plus faire d'interaction.
    Quelqu'un peut-il apporter une solution à mon problème svp ?
    Merci.

    Voici le code lançant l'éxécution. Peut-être manque t-il des données à l'ouverture du VI.
    Merci.
    Bien cordialement,
    Pièces jointes :
    code_exe.jpg ‏44 KB

  • Afficher les images d'un repertoire à tour de rôle dans une même fenêtre image

    Bonjour à tous,
    Je voudrais afficher les images d'un repertoire à tour de rôle dans une même fenêtre image. Quelqu'un peut-il m'aider. Merci d'avance.

    Bonjour,
    Je vous joins un VI "clé en main" et je pense que ça répond à votre attente...
    Dans le dossier, les deux photos doivent se placer sur le disque C:\.
    Le VI permet l'affichage de ces photos... On y règle la temporisation et le nombre de photos à afficher.
    Cordialement
    David D.
    Ingénieur d'Applications
    NI France
    Attachments:
    Picture.zip ‏999 KB

  • Lire le contenu d'une cellule dans une feuille Excel

    Bonjour,
    Dans un fichier Excel, j'ai plusieurs feuilles, dans une des feuille (par exemple feuille: Dispersion) j'ai une cellule qui se situe à la colonne 3 et la ligne 5, cette cellule contient une valeur (par exemple 500). Donc depuis un VI, comment je peux lire le contenu de cette cellule pour sortir la valeur 500 ?
    Si je n'ai qu'une feuille je peux utiliser la fonction "Read From Spreadsheet File.vi" pour lire dans un fichier de format txt, mais ici j'ai une fichier Excel avec plusieurs feuilles dedans, comment je peux lire une cellule dans une feuille précise? Merci pour votre éclairage . Bon week end à vous tous.
    Solved!
    Go to Solution.

    Bonjour, Jetez un oeil sur ce lien.
    http://zone.ni.com/devzone/cda/epd/p/id/3409
    CLA 2014
    CCVID 2014

  • 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

  • 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

  • DSC Alarm Setup - what went wrong?

    I have a DSC application reading +- 1100 NI OPC tags into SVE from four different PLC's.  While I do engineering I move the application between two PC's depending on which one is avalable at the time to do engineering.   The Citadel database has the

  • How to view images in iMessage

    Messages (iMessages), on my MacBook Pro, does not display all images/pictures I receive.  Most are jpg files that I must click on to display.  I would like images to display when I open a chat message. Please assist.

  • Adobe drive V3.2 with Documentum

    Hello, I installed Adobe drive V3.2 and linked it with Documentum. I have now a network folder that is what I have in my Documentum repository. When I try to check out the document from this network folder by selecting the menu "Adobe drive 3" and th

  • Differences between attribute and user defined attributes

    1.what is commit block

  • Redirect EP to a different backend environment

    Does any have the documentation to show the steps required to redirect a Java Stacked EP 7.0 system running ESS/MSS where the security is provided on the backend ABAP ECC environment? Is the only thing to really change the JCO configuration? Vincent