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!

16.12.2009, 15:47
Beitrag #7

ghostwhisperer Offline
LVF-Grünschnabel
*


Beiträge: 12
Registriert seit: Mar 2007

2009
1998
de

70469
Deutschland
Einbinden externen Code mit unbekannter Parameterstruktur
Sorry hab mich wohl zu knapp ausgedrückt.

In einem hast recht, das sind Strukturen mit Ints, Strings, Arrays, weiteren Pointern usw drin.

Der generelle Programm-Ablauf soll zb so aussehen.

Int SR_API_Init (void) //Init der Kamera-Api
Int SR_API_SetupCam ( Camdesc* cd1, Param* pars1) // instanziert 1* Camdesc und 1*Parameter mit standardwerten Rückgabe sollen Pointer auf Instanzen sein
Int SR_API_StartCamConMan (Camdesc* cd1) // versucht Verbindung zur Kamera herzustellen, die im Camdescriptor beschrieben ist
Str SR_API_GETIP (Camdesc* cd1) // Beispiel: Kontrolle der IP der Kamera
...
INT SR_API_StopCamConMan (Camdesc* cd1) // schließt Kamera-Connection
Int SR_Api_Exit(void) // beendet Api

Mehr kann ich hier leider nicht sagen, da ich den Quellcode nicht hab. Der Programmierer der Firma ist sich eigentlich sicher, dass für die Ausführung aller Kamerafunktionen der Adresspointer auf den extern angelegten Speicherbereich für Camdesc ausreichend ist. Ich kriegs nur nicht in LabVIEW hin.

' schrieb:Also da ich nicht die ganze Headerdatei sehen kann muss ich hier natürlich Vermutungen machen aber die Deklaration
int LIBCALL SR_API_SetupCam ( Camdesc* cd1, Param* pars1)
lässt halt die Vermutung aufkommen dass es zwar ein Pointer ist aber eben nicht einer der von der DLL kommt. Das darum weil Camdesc und Param ziemlich sicher struct Deklarationen sind und nicht Pointer darauf. Also so was wie:
typedef struct {
sometype elm1;
sometype elm2;
.....
} Camdesc;
und nicht:
typedef struct {
sometype elm1;
sometype elm2;
.....
} *Camdesc;
Das heisst cd1 und pars1 sind zwar Pointer auf eine Struktur aber eben nicht Pointer die aus der DLL herauskommen. In C kann man nur Werte in einem Parameter zurückgeben indem man diesen Parameter als Referenz verwendet. Wenn die DLL also den Pointer zurückgeben wollte müsste der Pointer als Referenz übergeben werden was so aussehen würde:
int LIBCALL SR_API_SetupCam ( Camdesc* *cd1, Param* *pars1)
Da das wahrscheinlich hier nicht der Fall ist muss LabVIEW den entsprechenden Buffer bereitstellen.
Was den Inhalt der Struktur angeht, da können durchaus viele Nullen drin sein. Ich weiss ja nicht was da alles drinsteht aber warum den nicht auch Nullen?
Ob das Array nun U8 oder U32 ist macht nicht soviel aus. Die Struktur selber wird eh nicht alles U8 oder U32 enthalten und Du sagtest ja selber dass Du am Inhalt des Pointers selber nicht interessiert bist. Bei Verwendung von U8 musst Du einfach soviele Elemente allozieren als die Struktur in Bytes lang ist, bei Verwendung von U32 reicht es (Länge + 3 MOD 4) Elemente anzulegen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Nachrichten in diesem Thema
Einbinden externen Code mit unbekannter Parameterstruktur - ghostwhisperer - 16.12.2009 15:47

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

Gehe zu: