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 

DLL Argumentenaufruf



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!

10.07.2013, 13:04
Beitrag #1

raverel Offline
LVF-Grünschnabel
*


Beiträge: 29
Registriert seit: Apr 2013

12
2012
EN



DLL Argumentenaufruf
Hallo zusammen,

ich habe mal wieder eine Frage bzgl. der Einbindung einer .dll. Ich möchte mit einer Funktion aus einer .dll eine Config. Datei downloaden. Leider weiss ich jetzt nicht genau, was ich für Datentypen für "pabFileData", und "pvUser" verwenden muss und in der dll einstellen muss.
Kann mir da vllt. jemand auf die Sprünge helfen? Ich habe mal ein Screenshot der dll hinzugefügt.

Gruß
raverel


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
10.07.2013, 13:33 (Dieser Beitrag wurde zuletzt bearbeitet: 10.07.2013 13:38 von rolfk.)
Beitrag #2

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: DLL Argumentenaufruf
(10.07.2013 13:04 )raverel schrieb:  Hallo zusammen,

ich habe mal wieder eine Frage bzgl. der Einbindung einer .dll. Ich möchte mit einer Funktion aus einer .dll eine Config. Datei downloaden. Leider weiss ich jetzt nicht genau, was ich für Datentypen für "pabFileData", und "pvUser" verwenden muss und in der dll einstellen muss.
Kann mir da vllt. jemand auf die Sprünge helfen? Ich habe mal ein Screenshot der dll hinzugefügt.

Gruß
raverel

pabFileData ist ein Array von unsinged 8 bit Integers passed as C Array Pointer. ulFileSize ist wahrscheinlich die Anzahl Bytes in diesem Array.
pvUser ist ein Pointer Sized Integer der irgendwas enthalten kann was die Callback Routine interpretieren kann.

Aber!!!!

pfnCallback und pfnRecvPktCallback sind Callback Function Pointers und das geht mit der CLN nicht (sinnvoll)! Theoretisch kann man da zwar was auf LabVIEW Diagramm Ebene basteln aber das Resultat erfordert ungefähr 10 mal mehr Low Level C Kenntnisse als in C eine entsprechende Wrapper DLL zu entwickeln die das Ganze in User Events oder so umwandelt und das ist auch schon Advanced Programming. Auch wäre eine Implementation nur auf dem LabVIEW Diagramm ein katastrophaler Maintenance Alptraum.

Wenn diese Funktion also nicht unterstützt, dass man sie mit NULL Werten für die zwei pfn Parameter aufrufen kann, musst Du wohl oder übel einen C Compiler anwerfen um einen Wrapper zu schreiben. Oder den Support der Treiber DLL solange plagen bis sie Dir einen solchen Wrapper machen, oder jemanden mit guten C und LabVIEW Kenntnissen anheuern der diese Wrapper DLL für Dich macht.

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
12.07.2013, 13:37
Beitrag #3

raverel Offline
LVF-Grünschnabel
*


Beiträge: 29
Registriert seit: Apr 2013

12
2012
EN



RE: DLL Argumentenaufruf
Ok.
Ich habe mir jetzt ein VI erstellt. Das eine Datei in meinen Kommunikationskanal laden soll.
Doch ich bekomme immer einen Crash Report und LabView stürzt ab und leider steht im "View Report" nichts nützliches drin.
Die anderen 4 Sub-VI`s sind dazu da, die Driver Funktionen zu öffnen und zu schließen und den Kommunitionskanal zu öffnen und zu schließen.

Vielen Dank

raverel

lv11_img


Angehängte Datei(en)
11.0 .vi  Oer_Feldbus_Ethernet_IP_Download_Config.vi (Größe: 20,75 KB / Downloads: 256)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.07.2013, 14:03 (Dieser Beitrag wurde zuletzt bearbeitet: 12.07.2013 14:05 von rolfk.)
Beitrag #4

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: DLL Argumentenaufruf
(12.07.2013 13:37 )raverel schrieb:  Ok.
Ich habe mir jetzt ein VI erstellt. Das eine Datei in meinen Kommunikationskanal laden soll.
Doch ich bekomme immer einen Crash Report und LabView stürzt ab und leider steht im "View Report" nichts nützliches drin.
Die anderen 4 Sub-VI`s sind dazu da, die Driver Funktionen zu öffnen und zu schließen und den Kommunitionskanal zu öffnen und zu schließen.

Vielen Dank

raverel

lv11_img

Näturlich muss das crashen. Du übergibst zwar NULL an die Callbackfunctionsparameter aber hast die als "Passed by Reference" konfiguriert. Damit ist nicht der Pointer selber NULL. Die Funktion sieht einen Pointer ungleich NULL und konkludiert, dass das ein Callbackfunctionpointer sein muss und ruft ihn verfolgens freudig auf. Aber da ist kein Callback sondern nur eine Speicheraddresse wo irgendwann mal NULL drin stand.

Mach die zwei pfn Parameter als "Pass: Value" und es sollte gehen.

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
15.07.2013, 09:36
Beitrag #5

raverel Offline
LVF-Grünschnabel
*


Beiträge: 29
Registriert seit: Apr 2013

12
2012
EN



RE: DLL Argumentenaufruf
Ok Vielen Dank.
LabView stürtzt nun nicht mehr ab.
Hab dazu nun noch eine abschließende Frage, da die Daten nicht in meinen Kommunikations Channel geladen werden.
Ich bin mir nicht 100%-ig sicher, ob ich dass so richtig mit den Parameter pabFileData gemacht habe.
Habe das Argument in dem CLF als uint8 Array Data Pointer deklariert.
Als Übergabeparameter habe ich diesem Argument ein Bytearray übergeben, welches ich vorher aus einem String umgewandelt habe. In diesem String lesen ich aus dem Pfad alle Daten ein.

lv11_img


Angehängte Datei(en)
11.0 .vi  Oer_Feldbus_Ethernet_IP_Download_Config.vi (Größe: 23,24 KB / Downloads: 259)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.07.2013, 12:17
Beitrag #6

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: DLL Argumentenaufruf
(15.07.2013 09:36 )raverel schrieb:  Ok Vielen Dank.
LabView stürtzt nun nicht mehr ab.
Hab dazu nun noch eine abschließende Frage, da die Daten nicht in meinen Kommunikations Channel geladen werden.
Ich bin mir nicht 100%-ig sicher, ob ich dass so richtig mit den Parameter pabFileData gemacht habe.
Habe das Argument in dem CLF als uint8 Array Data Pointer deklariert.
Als Übergabeparameter habe ich diesem Argument ein Bytearray übergeben, welches ich vorher aus einem String umgewandelt habe. In diesem String lesen ich aus dem Pfad alle Daten ein.

lv11_img

Die CLN Konfiguration scheint mir nun grundsätzlich korrekt. Ob und wie die Funktion selber funktioniert entzieht sich total meiner Kenntnisse, da kann ich Dir nicht weiterhelfen. Du wirst hiermit wohl beim Support von Hilscher besser aufgehoben sein. Die können Dir sagen was für Daten in dem Bytearray drin sein müssen, allefalls andere Voraussetzungen die Du zuvor durch möglich andere Funktionsaufrufe bereitstellen musst, usw.

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
Anzeige
18.07.2013, 07:57
Beitrag #7

raverel Offline
LVF-Grünschnabel
*


Beiträge: 29
Registriert seit: Apr 2013

12
2012
EN



RE: DLL Argumentenaufruf
Ok.
Vielen Dank für die Hilfe. Dann werd ich mich jetzt wohl mal mit dem Support rumschlagen Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: