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 

Bitte um Erklärung von aufruf externer Bibliotheken



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!

22.03.2007, 10:31
Beitrag #1

Predator Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 62
Registriert seit: Mar 2007

8.50
2006
DE

29393
Deutschland
Bitte um Erklärung von aufruf externer Bibliotheken
hallo zusammen, ich bitte um verständnis für eine (für euch LV User) einfache frage. ich beschäftige mich im moment mit dem aufruf externer bibliotheken, dass heißt ich habe eine dll mit funktionen, wobei viele funktionen pointer beinhalten. beispeil: BOOL PCUS11 GetKonfig (HANDLE hDevice, OUT_READ_KONFIG* pStructKonfig,ULONG* pSimpleStatus).
danach folgt die struktur typedef struct_OUT_READ_KONFIG {...}. ich möchte jetzt gerne auf die struktur zugreifen, bzw. werte aus der struktur auslesen. wie mache ich das? ich habe den knoten zum aufruf externer bibliotheken gefunden und mit der dll verknüpft. dann habe ich den funktionsname ausgewählt... wie kann ich jetzt den pointer auf die struktur zeigen lassen und die werte an den jeweiligen adressen ausgeben. habe schon überall gesucht, einschließlich LV hilfe, aber irgendwie die sache nicht ganz verstanden. wäre nett wenn ihr mir helfen könntet...
mfg
dennis
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
22.03.2007, 10:34
Beitrag #2

Achim Offline
*****
*****


Beiträge: 4.223
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
Bitte um Erklärung von aufruf externer Bibliotheken
schreib "IchSelbst" mal ne PN, der macht dafür grade ein Tutorial...glaub ich jedenfalls...ist nicht trivial...besonders das mit den Pointern!

...aber ehrlich gesagt hab ich davon keinen Schimmer

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.03.2007, 11:44
Beitrag #3

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.689
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Bitte um Erklärung von aufruf externer Bibliotheken
' schrieb:hallo zusammen, ich bitte um verständnis für eine (für euch LV User) einfache frage.
Das ist keine einfache Frage - Pointer auf Anwenderebene und LV schließt sich eigentlich aus.

Zitat:BOOL PCUS11 GetKonfig (HANDLE hDevice, OUT_READ_KONFIG* pStructKonfig,ULONG* pSimpleStatus).
Neuesten Erkenntnissen zu folge könnte das doch gehen. Möglicherweise mit Aufwand und nur in eine Richtung, aber immerhin. Da muss ich aber selbst noch kucken.

Hier steht, wie man Daten mittels des move()-Befehls kopiert. Das resultierende U8-Array kann man dann manuell in einen Cluster (=> Struct) wandeln. Das ist zwar Aufwand, aber es geht. Und hier steht noch viel mehr. Ich glaube ich hab' da beim Überfliegen auch was über Struct gesehen.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.03.2007, 11:55
Beitrag #4

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.689
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Bitte um Erklärung von aufruf externer Bibliotheken
' schrieb:ist nicht trivial...besonders das mit den Pointern!
Genau so ist es. Wie soll ich in einem Totorial einen Sachverhalt erklären, den manche nicht mal bei einer direkten Ansprache Auge in Auge verstehen.

Zitat:...aber ehrlich gesagt hab ich davon keinen Schimmer
Das macht auch überhaupt nichts. Das Problem liegt an LV.

Pointer auf Anwenderebene in LV (und das gilt heutezutage für C++ und Delphi eigentlich genauso) sind so ungefähr genau so "schlimm", als wenn du Globale Variablen zum Datentransport benutzt anstelle von Queues. Oder Lokale Variablen zum Speichern anstelle von Schieberegistern. Oder BD schreibst vier Bildschirme breit anstelle SubVIs. Oder, oder, oder... Nur: was willst du machen, wenn du eben diese Vorgaben hast: LV und Pointer.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.03.2007, 13:28
Beitrag #5

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.689
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Bitte um Erklärung von aufruf externer Bibliotheken
' schrieb:Und hier steht noch viel mehr.
Unbrauchbar für jemanden, der nur eine vorgegebene DLL einbinden will. Rolleyes

Aber ich hab's noch nicht aufgegeben.Wink

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.03.2007, 16:53 (Dieser Beitrag wurde zuletzt bearbeitet: 23.03.2007 16:55 von astraios.)
Beitrag #6

astraios Offline
LVF-Grünschnabel
*


Beiträge: 44
Registriert seit: Mar 2006

8.5
2006
de

80937
Deutschland
Bitte um Erklärung von aufruf externer Bibliotheken
Zitat:<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>BOOL PCUS11 GetKonfig (HANDLE hDevice, OUT_READ_KONFIG* pStructKonfig,ULONG* pSimpleStatus)</div>

Hallo,

also beim Knoten zum Aufruf... musst Du zunächst mal die einzelnen Parameter der Funktion angeben (hier deren 3).

HANDLE ist soweit ich weiß erstmal ein Zeiger auf eine Speicherzelle (solltest Du von einem vorhergehenden DLL Aufruf erhalten haben?).

Sie letzten beiden sind einfache Zeiger - das sollte kein größeres Problem werden.

Am einfachsten geht der letzte Parameter: Da als Typ Numerisch, U32 und "Zeiger auf Wert" verwenden.

Bei dem Zeiger auf die Struktur: Typ Array, U8, "Array Datenzeiger" verwenden. Dann musst Du unbedingt in den zu diesem Parameter gehörenden Eingang des DLL-Knotens ein initialisiertes U8 Array hineinführen, das mindestens so lang wie die Größe der Struktur in Bytes ist. Damit bekommst Du die Daten Deiner Struktur als Byte-Array. Nun musst Du "nur" noch die einzelnen Bytes je nach verwendeten Datentypen in der Struktur interpretieren.

Beispiel:

Deine Struktur besteht aus folgenden Werten (in dieser Reihenfolge)

<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>
typedef struct myStruct
{
unsigned int value1; //32 Bit
unsigned long long value2; //64 Bit
} myStruct;
</div>

Dann muss das initialisierte Array am Eingang des DLL-Knotens eine Größe von 4+8 = 12 Byte (U8-Elementen) haben. Aus den Daten, die aus Deiner DLL rauskommen, machst Du aus den ersten 4 Bytes einen U32 Wert und aus den nächsten 8 einen U64 Wert:

   


//edit: Ach ja. Den Handle Wert würde ich mal als U32 Wert (nicht Zeiger!) übergeben...

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
27.03.2007, 09:44
Beitrag #7

Predator Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 62
Registriert seit: Mar 2007

8.50
2006
DE

29393
Deutschland
Bitte um Erklärung von aufruf externer Bibliotheken
vielen dank... das hat mir alles schon weitergeholfen.. so ähnlich hatte ich es mir auch gedacht. vielen danke dafür... bin jedoch zur zeit mit was anderem beschäfitigt und probiere es später aus... aber vielen dank an allen
gruss dennis
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Aufruf externer Bibliotheken / Keyence / Schnittstelle _Markus_ 1 6.302 20.05.2019 12:23
Letzter Beitrag: _Markus_
  LabView Wrapper - PostUserEvent aus externer DLL Stephan235 3 10.413 22.07.2015 13:28
Letzter Beitrag: rolfk
  Fehler 1097 bei Knoten zum Aufruf externer Bibliotheken in CLF-Knoten.vi KingLui 2 7.843 16.09.2014 13:47
Letzter Beitrag: KingLui
  Einbinden externer DLL St_Markus 1 6.868 28.05.2013 15:25
Letzter Beitrag: rolfk
  VI als externer Code finalr 1 5.001 23.11.2012 08:58
Letzter Beitrag: GerdW
  Array Elemnte von externer Funktion verbinden Heili 3 5.324 12.11.2010 13:54
Letzter Beitrag: Lucki

Gehe zu: