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

Similar Messages

  • 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]

  • Boucle cadencé, normale et utilisation des cores.

    Bonjour,
    J'ai plusieurs questions sur l'utilisation de boucles cadencées et notament sur le partage de core :
    J'ai réalisé un VI type producteur/consommateur. Dans ce VI j'ai 4 boucles consommatrices (4 files d'attentes) qui gèrent un appareil chacune. J'ai un Ordinateur 4 cores. Je souhaite donc attribuer un core pour chacune des boucles.
    1) Ce que je veux savoir est par quel core sera gérée la boucle productrice qui elle, n'est pas cadencée ?
    2) Est-il recommandé de cadencer la boucle productrice pour justement contrôler le problème et cibler un coeur ?
    Dans le modèle producteur/consommateur proposé par labview, la destruction de pile intervient lorsque l'on sort de la boucle évènement dite productrice. Malheureusement il arrive que cette destruction intervienne avant l'éxécution du dernier évènement des boucles consomatrices (exemple : la déconnection des appareils), surtout si les boucles consomatrices sont cadensées.
    3) Dans ce cas, avez vous une solution optimale pour gérer ce problème ? (ou l'utilisation de séquence est la seule solution ?)
    En vous remerciant d'avance.
    Cordialement, Harti.
    Résolu !
    Accéder à la solution.

    Bonjour,
    1) si tu laisse l'option de gestion du coeur par défaut à ta boucle cadencée productrice, ou que tu utilises une simple boucle While, tu laisses l'OS gérer le coeur sur lequel cette boucle va s'exécuter, tu ne peux pas prédire à l'avance.
    2) tout dépend ce qui est produit ds ta boucle productrice, mais personnellement j'aurais plus tendance à cadencr la boucle productrice et pas les consommatrices! Tes consommatrices doivent être cadencées par tes files d'attente (soit par l'arrivée d'un nouvel élément, soit par un timeout)
    3) Ce que tu peux faire, c'est utiliser la fonction "obtenir l'état d'une file d'attente", et attendre que toutes tes files soient vides avant d'appeler la fonction de destruction.
    Ai-je répondu à toutes tes interrogations?
    Cordialement,
    Olivier L. | Certified LabVIEW Developer

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

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

  • 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

  • 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

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

  • Installé pages 5.2 il ne reconnaît plus les liens. Tous mes fichiers utilisent des liens... comment faire?

    Installé pages 5.
    Il ne reconnait plus les liens, or tous mes fichiers utilisent des liens dans le fichier même et des liens vers d'autres fichiers pages.
    Comment faire?

    Bonjour,
    Peut-être pourriez-vous tout désisntaller de façon clean avec l'utilitaire Cleaner Tools : http://helpx.adobe.com/fr/creative-suite/kb/cs5-cleaner-tool-installation-problems.html
    Réinstaller suivant la configuration souhaitée.
    Creative Cloud, n'a pas besoin d'être installé spécifiquement sur le bureau.

  • Utiliser des servo-moteurs TDC001 en mode simulation

    Bonjour,
    Dans le cadre de mon projet, j'ai réalisé une application LV permettant de piloter trois moteurs Thorlabs
    Etant donné que je ne les ai plus sous la main, la solution qui me reste pour réaliser des essais de mon VI et travailler chez moi est d'utiliser le mode simulation des servo-moteurs. J'ai déjà jeté un oeil dans la documentation du servo-moteur TDC001, mais c'est vaguement expliqué à vrai dire...
    Comment dois-je procéder ?
    On est bien d'accord qu'avec le mode simulation, on peut visualiser le fonctionnement des servo-moteurs dans l'application APT User, c'est bien ça ?
    Je vous remercie.
    Cordialement,
    Che57

    Bonjour,
    Pouvez vous nous fournir cette documentation en question?
    Vous avez posté pour un sujet similaire, un ingénieur de Thorlabs a également répondu.
    Parallèlement, je vous conseille de vous mettre en relation avec le support technique de Thorlabs pour maximiser vos chances d'obtenir une réponse rapide et adaptée à votre question.
    Cordialement,
    Celine
    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 LabVIEW
    Du 15 octobre au 7 novembre : Strasbourg - Lyon - Lille - Toulouse - Mar...

  • Comment utiliser des fonctions d'une DLL via le menu "TOOLS"

    Bonjour,
    j'utilise un module fieldpoint dans TestStand, pour lequel j'ai créé une DLL.En dépannage (donc sequence "PAUSED"),je souhaite utiliser mes commandes en chargeant un panneau UIR. Cela fonctionne bien tant le test n'est pas lancé. Mais quand il est lancé, le panneau n'est plus dans le même thread et j'ai une erreur "unknown source position" pour une fonction de la dll. (ça ne concerne pas le panneau,mais une fonction déclenchée par un contrôle).
    MultiThreading ??
    Merci pour toute aide
    JMC
    JMCe

    Carlos,
    d'abord merci de me répondre en français, c'est trés sympathique.
    Je vais essayer d'être clair :
    J'utilise deux modules FieldPoint RS232, un pour des mesures, l'autre pour des relais. L'utilisation du FieldPoint avec CVI et TestStand est délicate car il n'y a qu'un serveur pour les deux, donc :
    Une dll de commande des relais appelle des fonctions dans une autre dll commune aux deux FieldPoint qui elle même appelle les fonctions de base de la librairie CVI. L'initialisation des FieldPoints se fait dans le SequenceFileLoad de la sequence principale.(c'est là qu'on retrouve tous les "Tags" à créer).
    La fonction qui charge le panneau de commande se trouve dans le même fichier dll que l'initialisation du FieldPoint.
    -> je lance cet
    te fonction du menu Tools sans sequence running : ça marche (le thread est le même)
    -> je lance cette fonction dans un step de type action, je lance la sequence : ça marche !! (le thread est le même)
    -> je mets la sequence en "Pause",je lance à partir du menu tools : ça plante (Fatal error:unknown source position le thread est différent).
    La fonction qui plante est une des fonction de la librairie CVI "FP_Read".
    J'ai essayé de charger le panneau dans l'initialisation mais c'est pareil.
    Est-ce plus clair ?
    Merci
    JMC
    JMCe

  • Utiliser des '.' à la place des ','

    mon problème est simple:
    j'ai une tableau de nombres à virgule du style:
    1,2 2,1
    4,5 5,6
    je souhaite le sauvegarder au format:
    1.2 2.1
    4.5 5.6
    j'aimerai donc savoir s'il existe une option ou un outil permettant de
    remplacer rapidement les "," d'un tableau de double par des "."
    ou alors une option ou un outil permettant de choisir ce format pour
    une sauvegarde.
    merci
    PS: si vous pouviez être précis dans votre réponse cela serai d'autant
    mieux.

    Bonjour;
    Ci-joint un exemple vous permettant de remplacer un caractère de votre tableau.
    Concernant les formats de sauvegarde, LabVIEW permet en effet de sauvegarder ses données dans plusieurs formats :
    * ".lvm" : des fichiers propres à LabVIEW
    * ".txt"
    * Des documents Windows comme Excel ou Word.
    Utilisez pour cela les ActiveX dans la palette des fonctions.
    Sanaa TAZI
    Application Engineer
    National Instruments
    Attachments:
    Exemple.vi ‏37 KB

  • Probleme lors de l'utilisation des filtres photoshop

    Bonjour, lorsque je tente d'utiliser une fonction comme la galerie des filtres, j'ai le message d'erreur suivant qui apparaît: " impossible d'allouer d'autres juxtapositions virtuelles". Comment puis je faire pour résoudre ce souci? Merci d'avance

    WIthout proper system information and other details nobody can know what is going on.
    Mylenium

  • Mulitple users on a share file, how do u notify that file is already in use?

    Just like Word or Excel, I have  pdf share file that multiple people use, how do I lock it and provide only one user at a time to edit the document. In Word or Excel it says " do you want a read only copy".

    Generally speaking if a file is opened, the OS should be marking the file as in use. Any other person that tries to open the file should get that message and at best be allowed to open a copy. Where is the file that is being opened located? What is this a network share? What OS is running the network resource? How are the users getting to the resource and opening it?
    In its origin a PDF was essentiall digital stoneware and there may have not been a need for Acrobat to trigger a system lock on the file as being used. Certainly, since today PDFs are edited, filled out, commented upon, etc Reader and Acrobat should be triggering a system locak on the file.
    On the other end of the spectrum, MS Office applications frequently do not release a file in use lock for documents that have been closed until the application closes down. 

Maybe you are looking for

  • HELP! iTunes won't load, gives Windows - No Disk error

    This is so aggravating! Last week I purchased $100 worth of audio books to put on my iPod for a vacation. Immediately iTunes wanted me to upgrade to 5.0, so I did. That's where the nightmare began. With both versions, when I click on the iTunes icon

  • Macbook just working...any ideas?

    My Macbook just stopped working. In the evening it was working, but when I woke up the next morning, it was not working. I changed power cords, but it was not the charge. Do you have any ideas what else it could be? I purchased it in 2008. Thanks.

  • Wrong Font Sizes

    If i write a Text in Photoshop CS 6 on a Mac the size of the Font is always wrong. For example: I write a Text in 6 Point which is bigger than a Text in 12 pt. I allready uninstall Photoshop, but i have still this problem. When i transform a textbloc

  • Hyperion Planning not star the service

    Hello, We have a trouble with Hyperion Planning, the service into the server was installed is not found, it was after reboot the server (button), does anybody could help me? Thank's.

  • How can I split a 16-bit image?

    I have a driver for a HDRC camera and a program for the production of Avi files. The image from the camera is 10bit, but Avi works only for 8-bit grayscale. I want to split a 16-bit image into two 8-bit images, so I don't lose data. Who can help me?