Jump to content

Francois Aujard

Members
  • Posts

    57
  • Joined

  • Last visited

Everything posted by Francois Aujard

  1. Hello, I have a GiGe camera Basler. I have created a ring acquisition like the exemple IMAQdx with circular buffer. I load an image every 15ms and I add it in a Vi type FGV (cf. Stock Images.png). In the FGV vi, I create 2 tables. One is for the timestamps and the seconds is for the images. I use the timestamp table juste for keep the last 15s. If my test crash I save the images table. If I use the Vi to look at the timestamp of my image table, it is not the same timestamp as when I added the image in the table (cf. Save Images.png). Why? The propreties IMAQdxReceiveTimestampHigh and IMAQdxReceiveTimestampLow are not attached to the images? I hope you understand my English 🙂 (thank you deepl) François A.
  2. Hello @Rolf Kalbermatter, Just to be sure, that I understand well your previous post. The first case in the attached picture automattillcy close the child reference (CameraInfo ; Parameters and StreamGrabber) or I need to close all childs references before close the parent reference?
  3. Je fermerais toutes les rĂ©fĂ©rences comme vous me l'avez conseillĂ©. Je vais Ă©galement surveiller la mĂ©moire du PC lorsque je manipulerais les rĂ©fĂ©rences ActiveX et .NET. Je ferais tourner mon Vi 1000000 de fois et si la mĂ©moire Windows augmente, c'est que j'ai pas tout bien fermĂ© 😉. Concernant les FGV suis d'accord avec vous. J'utilise aussi les file d'attente, par contre je n'utilise pas les notificateurs. J'utilise les Ă©vĂšnements dynamiques qui font pour moi la mĂȘme chose mais en mieux je trouve. Merci beaucoup @Rolf Kalbermatter pour toutes ces informations. Merci Ă©galement pour le temps que vous avez pris pour me rĂ©pondre. J'aurais encore plein de questions, mais qui n'auraient rien Ă  voir avec les fermetures de rĂ©fĂ©rence.
  4. the underlying object may however use tons of memory! Qu'est ce que vous voulez dire? La mĂ©moire utilisĂ©e par l'appel d'une API n'est pas supĂ©rieur Ă  la mĂ©moire utilisĂ©e par le logiciel propriĂ©taire de l'API? Ce que je veux dire, par exemple : si j'ouvre SolidWorks, ou que j'ouvre Solidworks via Laview par appel d'API. La mĂ©moire utilisĂ©e sera la mĂȘme? Evidement il y aura une partie en plus pour Labview dans le 2eme cas, mais la quantitĂ© de mĂ©moire utilisĂ©e pour SolidWorks c'est la mĂȘme non? Yes, aside for real UI programming I consider use of locals and globals a real sin! Ah oui carrĂ©ment ! Vous n'utilisez jamais de variables globale ou local ? Vous faites que des FGV? Merci pour vos rĂ©ponses a mes questions 🙂
  5. There are other memory leaks actually in your code. First you assign the instance refnum for the originally opened Camera object to the NET Camera local control then you Open a new reference to a new camera object and assign it to the same local control, losing the original refnum object, so you can never again close it yourself (LabVIEW eventually will when your code hierarchy in which you executed the Constructor goes idle, but that is typically only when you finish your program. Generally using locals (or even worse globals, shudder) to store refnums is a very bad idea. It makes proper life time control of objects rather hard and error prone. En fait il y a deux contrĂŽles diffĂ©rents "Camera" et "ICamera". Ils se ressemblent mais pointent sur 2 variables locales diffĂ©rentes. Les variables locales (tout comme les globales) sont quand mĂȘme trĂšs pratiques, et pour ce genre d'opĂ©ration cela ne prend quasi rien de mĂ©moire. Sauf erreur de ma part, un rĂ©fĂ©rence Ă  un activeX n'est qu'un pointeur? J'Ă©vite ce genre de variable lorsque je dois manipuler des gros tableaux de donnĂ©es. A ce moment la je prĂ©fĂšres utiliser des FGV. Ici c'est un code d'essai pour prendre le contrĂŽle d'une camĂ©ra GigE mais cela ne marche pas comme je le veux. Que ce soit en .Net ou une Dll. Il y a des class que je ne peux pas avoir, je ne sais pour quelle raison... Il y a aussi des choses que je ne comprend pas bien en regardant les exemple en C# ou C++... C'est trĂšs intĂ©ressant, mais le temps passe et si j'y passe plus de temps cela ne sera pas rentable pour l'entreprise (dommage). Je vais commander le module "Vision Acquisition Sofware" pour 575€ cela ne vaux pas le coupe de s'embĂȘter....
  6. Merci @Antoine Chalons et @Rolf Kalbermatter pour vos rĂ©ponses rapide 🙏. J'utilise la version de Labview 2021, et je ne savais pas que l'on pouvait renter un tableau sur un "Close rĂ©fĂ©rence". Merci pour l'info 😄! Je suis trĂšs autodidacte sur Labview, avec tout ce qui va avec le bon et le moins bon... J'ai commencĂ© sur la version 5.1 et je dois dire qu'il y a eu quelques Ă©volutions entre la version 5.1 et la version 2021. J'ai une autre question sur les ActivesX ou .NET. Doit-on fermer les rĂ©fĂ©rences que l'on utilise pas mais qui doivent ĂȘtre ouvertes quand mĂȘme je suppose. Si je suis le conseil de @Rolf Kalbermatter il vaut mieux les fermer dans le doute. Il existe un moyen pour voir si on ferme bien tout ce qui doit-ĂȘtre fermĂ©, pour Ă©viter les fuite mĂ©moire? Cordialement
  7. Bonjour je suis nouveau sur ce site, Je reprenais le code d'un collÚgue qui me met le doute sur les fermetures de références. C'était déjà pas toujours trÚs clair pour moi mais la c'est la grosse interrogation. Sur l'image jointe : - Sur la partie supérieure les références des clusters, et des clusters formaté en slide (strict), sont fermés a la fin du Vi. Cela sert a quelque chose cela? Pour moi c'est inutile. - Sur la partie inférieure, c'est un appel ActiveX de Solidworks. La j'ai un doute, avant j'aurais fait comme cela, mais maintenant je me demande si c'est vraiment utile de fermer toutes les références qui découlent de la référence ouverte au démarrage (ISldWorks). Juste la fermeture de la référence ouverte au démarrage suffit, non? Cela sert a quelque chose de fermer les références intermédiaires? Merci
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.