Verfasst am: 20.09.2010, 12:25
Titel: Übergabe eines Argumentes (Call by Reference!!)
Hallo zusammen,
Versuche ein Detektor über API anzusteuern... Beim Aufruf der Funktionen aus der Bibliothek werden Argumente von Funktion zu Funktion übergeben (Call by Reference) ...
Es folgt ein Auschnitt aus dem Code:
Code:
% Get Sensor: HACQDESC des Detektors
hAcqDescStart = 0; %Initialisieren
Pos = 0; %Initialisieren
Ich habe jetzt entdeckt das "hAcqDesc" ein Pointer ist, der auf einen HANDLE Typ zeigt... (typdef HANDLE HACQDESC)... kann Matlab solche Strukturen überhaupt verdauen??
Es kann also sein, dass du aus deinem hAcqDesc erst mit libstruct einen MATLAB-Datentyp machen musst, und den dann wieder in die Funktion reinschmeißen kannst.
_________________
hmmm.... die konvertierung in libpointer habe ich schon versucht...funktioniert ebenfalls nicht... libstruct ist jetzt quasi der letzte Strohhalm an dem ich mich festklammere... aber beim Durchgehen des Manuals ist mir das nicht so klar geworden...werde aber nochmal schauen... ansonsten werde ich wohl oder übel in den saure Apfel beissen und mich mit QT auseinandersetzen müssen.
hmmm.... die konvertierung in libpointer habe ich schon versucht...funktioniert ebenfalls nicht... libstruct ist jetzt quasi der letzte Strohhalm an dem ich mich festklammere... aber beim Durchgehen des Manuals ist mir das nicht so klar geworden...werde aber nochmal schauen...
Ich weiß nur: Klar wurde mir das damals auch nicht, ich hab mehrfach alle Kombinationen auf der Kommandozeile versucht, irgendwann klappte es
juju hat Folgendes geschrieben:
ansonsten werde ich wohl oder übel in den saure Apfel beissen und mich mit QT auseinandersetzen müssen.
Qt is ne super coole Sache. Zwar nich schön, wenn man schnell was fertig bekommen soll, aber trotzdem: Qt lohnt sich fürs Leben _________________
Weiter steht beschrieben, dass es sich hierbei um einen Pointer auf eine Struktur handelt, der für die Datenerhebung wichtige Parameter bereitstellt...
also mit libstruct komme ich da auch nicht weiter... weil die Struktur des Handles nirgendwo beschreiben steht...
Folgenden Fehlermeldung taucht auf, wenn ich versuche mit libstruct zu arbeiten:
Und noch was: Hast du ein funktionierendes C(++)-Beispiel? Ist es möglich, den Code 1:1 zu portieren (bzw. wahrscheinlich versuchst du das ohnehin)?
_________________
Hm, das ist merkwürdig. Ich hab mir die Library, mit der ich arbeite, nochmal angeschaut, und da kommt nirgendwo der mysteriöse voidPtr vor. Und wenn man es mal genau anschaut, ist dein Handle ja ein voidPtr, richtig? Was mag da wohl los sein?
juju hat Folgendes geschrieben:
was genau meinst du mit Portieren?? ... meinst du eine MEX FIle draus zu machen??
Ich meinte, ob du ein funktionierendes C(++)-Beispiel hast, wo die richtige Reihenfolge der Aufrufe und Handle-Übergaben gezeigt ist. Dann müsste man 100%ig sicherstellen, dass das Problem hier in MATLAB ist, und dass man nicht vielleicht doch die API nicht richtig benutzt? Sorry, klingt "vorwurfsvoll", solls aber nich sein.
Das mit den Mex-Files wäre dann quasi "ich gebs auf, anderer Weg muss her".
_________________
na klar...habe ein Beispiel in C... mit dem ich den Detktor Bilder aufintegrieren lasse...funktioniert einwandfrei... das Problem ist, ich kann so keine benutzerdefinierten Eingaben machen (Frametime, Integraionszeit, etc...)...darum ja das Einbinden in Matlab inklusive GUI ...
ein weiters Beispiel in C++ liefert eine komplette GUI... diese kann ich aber für meine Zwecke leider nicht verwenden.
Beide Beispiele beruhen auf der Bibliothek inklusive API-Funktionen....
also ich weiß auch nicht weiter
Zitat:
Und wenn man es mal genau anschaut, ist dein Handle ja ein voidPtr, richtig? Was mag da wohl los sein?
-> ja richtig... nur bei einer Funktion zeigt ein Pointer auf die Handlestruktur.
Einstellungen und Berechtigungen
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.