Discussions au sujet de NI LabVIEW

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

fille d'attente saturée

Bonjour,

voila je reviens vers vous, parce que je suis bloqué sur mon petit programme qui fait de l' acquisition de vidéos (25 image/s pour 1024/1280).

Mes problèmes sont:

- Juste pour l'acquisition, le processeur occupé à 20 %

- Dès que j'active l'enregistrement des ces vidéos, le processeur occupé à 50% et la mémoire monte rapide, ma fille d'attente n'arrive pas à suivre du tout.  

 

Merci d'avance pour votre retour

Enregistrement.jpgAcquisition.jpg

Tout télécharger
0 Compliments
Message 1 sur 17
2 739 Visites

Your idea of attaching megabytes of gigantic photographs (all with the same name), tells me that you might not know how to do things in the most efficient way. We cannot debug images, but it seems obvious that you like value property nodes and rewriting the same properties in  a fast loop, even if nothing changes. Your outer loop can be deleted without any change in functionality. Why is it there?

 

How many CPU cores do you have? It is possible that you have 4 cores and saturating one (25%) or two (50%), depending on state?

 

If you want help, attach the VIs. The memory increase is probably due to the fact that the consumer loop cannot keep up, so the queue grows forever. Hard to tell. What do the subVIs do?

0 Compliments
Message 2 sur 17
2 708 Visites

Bonjour merci beaucoup d'avoir répondu,

voici les Vis et les paramètres de mon ordinateur.

 

thank you 

0 Compliments
Message 3 sur 17
2 677 Visites

Bonjour galbich,

Avec les VI's c'est mieux, oui. Mais tu n'as répondu à aucune question de Altenbach ni pris en compte ses remarques.

 

Mettre à jour ou lire les indicateurs et contrôles de la face-avant utilise beaucoup de ressources. Tu devrais utiliser des événements pour détecter un changement de zoom, de posi Logo et éventuellement de Enregistrement.

A quoi sert "Maus" ?

La lecture de la file d'attente ne sera jamais en timeout car par défaut à -1, soit l'infini.

Je n'ai jamais travaillé avec des vidéos mais je sais que c'est une plaie de trouver les bons VI's IMAQ pour convertir les images et faire ce que l'on veut. Mais es-tu sûr que tu ne peux pas faire autrement que convertir 2D 32bits -> image -> image data -> pixmap -> image ?

 

Bon courage

0 Compliments
Message 4 sur 17
2 526 Visites

Bonjour Yddet,

 

merci d'avoir jouter un coup d’œil à mon problème, pour faire simple voilà un détail sur mon programme. au début je voulu faire de l'acquisition et de l'enregistrement de vidéos dans la même boucle (voir les Vis joints) mais ça n'a pas bien fonctionné (je perdais des images et près du 50% du processeur occupé). donc j'ai pensais à utiliser une fille d'attente mais sans succès. je ne sais pas comment je vais régler ce problème et en plus je suis nul en anglais.   

 

merci d'avance 

0 Compliments
Message 5 sur 17
2 506 Visites

Bonjour Galbich,

 

La file d'attente est un bon moyen de faire ce que tu veux car ça permet d'acquérir une nouvelle image en même temps qu'enregistrer la précédente.

Veux-tu une traduction de ce qu'Altenbach a écrit ?

 

Dans ta boucle productrice je ne vois pas de temporisation. Est-ce que les nœuds de propriété associés à la camera attendent qu'il y ait une image ou bien si il n'y a pas d'image un tableau vide est retourné ?

Si cette boucle n'est pas temporisée elle va essayer de tourner le plus vite possible et monopoliser du temps processeur.

 

Yddet

0 Compliments
Message 6 sur 17
2 493 Visites

Bonjour Yddet,

merci pour la traduction, pour la temporisation de la boucle productrice aucune idée, je ne sais pas comment elle est cadencée. enfaite j'ai récupéré le programme d'acquisition sur le site du fournisseur de la caméra, moi juste j'ai rajouté  le vi d'enregistrement vidéo. 

je ne sais pas où se trouve la temporisation et comment la faire parce que tout est en anglais sur ce programme. franchement je suis bloqué dessus.

 

merci bcp    

0 Compliments
Message 7 sur 17
2 484 Visites

Je n'avais pas fait la traduction encore. La voici ci dessous

 

 


@Altenbach wrote:

We cannot debug images, but it seems obvious that you like value property nodes and rewriting the same properties in  a fast loop, even if nothing changes. Your outer loop can be deleted without any change in functionality. Why is it there?

Nous ne pouvons pas debugger des images mais il semble évident que vous aimez les nœuds de propriété de valeur et réécrire les mêmes propriétés dans une boucle de manière très rapide, même si rien ne change.

Votre boucle externe peut être supprimée sans que cela ne change les fonctionnalités. Pourquoi est-elle là ? 

 

How many CPU cores do you have? It is possible that you have 4 cores and saturating one (25%) or two (50%), depending on state?

Combien de cœurs a votre processeur ? Est-il possible que vous ayez 4 cœurs et qu'un (25%) ou deux (50%) soient saturés en fonction de l'état (NDLT acquisition ou acquisition+enregistrement)

 

If you want help, attach the VIs. The memory increase is probably due to the fact that the consumer loop cannot keep up, so the queue grows forever. Hard to tell. What do the subVIs do?

Si vous voulez de l'aide, joignez les VIs. L'augmentation de l'utilisation de la mémoire est probablement due à la boucle consommatrice qui n'arrive pas à suivre, donc la file d'attente grandit infiniment. Dur à dire. Que font les sous-VIs ?


Je n'ai pas la documentation les nœuds de propriété utilisés (Acquisition, Camera, Memory), c'est à toi de regarder comment les utiliser. Habituellement les nœuds de propriété retournent un résultat sans attendre. Dans ton cas, ça voudrait dire que la boucle productrice recommence les étapes d'acquisition et de mise en file d'attente aussi vite que le processeur le permet (= forte charge sur le processeur). Je soupçonne que le résultat est l'acquisition de plus de 25 images/s. 

Une manière simple de vérifier est de lancer l'acquisition et l'enregistrement pendant quelques secondes et regarder combien d'itérations la boucle consommatrice à besoin pour traiter toutes les images. Exemple : avec une acquisition pendant 2s, la boucle consommatrice devrait faire 2*25= 50 itérations.

Si le nombre d'itération est supérieur, il faudra certainement cadencer la boucle productrice.

 

Yddet

0 Compliments
Message 8 sur 17
2 479 Visites

Bonjour Yddet

merci encore pour ces informations.

voici les réponses aux questions de Altenbach:

Votre boucle externe peut être supprimée sans que cela ne change les fonctionnalités. Pourquoi est-elle là ?

Cette boucle sert à incrémenter les n° de test pour la suite du programme (ajout de trigger)

Combien de cœurs a votre processeur ? Est-il possible que vous ayez 4 cœurs et qu'un (25%) ou deux (50%) soient saturés en fonction de l'état (NDLT acquisition ou acquisition+enregistrement)

 les paramètres de mon PC sont: Intel(R) Xeon(R) W-2123 CPU 36 GHz  16Go  W10 64bit.

Si vous voulez de l'aide, joignez les VIs. L'augmentation de l'utilisation de la mémoire est probablement due à la boucle consommatrice qui n'arrive pas à suivre, donc la file d'attente grandit infiniment. Dur à dire. Que font les sous-VIs ?

les VIs sont en pièce jointes

 

La boucle productrice tourne plus vite que possible elle n'est pas du tout cadencer. je peux cadencée ma caméra pour le nombre d'image par seconde mais pour cadencer les nœuds de propriétés et de méthodes je ne vois pas comment.

je n'ai pas de doc sur ces nœuds, j'ai juste les indication suivantes (pièces joints). je pense tout est dans cette DLL :uEyeDotNet.dll 

 

merci d'avance bonne journée  

 

 

0 Compliments
Message 9 sur 17
2 468 Visites

Pour cadencer la boucle productrice, tu peux commencer par utiliser la fonction Attendre (ms) ou Attendre un multiple de ms dans la palette des Temps.

La boucle consommatrice n'a pas besoin de cadencement puisqu'elle attend jusqu'à ce qu'un élément soit dans la file d'attente.

 

Sur le diagramme, est-ce la fenêtre flottante d'aide est ouverte ? ctrl+H. C'est toujours utile.

Yddet

0 Compliments
Message 10 sur 17
2 464 Visites