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 

Dieses Thema hat akzeptierte Lösungen:

DLL Methoden richtig aufrufen



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!

20.06.2019, 11:32
Beitrag #41

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: DLL Methoden richtig aufrufen
Dann lerne, wie man in LabVIEW SubVIs anlegt und diese aufruft.
Ich werde dir nicht alles vorkauen.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
20.06.2019, 12:11
Beitrag #42

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RE: DLL Methoden richtig aufrufen
(19.06.2019 15:45 )Natalie1984 schrieb:  Konnte leider nichts in Google darüber finden.
Zum Beispiel dort: http://fabiantoepper.de/net-events-in-la...ar-machen/

Im übrigen bin ich der Meinung, wenn der Lieferant der .NET-Schnittstelle was taugt, hat der gerade heute zutage eine ausreichende LabVIEW-Unterstützung. Wozu z.B. das Zur-Verfügung-Stellen eines Muster-VIs gehört, dass die Übergabe einer Funktion an einen Delegaten zeigt.

Selbstverständlich müssen die Delegaten-Methode (z.B. deren gekapselter Verweis) und die LabVIEW-VI-Schnittstelle kompatibel sein - worin meiner Meinung nach das größere Problem liegt. Genau kann dir das nur der .NET-DLL-Hersteller sagen.

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
20.06.2019, 15:48
Beitrag #43

rolfk Offline
LVF-Guru
*****


Beiträge: 2.302
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: DLL Methoden richtig aufrufen
Das dürfte mit Events in LabVIEW übereinkommen.

In der .Net Palette gibt es eine "Register Event" node. Wenn Du dort am ersten Parameter unter dem gelben Header die .Net Referenz anschliesst, und dann auf diesen Parameter klickst, kannst Du aus den Events (an die in .Net ein Delegate zugewiesen werden kann) auswählen. Dann mit der rechten Maustaste wieder auf die Node klicken und "Create Callback VI" auswählen. Dieses Callback VI ist das was in .Net Delegate genannt wird. In diesem VI kannst Du dasselbe ausführen was normal in der Delegate Funktion gemacht würde.

Im Link von IchSelbst ist das sehr gut beschrieben.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.06.2019, 19:27
Beitrag #44

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RE: DLL Methoden richtig aufrufen
(19.06.2019 15:45 )Natalie1984 schrieb:  Konnte leider nichts in Google darüber finden.
Warum in die Ferne schweifen, wenn das Gute liegt so nah:

https://www.labviewforum.de/Thread-Callb...ialisieren

https://www.labviewforum.de/Thread-Beend...llback-VIs

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
24.06.2019, 12:19
Beitrag #45

Natalie1984 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 53
Registriert seit: Jun 2019

2016
-
DE



RE: DLL Methoden richtig aufrufen
(20.06.2019 15:48 )rolfk schrieb:  Das dürfte mit Events in LabVIEW übereinkommen.

In der .Net Palette gibt es eine "Register Event" node. Wenn Du dort am ersten Parameter unter dem gelben Header die .Net Referenz anschliesst, und dann auf diesen Parameter klickst, kannst Du aus den Events (an die in .Net ein Delegate zugewiesen werden kann) auswählen. Dann mit der rechten Maustaste wieder auf die Node klicken und "Create Callback VI" auswählen. Dieses Callback VI ist das was in .Net Delegate genannt wird. In diesem VI kannst Du dasselbe ausführen was normal in der Delegate Funktion gemacht würde.

Im Link von IchSelbst ist das sehr gut beschrieben.

Hi,

ich versuche den ganzen Tag heraus zubekommen, wie ich jetzt damit etwas triggern kann, sobald der Event FirstConnect in der DLL getriggert wurde.


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.06.2019, 13:43 (Dieser Beitrag wurde zuletzt bearbeitet: 24.06.2019 14:44 von IchSelbst.)
Beitrag #46

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RE: DLL Methoden richtig aufrufen
(24.06.2019 12:19 )Natalie1984 schrieb:  ich versuche den ganzen Tag heraus zubekommen, wie ich jetzt damit etwas triggern kann, sobald der Event FirstConnect in der DLL getriggert wurde.
Die .NET-DLL ruft das SubVI, das am Eingang "VI-Ref" hängt, per CallBack auf (weswegen der Knoten ja auch "Ereignis-Callback..." heißt). D.h. also, dein "Trigger" ist das Aufrufen des SUbVIs.

Im SubVI musst du jetzt entsprechende weiterführende Maßnahmen ergreifen. Hier gibt es verschiedene Möglichkeiten:

1. Möglichkeit:
Du ließt im getriggerten SubVI diverse Daten (nämlich die, die jetzt in dem Ereignis-Case "Daten rufen" stehen) aus der .NET-DLL aus und schreibst diese Daten und spezielle Steuerinformation (z.B. "Trigger war da") in eine FGV (was das ist, siehe in der Suche und in der Hilfe). Diese FGV pollst du im MainVI.

2. Möglichkeit:
Im SubVI erzeugst du einen Benutzer-Event (siehe in der Suche und in der Hilfe). Dieser Benutzer-Event erzeugt in einer Ereignisstruktur einen Event und du kannst (quasi zum Zeitpunkt des Auftretens des Triggers) Daten aus der .NET-DLL auslesen in der Art, wie du das jetzt machst.

Viel Erfolg. Top1

ps: Wenn du Nachfragen hast, nicht vergessen, ein Muster-VI anzuhängen - das erhöht die Wahrscheinlichkeit einer Antwort.

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
24.06.2019, 17:07
Beitrag #47

Natalie1984 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 53
Registriert seit: Jun 2019

2016
-
DE



RE: DLL Methoden richtig aufrufen
(24.06.2019 13:43 )IchSelbst schrieb:  Im SubVI musst du jetzt entsprechende weiterführende Maßnahmen ergreifen. Hier gibt es verschiedene Möglichkeiten:

1. Möglichkeit:
Du ließt im getriggerten SubVI diverse Daten (nämlich die, die jetzt in dem Ereignis-Case "Daten rufen" stehen) aus der .NET-DLL aus und schreibst diese Daten und spezielle Steuerinformation (z.B. "Trigger war da") in eine FGV (was das ist, siehe in der Suche und in der Hilfe). Diese FGV pollst du im MainVI.

2. Möglichkeit:
Im SubVI erzeugst du einen Benutzer-Event (siehe in der Suche und in der Hilfe). Dieser Benutzer-Event erzeugt in einer Ereignisstruktur einen Event und du kannst (quasi zum Zeitpunkt des Auftretens des Triggers) Daten aus der .NET-DLL auslesen in der Art, wie du das jetzt machst.

Hallo,

ich weiß jetzt nicht, welche von den beiden Möglichkeiten die beste ist.
Wieso kann der Ereignis Callback, nicht einfach einen True Wert ausgeben, sobald sie getriggert wurde?
Warum muss ich da noch so einen Aufwand umprogrammieren?

Ich habe mir zwar die FGV (Functions Globale Variablen) schreiben angesehen, doch das ist aber nicht wonach ich suche oder?
Wenn ich die Ereignisstruktur in die SubVI reinlege, dann muss ich ja wieder die DLL aufrufen !?

Da muss doch was einfaches geben, sobald das Event getriggert wird!

VG
Natalie
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.06.2019, 20:13
Beitrag #48

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RE: DLL Methoden richtig aufrufen
(24.06.2019 17:07 )Natalie1984 schrieb:  ich weiß jetzt nicht, welche von den beiden Möglichkeiten die beste ist.
Wenn du mich fragst, ist die Lösung mit dem Benutzer-Event die elegantere Lösung. Die bedarf nämlich nicht des Pollens nur für den Zweck, festzustellen, ob der Trigger da war.
Einfacher ist natürlich die Lösung mit der FGV.

Zitat:Wieso kann der Ereignis Callback, nicht einfach einen True Wert ausgeben, sobald sie getriggert wurde?
Der Callback, eigentlich das SubVI, das beim Callback aufgerufen wird, hat im Normalfall keinen Ausgang. Das Callback-VI sollte nämlich als asynchrones SubVI ausgeführt werden. Und sobald es asynchron ist, kann es in keinem Ablauf eingebunden sein, in dem dann Ausgänge sinnvoll sind. (Außerdem kann das Callback-SubVI nicht ausgeführt werden in Sinne "in einen Datenfluss einbinden": Solange es ausgeführt würde, würde der Trigger nicht funktionieren - theoretisch).

Zitat:Warum muss ich da noch so einen Aufwand umprogrammieren?
Um den asynchronen Aufruf in dein synchrones Programm einzubinden (Datenflusssteuerung!).

Zitat:Ich habe mir zwar die FGV (Functions Globale Variablen) schreiben angesehen, doch das ist aber nicht wonach ich suche oder?
Doch. Das ist das, was ich gemeint habe: Case in While-Schleife mit Variant-Dateneingang und Enumerator.

Zitat:Wenn ich die Ereignisstruktur in die SubVI reinlege, dann muss ich ja wieder die DLL aufrufen !?
Ja und?

Zitat:Da muss doch was einfaches geben, sobald das Event getriggert wird!
Keiner hat gesagt, dass .NET-Callbacks, also Delegates, einfach zu programmieren sind. Nicht das Event wird getriggert, sondern das SubVI wird getriggert durch den Event, d.h. der Event triggert.

Die Sache mit der FGV ist doch ganz einfach: .NET-DLL macht einen Callback. Im getriggerten SubVI werden die Daten aus der DLL in eine FGV gelesen. Diese FGV wird im MainVI und überall sonst verwendet.

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
25.06.2019, 09:10
Beitrag #49

Natalie1984 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 53
Registriert seit: Jun 2019

2016
-
DE



RE: DLL Methoden richtig aufrufen
(24.06.2019 20:13 )IchSelbst schrieb:  Die Sache mit der FGV ist doch ganz einfach: .NET-DLL macht einen Callback. Im getriggerten SubVI werden die Daten aus der DLL in eine FGV gelesen. Diese FGV wird im MainVI und überall sonst verwendet.

Hi IchSelbst, hast du auch eine vernünftige Name? :-)

ganz genau die Stelle ist mir unklar, wie die Daten aus der DLL in die FVG gelesen werden.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.06.2019, 21:53
Beitrag #50

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
RE: DLL Methoden richtig aufrufen
(25.06.2019 09:10 )Natalie1984 schrieb:  Hi IchSelbst, hast du auch eine vernünftige Name?
IchSelbst ist doch ein vernünftiger Name. "Selbst", auf englisch "self", ist in Delphi-Pascal das was "this" in C/C++/C# ist: Der Pointer auf die eigene Instanz, also auf Ich. Das wissen halt Jungfüchse nicht mehr. (Was Sheldon kann, kann ich auch.) Normale Menschen sagen Alexander zu mir. Yahoo

Zitat:ganz genau die Stelle ist mir unklar, wie die Daten aus der DLL in die FVG gelesen werden.
z.B. so:

lv17_img


Angehängte Datei(en)
0.0 .zip  is_Muster.zip (Größe: 42,65 KB / Downloads: 113)

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
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Zugriffsprobleme auf .NET-Methoden F_aus_S 1 4.677 02.04.2012 11:12
Letzter Beitrag: jg
  ActiveX & Excel Übersicht über Methoden und Eigenschaften nemesismf 3 7.595 01.12.2011 13:26
Letzter Beitrag: nemesismf

Gehe zu: