Verfasst am: 20.02.2020, 15:03
Titel: Laden von mehreren Bildern (DLL und DMD)
Hallo zusammen,
ich hoffe das ist nicht zu speziell und man kann ungefähr verstehen was ich möchte.
Ich arbeite mit einer Hardware (DMD), die beispielsweise Bilder über ein Spiegelarray darstellen kann.
Die Bilder lade ich wie folgt in den Speicher des Geräts
Code:
PicOffset = int32(0);
PicLoad = int32(0); % An Bildanzahl anpassen
Ein Bild zu laden und darzustellen funktioniert, mir ist nur schleierhaft, wie ich mehrere Bilder laden kann, die dann nacheinander dargestellt werden.
Über eine Schleifenwiederholung (je nach Anzahl der ausgewählten Bilder) den Befehl immer wieder neu unter der gleichen SequenceID durchführen oder über eine Art Bilderpaket? Leider steht in der Beschreibung nichts über mehrere Bilder, nur "UserArrayPtr - pointer to the user data to be loaded" und "pointer to a readable image data buffer.".
Ich würde die Bilder dann gerne über
auswählen. Das habe ich gemacht und erhalte eine Cell-Struktur mit den Namen meiner Auswahl. Und von dort müsste ich nun weiterarbeiten bzw diese als UserArray übergeben.
Habe eben mal das "Befehl wiederholt ausführen" probiert und erhalte eine Fehlermeldung vom Gerät "Error accessing user data.".
Vielleicht hat jemand eine Idee wie man das umsetzen kann. Vielen Dank! : )
ifsize(UserArray{:,i},3) == 3
UserArray{:,i} = rgb2gray(UserArray{:,i});
end
[numRos, numCols] = size(UserArray{:,i});
if numCols == 1920 && numRos == 1080
UserArray{:,i} = UserArray{:,i}';
end
% Pointer für Image Data
UserArrayPtr = libpointer('voidPtr',UserArray{:,i});
% Befehl Image Data in Speicher zu laden
STATUS_ALP_SEQ_PUT = calllib('alp4395','AlpSeqPut', ALP_ID, SequenceID, PicOffset, PicLoad, UserArrayPtr);
assignin('base',strcat('UserArray',num2str(i)),UserArray{:,i});
assignin('base','UserArrayPtr',UserArrayPtr);
assignin('base','STATUS_ALP_SEQ_PUT',STATUS_ALP_SEQ_PUT);
end
Das zweite mal die Funktionen nacheinander ohne Schleife auszuführen. Damit stellt er auch nur das zweite Bild dar bzw. lädt er wohl nur das zweite Bild in den Speicher.
Die Fehlermeldung laut Header File lautet "Error accessing user data.".
Liegt es vielleicht daran, dass die Funktion pro Sequence ( Sequence 1 enthält x Bilder) nur ein Mal ausgeführt werden kann, bräuchte man für jedes Bild einen neuen Pointer?
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.