le 04-18-2020 06:06 AM
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
04-18-2020 10:51 AM - modifié 04-18-2020 11:11 AM
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?
le 04-18-2020 03:10 PM
Bonjour merci beaucoup d'avoir répondu,
voici les Vis et les paramètres de mon ordinateur.
thank you
le 04-20-2020 10:27 AM
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
le 04-21-2020 03:07 PM
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
le 04-22-2020 03:13 AM
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
le 04-22-2020 08:26 AM
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
le 04-22-2020 09:01 AM
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
le 04-23-2020 04:50 AM
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
le 04-23-2020 05:15 AM
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