LabVIEWForum.de
Liste aller im Speicher befindlichen Bildreferenzen? - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Module (/Forum-LabVIEW-Module)
+---- Forum: LabVIEW Vision (/Forum-LabVIEW-Vision)
+---- Thema: Liste aller im Speicher befindlichen Bildreferenzen? (/Thread-Liste-aller-im-Speicher-befindlichen-Bildreferenzen)

Seiten: 1 2


Liste aller im Speicher befindlichen Bildreferenzen? - dereinzug - 23.12.2011 07:26

Hallo,

gibts ein VI, das mir alle aktuell erstellten Bilder(referenzen) bzw. aller aktuell
im Speicher befindlichen Bilder ausgibt?

Hintergrund: Ich möchte für ein SubVI den Namen eines Hilfsbildes für eine Maske
automatisch vergeben und dabei sicher gehen, dass der Name und damit die Referenz noch nicht vorhanden ist.
Das Bild soll jedesmal wieder aus dem Speicher gelöscht werden.

Plan B: wäre ein Name, dessen Teil Zahlen sind, die ich per Zufallsgenerator erstelle. Ohne es probiert zu haben, bin ich
damit aber noch nicht ganz glücklich.

ciao Tom


RE: Liste aller im Speicher befindlichen Bildreferenzen? - b.p - 23.12.2011 08:00

Morgen,
so Dinge kommen mir bekannt vor. IMAQ und memory management ist suboptimal und ich habe mich dann letztes Jahr mal hingesetzt und meine eigene lib drübergeschrieben. Objektorientiert und alles :-)

Die quick-und-dirty-Lösung lautet: Namen mit timestamp(cycles..)+aufrufender Prozessor/THread (Multicore!) erstellen... und dann entweder am Ende des subVIs löschen oder, schlimmer noch, diese Option beim Dispose wählen, die alle Daten verwirft..
Besser: Selber verwalten..

Soweit ich weiß, kriegt man keine Liste an Referenzen, außer, wenn man sich die Buffer selbst configuriert (und dann hat man die Info eh). Lasse mich da gerne eines besseren belehren, vor allem weil diese Information intern da sein muss (sh Dispose..) und vielleicht kann einer von den Skripting-Wizards da was herzaubern.. Denknach

Gruß,
Birgit


RE: Liste aller im Speicher befindlichen Bildreferenzen? - unicorn - 24.12.2011 01:17

Man könnte auch ein eigenes Create IMAQ Image erstellen, das sich alle Namen aller erstellen Bilder merkt. Dann hätte man die gewünschte Liste zur Verfügung. Man muss natürlich dann in allen Applikationen dieses neu Create-VI benutzen und das IMAQ Dispose Vi müsste ebenfalls durch eine eigene Version ersetzt werden, die die Name der gelöschten Bilder wieder freigibt.


RE: Liste aller im Speicher befindlichen Bildreferenzen? - dereinzug - 28.12.2011 14:38

@b.p
Ich habs jetzt mal mit den Zufallszahlen probiert.
Ich ruf das SubVI mehrmals parallel auf. Von daher kann ich nicht ganz ausschliessen, dass es auch mal genau im gleichen Moment
vom gleichen Prozessor ausgeführt wird.
Is vermutlich zwar sehr unwahrscheinlich, das zwei addierte Zufallszahlen zur gleichen Zeit das gleiche ergeben, erscheint mir da aber noch etwas unwahrscheinlicher

@unicorn
Danke für den Tipp. Behalte ich auf jeden Fall mal im Hinterkopf. Für den angedachten Zweck erscheints mir aber zu aufwändig.
Natürlich vor dem Hintergrund, das mein Ansatz mit dem zufälligen Namen funktioniert.

@b.p. und unicorn
Danke für eure Tipps!

ciao Tom


RE: Liste aller im Speicher befindlichen Bildreferenzen? - unicorn - 02.01.2012 14:03

Zufallszahlen sind eine gute Idee für den Dateinamen. Da es sich auf einem Computer tatsächlich nur um Pseudo-Zufallszahlen handelt, sind aufeinanderfolgende Zahlen niemals gleich und die Zufallszahlenfolge wiederholt sich erst nach 10 hoch ziemlich viel (je nach Qualität des Generators). Jedenfalls wirst Du niemals soviele Bilder gleichzeitig im Speicher haben können.


RE: Liste aller im Speicher befindlichen Bildreferenzen? - b.p - 03.01.2012 11:42

^^ Im Regelfall stimme ich zu.
Es heißt ja nicht, dass man so viele Bilder im Speicher hat, sondern vielleicht nur ganz bestimmte aufhebt. Und wenn man dann Fehlerquoten im ppm-Bereich garantieren muss und hundert Bilder in der Minute erstellt und die Anlage im Dauerbetrieb ist..
Bin nur gerade auf das Thema sensibilisiert, weil ich so was in die Richtung mache :-) .. ja, Hyperthreading zur selben Zeit ist aber auch seehr theoretisch möglich.. deswegen am besten kombinieren :-)


RE: Liste aller im Speicher befindlichen Bildreferenzen? - unicorn - 03.01.2012 14:48

Vielleicht sollte man den Bildnamen auch so zusammenbauen: Kameranummer-laufendeNummer.

Da jede angeschlossene Kamera zu einem Zeitpunkt nur ein Bild aufnehmen kann, hat man ein VI/LV-Klasse/Objekt, das die Kamera steuert und die laufende Nummer verwaltet. Sollte doch klappen, oder?


RE: Liste aller im Speicher befindlichen Bildreferenzen? - b.p - 03.01.2012 22:33

Also zumindest bei mir werden nicht nur Kamerabilder verwendet, sondern auch dynamisch welche erzeugt..


RE: Liste aller im Speicher befindlichen Bildreferenzen? - unicorn - 04.01.2012 14:57

Dann wird es etwas schwieriger. Man könnte sich ein einmalig existierendes VI bauen, bei dem die Namen für die einzelnen Bilder angefordert werden. Dieses singuläre VI zählt dann einfach mit und spuckt entsprechende Namen aus.


RE: Liste aller im Speicher befindlichen Bildreferenzen? - b.p - 04.01.2012 15:49

Ich glaube, jetzt bewegen wir uns nur noch auf theoretischem Grund.
Dass man sich eine eigene Lib über IMAQ basteln muss, ist nach ein paar Projekten klar :-), hab ich auch gemacht, und der OP wird schon eine Lösung gefunden haben.
Eine singuläre Namen-vergeb-Funktion ist aber wirklich eine gute Idee, und vermutlich schneller als meine Prozess-ID-Lösung. Mal testen/umbauen muss... (Und wenn man wirklich parallel fahren will, könnte man ja dynamisch mehrere solcher Funktionen mit unterschiedlichen Präfixen für jeden Prozess erzeugen und dann.. ich gleite ab. Blush )
Gruß,
Birgit