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 

Einbinden externen Code mit unbekannter Parameterstruktur



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!

17.12.2009, 11:39 (Dieser Beitrag wurde zuletzt bearbeitet: 17.12.2009 11:55 von ghostwhisperer.)
Beitrag #10

ghostwhisperer Offline
LVF-Grünschnabel
*


Beiträge: 12
Registriert seit: Mar 2007

2009
1998
de

70469
Deutschland
Einbinden externen Code mit unbekannter Parameterstruktur
Hallo !!
Richtich 2 Pointer. Die DLL umfasst alle Funktionen zur Kamerasteuerung, die ich brauche. Aber alle anderen Funktionen funzen erst, wenn der Handler einwandfrei ist. Diese SetupCam hat der Mann der Firma extra dafür geschrieben, dass ich die Riesenhandler für die Kamerasteuerung eben nicht selber in LV rekonstruieren muss. Müsste ich eigentlich um die anderen Funktionen überhaupt nutzen zu können.
Ich hab da noch ne Messkarte die ohne Probleme funktioniert. Ist ähnlich aufgebaut: importierte DLL-Funktionen. Hier ist es so, dass zB DIO_Config auch einen Handler instanziert aber nur das int "taskid" zurückgibt. Das ist, wenn ich das richtig verstehe, ein Pointer (also inhalt = speicheradresse) auf den Messkarten-Handler.
Hier steht aber, genau wie du auch grad grübelst, wirklich nur ein uint32 T *taskid, und eben nicht *structure (welcher Art auch immer) und das ganze als "Zeiger auf Wert". Genau prüfen kann ich das leider nicht, da ich hier nur die DLL hab und weder Header noch Quellcode.

Der Herr von Smartray meint nun Camdesc* cd1 gibt mir die Adresse raus.
Wenn ich das aber mit uint und zeiger auf Wert versuche geht gar nix.

Rolfk meint ja, dass cd1 und pars1 zwar Pointer auf eine Struktur sind aber eben nicht Pointer die aus der DLL herauskommen. Und in C kann man nur Werte in einem Parameter zurückgeben indem man diesen Parameter als Referenz verwendet.

Der Herr von Smartray hat entgegengesetzt gemeint, das wäre nicht so. Woher die Unstimmigkeit? Was gibt mir der Funktionsaufruf denn nun? Muss der so umgeschrieben werden, dass wirklich ein int bzw int* rauskommt? Kann ich die Kamerafunktionen dann denn noch ungeändert nutzen? die Erwarten ja *Camdesk und kein Int. Oder hat nur LabVIEW das Problem sowas wie Adressoperatoren usw eigentlich nicht zu kennen? Mit anderen Worten, angenommen ich krieg meinen uint32bitzeigerinhaltadresse aus der Setup, versteht der nächste Funktionsaufruf dessen Inhalt dann richtig ? Nämlich als Adresse der Instanz und eben nicht als einfachen Int und infolge als falschen Variablentyp.

Wenn das alles nicht gehen sollte.... Der Mann schreibt grad an der Api so rum, dass ich die Kamerafunktionen ganz ohne Handler nutzen kann. Der wird dann per ApiStart instanziert und verkapselt und im übrigen als globale Variable übergeben. Ich krieg dann einfach ne Schnittstelle zum Ändern oder Lesen von Inhalten des Handlers.

MFG Torsten

' schrieb:Wenn ich das richtig interpretiere, bekommst du von der Funktion also lediglich zwei Pointer zurück. Man hätte - da es dich nicht interessiert, wie die jeweiligen Cluster ausfgebaut sind - den Prototypen auch machen können als "Int SR_API_SetupCam (int* MyIntVar1, int* MyIntVar2)". Wobei INT hier missbraucht wird als Zwischenspeicher für einen Pointer. Der Wert von MyIntVar2 interessiert dich überhaupt nicht. Lediglich MyIntVar1 musst du an die anderen Funktionen übergeben.

[*grübel*]
Für was brauchst du denn dann die DLL, wenn du nie Daten heraus liest ? Hat die ein eigenes "Frontpanel"?
[/*grübel*]

Sehe ich das richtig?
Wenn dem so ist, müsstest du lediglich im DLL-Knoten angeben: Typ UI32, Zeiger auf Wert. Für Int SR_API_SetupCam zweimal, für alle anderen einmal.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Nachrichten in diesem Thema
Einbinden externen Code mit unbekannter Parameterstruktur - ghostwhisperer - 17.12.2009 11:39

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  externen Code aus Matlab/Simulink auf cRio nutzen nator 4 12.356 27.07.2016 12:24
Letzter Beitrag: nator
  Absturz und fehler bei aufrufen einer externen dll Georg26 3 6.484 18.07.2011 09:45
Letzter Beitrag: Georg26
  Gewisse Unsichehreiten beim richtigen Umgang mit Clustern in Ausblick auf externen Co Reyneke 4 6.725 14.04.2011 10:59
Letzter Beitrag: rolfk
  Externen Code (.exe) ansteuern TerraX 4 6.123 12.05.2009 09:15
Letzter Beitrag: TerraX
  Array mit unbekannter Größe übergeben Curtis Newton 6 7.981 03.06.2008 13:04
Letzter Beitrag: Curtis Newton
  DLL's und einbinden von C++Code AndreasE 13 16.628 21.07.2007 19:51
Letzter Beitrag: rolfk

Gehe zu: