INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Buffer reservieren + Pointer auslesen



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

05.09.2008, 00:05
Beitrag #6

Peter Knauer
Unregistered


 







Buffer reservieren + Pointer auslesen
' schrieb:VI posten wäre nicht schlecht.
Anbei einmal eine kommentierte Version. Für LabVIEW 8.6
Komme derzeit nicht in unser System, um es für eine frühere Version abzuspeichern, tut mir leid. Vielleicht kann ja trotzdem jemand helfen.
Da ist jetzt nicht alles, was ich probiert habe, auf einmal drin. Aber man sieht, wie es funktionieren sollte.

' schrieb:Wenn dll Buffer alloziert, ist das sicherlich nicht schlecht. Dann gibt es keinen Ärger mit dem LV-Speichermanager.
Ja, dachte ich auch. Nur funktioniert die nachfolgende Speicheraktivsetzung damit überaupt nicht (nichtmal mit dem ersten Durchlauf). Ich bekomme offenbar die allokierte Adresse nicht korrekt von dem einen Funktionsaufruf in den anderen. Die Adresse, die aus dem allocate-Aufruf zurückkommt und dann IM Array steht, scheint aber korrekt. Sie wächst bei jedem neuen Aufruf brav um die allokierte Bildgröße. Nur bekomme ich die eben nicht als Zeiger AUF ein Array, sondern als INHALT des Arrays heraus.
Habe alle genannten und andere Formate schon probiert.

Hier würde ich also gern das Umgekehrte erreichen: Daß ich aus dieser lesbaren Bytefolge einen Pointer mache.

Und wie gesagt, zu Debugzwecken aus der Variante "Speicher selbst allokieren per Array" gern den Array-Pointer als Adresse anzeigen. Gibt es da Möglichkeiten in LabVIEW?
Was ich bisher im Forum so gelesen habe, ja wohl nicht? :-(

Mir ist wirklich unbegreiflich, was denn in einer Schleife anders laufen kann, als in hintereinander kopierten Aufrufen. Auch das Arrayinitialisieren habe ich mit in der Schleife drin. Letzteres scheint nichtmal nötig: Wenn ich Kopien der Aufrufe mache, brauche ich sogar das Array nur einmal initialisieren und kann den erhaltenen Pointer mehrfach verwenden - es funktioniert. Also völlig verkehrte Welt...

Der Weg herauszufinden, was der Unterschied zwischen Schleife und Kopie ist, wäre eben, sich den Inhalt der "Drähte" anzugucken, also auch den der Pointer-Drähte. Aus denen bekomme ich aber leider nur den Inhalt des Arrays auf das gepointet wird. :-(

' schrieb:P.S.: IDS liefert doch eine Highlevel-LV-Schnittstelle zu µEye-Kameras. Funzt die nicht?
Ja, was sie liefern sind sehr simple VIs, in denen diese dll-Aufrufe drinstehen. Diese mitgelieferten VIs und auch die Beispielprogramme enden leider genau da, wo es interessant wird: Wenn man die eingelesenen Bilder nämlich als jpg oder gar avi abspeichern will. Dafür gibt es im gesamten paket kein funktionierendes Beispiel.
Da gibt es seiten IDS offenbar keine Lösung für. Und auch in dem "Speicher allokieren"-VI haben sie es nicht mit dem AllocImageMem-Aufruf gemacht, sondern ebenfalls mit per Array selbstallokiertem Speicher. Das fällt auf.

Und es fällt auch auf, daß in dem einen mitgelieferten Beispielprogramm, was einen Ringpuffer von 3 Frames anlegt, es ebenfalls nicht in einer Schleife gemacht wurde, sonder auch das "Speicher allokieren"-VI 3 Mal kopiert.
Insofern bin ich also ganz offensichtlich auf ein Problem gestoßen, das IDS selbst nocht nicht gelöst hat.

Aber ich lasse mich davon nicht abschrecken, solange ich noch Ideen habe, wie ich dem Problem auf die Spur kommen könnte.

Zur Not bestünde noch die Möglichkeit, ein C-Programm (oder wrapper-dll) zu schreiben, das bspw. nur einen AVI-Dateinamen und einen Start-Befehl übergeben bekommt und dann alle auf C-Ebene macht.
In C scheinen sämtliche Aufrufe zu funktionieren, wie die dafür mitgelieferten Sources zeigen.

Sonstige .vi  AVI_aus_Labview___Knauer__TU_Berlin.vi (Größe: 27,93 KB / Downloads: 359)
Diese Nachricht in einer Antwort zitieren to top
Anzeige
Antwort schreiben 


Nachrichten in diesem Thema
Buffer reservieren + Pointer auslesen - Peter Knauer - 04.09.2008, 16:19
Buffer reservieren + Pointer auslesen - Peter Knauer - 05.09.2008 00:05
Buffer reservieren + Pointer auslesen - Peter Knauer - 05.09.2008, 15:35
Buffer reservieren + Pointer auslesen - Peter Knauer - 05.09.2008, 23:31
Buffer reservieren + Pointer auslesen - Peter Knauer - 09.09.2008, 10:50

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Datenübergabe an DLL Pointer to Pointer Reiling 2 9.566 02.02.2018 10:59
Letzter Beitrag: Reiling
  Absturz durch unzulässige Pointer VS_03 3 10.274 28.10.2016 18:32
Letzter Beitrag: VS_03
  dll mit Pointer auf komplexe Struktur einbinden Wedgewood 11 16.988 27.04.2014 23:44
Letzter Beitrag: Wedgewood
  Pointer auf Array mit Labview übertragen und darstellen lupus022 35 32.400 19.07.2013 10:53
Letzter Beitrag: lupus022
  Pointer und MoveBlock OXO 4 8.191 03.06.2013 16:31
Letzter Beitrag: OXO
  Pointer auf Subarray übergeben Event Horizon 5 7.382 15.07.2012 10:21
Letzter Beitrag: rolfk

Gehe zu: