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!

13.06.2019, 14:32
Beitrag #1

Natalie1984 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 53
Registriert seit: Jun 2019

2016
-
DE



DLL Methoden richtig aufrufen
Hallo Zusammen,

es freut mich sehr, das ich hier auch mein Beitrag schreiben darf.
Ich bin seit 3 Monaten bei einem Unternehmen in Erlangen, wo wir Testautomationen mit NI Produkte entwickeln.

Nun, ich aber bin ein Newbie was Labview angeht.
Doch die Sprache ist nicht so schwer, wie ich mir das vorgestellt habe.
Wenn man sich da etwas anstrengt, kommt man sehr schnell in das Thematik hinein.

Meine Frage ist, würdet Ihr mich dabei unterstützen, beim Aufbau eine Bedienoberfläche für einen Ausgangsmodul.
Wir haben das Produkt bei uns im System zum Ein- bzw. Ausschalten von Testfälle integriert.

Ich habe mit Hilfe von Google, Youtube Videos etc. eine Oberfläche erstellt, auch im Blockdiagramm habe ich einen Konstruktorknoten eingefügt, wo ich dann die DLL von dem Ausgangsmodul integriert habe.
Mir ist gelungen, die DLL anzusprechen und eine Verbindung zum Modul herzustellen.

Nun, kann ich mich aber nicht mehr Disconnecten, auch ist es nicht möglich Daten zu senden.

Was mache ich hier falsch?
Wer kann mich dabei unterstützen?

VG
Natalie


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
13.06.2019, 14:54
Beitrag #2

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
Da musst du wohl das Manual/Programmierhandbuch deines (eher NICHT NI) Produkts YMTCP lesen.

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
13.06.2019, 16:10 (Dieser Beitrag wurde zuletzt bearbeitet: 13.06.2019 18:32 von Natalie1984.)
Beitrag #3

Natalie1984 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 53
Registriert seit: Jun 2019

2016
-
DE



RE: DLL Methoden richtig aufrufen
Hallo,

leider steht im Handbuch nicht, wie man das in Labview macht.
Ein Beispiel ist nur für Visual Studio mitgeliefert.


PS: Das ist die Fehlermeldung, was LabView aus gibt:
Fehler 1172 bei Methodenknoten System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht.
Inner Exception: System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.


VG
Natalie
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.06.2019, 18:27
Beitrag #4

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 musst du genau das nachprogrammieren wie im C++ (?) Beispiel für Visual Studio. In der Regel findet man die .NET Properties und Methods recht schnell, wenn man mal den Start-Constructor hat (und den hast du ja schon).

Da ich keine Ahnung habe, welche .NET Assembly du da verwendest, kann ich dir nicht mehr weiterhelfen als mit solchen Allgemeinplätzen.

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
13.06.2019, 18:38
Beitrag #5

Natalie1984 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 53
Registriert seit: Jun 2019

2016
-
DE



RE: DLL Methoden richtig aufrufen
Hi Jens,

so schaut es in VB.NET aus:

Private Sub btnAllON_Click(sender As Object, e As EventArgs) Handles btnAllON.Click

SendeByte1 = 255
SendeByte2 = 255
SendeByte3 = 255
SendeByte4 = 255

SchaltZustandSenden()
End Sub

Private Sub SchaltZustandSenden()
If YMCom.IsOpen Then
YMCom.SEND_STATUS_32(CStr(SendeByte1), CStr(SendeByte2), CStr(SendeByte3), CStr(SendeByte4))
End If
End Sub

und alle Ausgänge schalten ein.

und so habe ich das in Labview gemacht, siehe Bild.
Oder ist das falsch?

VG
Natalie


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
13.06.2019, 19:31
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: DLL Methoden richtig aufrufen
Hallo Natalie,

Code:
If YMCom.IsOpen Then
   YMCom.SEND_STATUS_32(CStr(SendeByte1), CStr(SendeByte2), CStr(SendeByte3), CStr(SendeByte4))
End If
Fehler: du hast das IsOpen-Flag überhaupt nicht mit der Casestruktur um das SendStatus() verbunden!

Außerdem: was enthalten deine Strings? Was erwartet diese DotNet-Funktion? Erwartet sie wirklich "255" als ASCII-Text - oder einfach ein Byte mit dem numerischen Wert 255?

Wieso haben deine Controls/Indicator teilweise so komische Label (wie "Numerisch" statt "Port" oder "Boolesch" statt "IsOpen")?

Wie sieht es mit dem Dataflow aus? Sollte Connect() vielleicht zuerst aufgerufen werden, danach dann IsOpen(), und zum Schluß erst SendStatus()? Leider hast du hier keine Reihenfolge festgelegt…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
14.06.2019, 09:52
Beitrag #7

Natalie1984 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 53
Registriert seit: Jun 2019

2016
-
DE



RE: DLL Methoden richtig aufrufen
(13.06.2019 19:31 )GerdW schrieb:  Hallo Natalie,

Code:
If YMCom.IsOpen Then
   YMCom.SEND_STATUS_32(CStr(SendeByte1), CStr(SendeByte2), CStr(SendeByte3), CStr(SendeByte4))
End If
Fehler: du hast das IsOpen-Flag überhaupt nicht mit der Casestruktur um das SendStatus() verbunden!

Außerdem: was enthalten deine Strings? Was erwartet diese DotNet-Funktion? Erwartet sie wirklich "255" als ASCII-Text - oder einfach ein Byte mit dem numerischen Wert 255?

Wieso haben deine Controls/Indicator teilweise so komische Label (wie "Numerisch" statt "Port" oder "Boolesch" statt "IsOpen")?

Wie sieht es mit dem Dataflow aus? Sollte Connect() vielleicht zuerst aufgerufen werden, danach dann IsOpen(), und zum Schluß erst SendStatus()? Leider hast du hier keine Reihenfolge festgelegt…

Hi GerdW
Die IsOpen ist nur eine abfrage, um zu prüfen, ob die Verbindung besteht.
Die habe ich erst einmal weggelassen, um einfach zu testen, ob ich überhaupt Daten senden kann.

YMCom.SEND_STATUS_32(CStr(SendeByte1), CStr(SendeByte2), CStr(SendeByte3), CStr(SendeByte4))

Hier werden String als Werte eingegeben. So ist es auch unter VB.NET. Natürlich kann es sein, das in der DLL dann nach Byte umgewandelt wird. Aber das ist dann nicht mehr unsere Bereich.

Zu Dataflow:
Ich baue erstmal die Verbindung auf und sehe, das die Verbindung steht. Ich gehe zumindest davon aus, denn am Modul Leuchtet die grüne LED am RJ45 Buchse stabile. Ansonsten blinkt die LED.
Was mich aber stützig macht ist auch, das die LED, was ich auf der Oberfläche angelegt habe nicht leuchtet. Ich dachte sie würde auf leuchten, sobald ich die Verbindung aufgebaut habe.


VG
Natalie
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.06.2019, 10:14
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 17.465
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: DLL Methoden richtig aufrufen
Hallo Natalie,

Zitat:Was mich aber stützig macht…
Du musst immer bedenken, dass wir weder dein Gerät kennen noch die zugehörige Doku haben.

Vielleicht solltest du einfach mal mit dem Hersteller des Gerätes reden?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.06.2019, 10:34
Beitrag #9

Natalie1984 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 53
Registriert seit: Jun 2019

2016
-
DE



RE: DLL Methoden richtig aufrufen
Hi Gerd,

das Modul ist hier auf der Seite zu finden
Ausgangsmodul

die DLL kann ich auch vielleicht bei bedarf hochladen.
Der Hersteller gibt kein Beispiel für Labview aber besteht darauf, das es auch für Labview funktioniert, lt. die MAil von den schreibt, das andere Kunden auch mit Labview arbeiten.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.06.2019, 10:38
Beitrag #10

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
(14.06.2019 09:52 )Natalie1984 schrieb:  Zu Dataflow:
Ich baue erstmal die Verbindung auf und sehe, das die Verbindung steht. Ich gehe zumindest davon aus, denn am Modul Leuchtet die grüne LED am RJ45 Buchse stabile. Ansonsten blinkt die LED.
Was mich aber stützig macht ist auch, das die LED, was ich auf der Oberfläche angelegt habe nicht leuchtet. Ich dachte sie würde auf leuchten, sobald ich die Verbindung aufgebaut habe.
Gut möglich, denn in deinem Blockdiagramm Screenshot misachtest du das Datenflussprinzip von LabVIEW (das hat Gerd auch schon gesagt).
Du erzeugst deine .Net-Referenz und spaltest diese auf 3 weitere Methoden auf. Die werden jetzt parallel aufgerufen, die Abfrage "IsOpen" also sehr wahrscheinlich schon vor deiner "Connect" Methode.

Nochmals das korrekte Vorgehen ist: Erst Connect ausführen, die Referenz am Ausgang der Methode weiterführen und damit "IsOpen" abfragen.

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


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

Gehe zu: