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 

Vector Informatik: CAN Anbindung mit XL Treiber v6.4 (über DLL)



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.11.2007, 10:39
Beitrag #1

Rob Offline
LVF-Grünschnabel
*


Beiträge: 25
Registriert seit: Apr 2007

7.1
2007
kA


Deutschland
Vector Informatik: CAN Anbindung mit XL Treiber v6.4 (über DLL)
Hallo,

würde gerne eine CAN Karte von Vector Informatik verwenden und diese unter LabVIEW 8.0 anpsrechen. Dazu kann man sich enteder eine ("teure") Freischaltung kaufen, oder man nutzt den XL Treiber (siehe http://www.vector-worldwide.com/downloads/...rs/xl_lib64.zip ) in Form einer DLL Datei. Ein paar Aufrufe bekomem ich mittels des Call Library Function Node auch hin (siehe Screenshot), bei anderen scheitere ich aber hoffnungslos. Dies ist u.a. bei allen Aufrufen die structs (z.B. xlGetDriverConfig) erwarten und dynamische Rückgabegrößen haben der Fall.
Hier im Forum habe ich bereits Beispiele für ältere Versionen (mit ncdXXXX Aufrufen) gefunden, für die habe ich jedoch keine Beschreibung der API und weiß nicht was als Parameter erwartet wird u.ä.
Hat sich evtl. schon mal jemand an einer neuen Version probiert? Bräuchte erstmal "nur" Kommunikation via CAN. Beispiele zu structs und/oder Platzhaltern für Rückgabewerte würden mir auch schon weiterhelfen.
Falls da noch jemand etwas probiert: evtl. kann man ja mal ein Beispiel gemeinsam erarbeiten.

Gruß und danke,

Robert


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

eg Offline
LVF-SeniorMod


Beiträge: 3.868
Registriert seit: Nov 2005

2016
2003
kA

66111
Deutschland
Vector Informatik: CAN Anbindung mit XL Treiber v6.4 (über DLL)
Für solche Sachen soll es auf jeden Fall eine Dokumentation von Vector geben, such mal danach, ansonsten wäre diese Lib unbrauchbar.

eg

Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.11.2007, 11:14
Beitrag #3

Rob Offline
LVF-Grünschnabel
*


Beiträge: 25
Registriert seit: Apr 2007

7.1
2007
kA


Deutschland
Vector Informatik: CAN Anbindung mit XL Treiber v6.4 (über DLL)
' schrieb:Für solche Sachen soll es auf jeden Fall eine Dokumentation von Vector geben, such mal danach, ansonsten wäre diese Lib unbrauchbar.

eg
Hi,

???
Für "meine" Version habe ich eine Dokumentation, passend zur DLL Datei, bzw. die stellt Vector zur Verfügung. Ihre eigenen VIs wollen sie aber (verständlicherweise) verkaufen, insofern gibt es "nur" eine DLL mit Doku die die Funktionen beschreibt (siehe Link im ersten Posting). Dort ist jede Funktion mit Parametern und Rückgabewerten beschrieben. Zu den Versionen die hier im Forum sind, fehlt mir die. Dort habe ich dann eine "nackte" DLL und entsprechende VIs die aus der DLL einige (also längst nicht alle) Funktionen aufrufen. Sicher, einiges bekomme ich über die Namen raus und kann ich mir denken...
Problem: die Beispiele hier aus dem Forum laufen bei mir X Minuten stabil durch, aber nicht 24h (über Nacht). Dann stehen die Programme, bzw. die CAN Nachrichten werden nicht mehr von LV empfangen (CAN läuft weiter). Deshalb würde ich gerne die aktuelle DLL verwenden, um Fehler in irgend einer alten Version auszuschließen.
Das hier http://www.LabVIEWforum.de/index.php?act=a...st&id=32365 hat mich aber auch schon weitergebracht, werde das mal anders probieren...

Robert
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.11.2007, 13:05
Beitrag #4

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Vector Informatik: CAN Anbindung mit XL Treiber v6.4 (über DLL)
' schrieb:Hi,

???
Für "meine" Version habe ich eine Dokumentation, passend zur DLL Datei, bzw. die stellt Vector zur Verfügung. Ihre eigenen VIs wollen sie aber (verständlicherweise) verkaufen, insofern gibt es "nur" eine DLL mit Doku die die Funktionen beschreibt (siehe Link im ersten Posting). Dort ist jede Funktion mit Parametern und Rückgabewerten beschrieben. Zu den Versionen die hier im Forum sind, fehlt mir die. Dort habe ich dann eine "nackte" DLL und entsprechende VIs die aus der DLL einige (also längst nicht alle) Funktionen aufrufen. Sicher, einiges bekomme ich über die Namen raus und kann ich mir denken...
Problem: die Beispiele hier aus dem Forum laufen bei mir X Minuten stabil durch, aber nicht 24h (über Nacht). Dann stehen die Programme, bzw. die CAN Nachrichten werden nicht mehr von LV empfangen (CAN läuft weiter). Deshalb würde ich gerne die aktuelle DLL verwenden, um Fehler in irgend einer alten Version auszuschließen.
Das hier http://www.LabVIEWforum.de/index.php?act=a...st&id=32365 hat mich aber auch schon weitergebracht, werde das mal anders probieren...

Robert

Wieviel Geld will denn Vektor sehen und wieviel Geld ist eine Programmierstunde von Dir wert? Wenn ich so sehe mit was für Problemen Du kämpfst und das wahrscheinlich nachdem Du das DLL Tutorial von IchSelbst schon gelesen hast, denke ich mal dass die Library von Vektor eigentlich in jedem Fall ein Schnäppchen sein müsste.

Rolf Kalbermatter

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.11.2007, 14:37 (Dieser Beitrag wurde zuletzt bearbeitet: 20.11.2007 15:08 von Rob.)
Beitrag #5

Rob Offline
LVF-Grünschnabel
*


Beiträge: 25
Registriert seit: Apr 2007

7.1
2007
kA


Deutschland
Vector Informatik: CAN Anbindung mit XL Treiber v6.4 (über DLL)
' schrieb:Wieviel Geld will denn Vektor sehen und wieviel Geld ist eine Programmierstunde von Dir wert? Wenn ich so sehe mit was für Problemen Du kämpfst und das wahrscheinlich nachdem Du das DLL Tutorial von IchSelbst schon gelesen hast, denke ich mal dass die Library von Vektor eigentlich in jedem Fall ein Schnäppchen sein müsste.

Rolf Kalbermatter
Hallo Rolf,

Kostenpunkt liegt bei ca. 600€, sofern die Vector Lösung verwendet wird. Meine Programmierstunden kosten "nichts", da das ganze nebenbei läuft und als "Pausenfüller" dient...
Das DLL Tutorial hat mir sehr zur Einführung geholfen, es geht jedoch (meiner Meinung nach) zu wenig auf reale Bedingungen ein. Der Aufruf und Übergabe von "einfachen" Datentypen, Strings und Pointern ist ja kein Problem und läuft einwandfrei, auch bei unterschiedlichsten Datentypen und Mischung Pointer/Wert (ist ja letztendlich nur die Auswahl eines anderen Feldes/Kästchens in LabVIEW). In der realen Welt werden aber nunmal gerne structs verwendet (das bekomme ich auch noch hin), oder "gemeinerweise" halt auch gerne Zeiger auf structs (die wiederrum structs enthalten) und structs mit unterschiedlichsten Datentypen...
Ein Beispiel mit Rückgabe eines Zeigers auf ein struct mit unterschiedlichen Datentypen fehlt in dem Tutorial halt völlig. Dort wird unter 4.5.2 einfach davon ausgegangen, dass alles ein Datentyp ist und somit ein Array verwendet werden kann. Das dieser Trick funktioniert ist mir soweit auch klar (und warum er funktioniert). Praxis sieht nur leider anders aus...

Gruß,

Robert

P.S. Der Anhang lässt LV komplett abstürzen (wird natürlich erst nachdem der Treiber erfolgreich geladen wurde ausgeführt)


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

Rob Offline
LVF-Grünschnabel
*


Beiträge: 25
Registriert seit: Apr 2007

7.1
2007
kA


Deutschland
Vector Informatik: CAN Anbindung mit XL Treiber v6.4 (über DLL)
erledigt

Hatte eine "falsche" DLL verwendet (ältere Version), da ich ständig welche umkopiert und ausprobiert hatte. ARGH....
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.11.2007, 18:46
Beitrag #7

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.696
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Vector Informatik: CAN Anbindung mit XL Treiber v6.4 (über DLL)
' schrieb:oder "gemeinerweise" halt auch gerne Zeiger auf structs (die wiederrum structs enthalten) und structs mit unterschiedlichsten Datentypen...
Haste mal ein Muster? 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
21.11.2007, 08:13
Beitrag #8

Rob Offline
LVF-Grünschnabel
*


Beiträge: 25
Registriert seit: Apr 2007

7.1
2007
kA


Deutschland
Vector Informatik: CAN Anbindung mit XL Treiber v6.4 (über DLL)
' schrieb:Haste mal ein Muster? Wink
Moin,

genaue Konvention verbirgt sich in einem PDF das in obigem Link enthalten ist. Ein Beispiel daraus wäre z.B.

XLstatus xlGetDriverConfig(XLdriverConfig *pDriverConfig)

typedef struct s_xl_driver_config {
unsigned int dllVersion;
unsigned int channelCount;
unsigned int reserved[10];
XLchannelConfig channel[XL_CONFIG_MAX_CHANNELS];
} XLdriverConfig;


typedef struct s_xl_channel_config {
char name [XL_MAX_LENGTH + 1];
unsigned char hwType;
unsigned char hwIndex;
unsigned char hwChannel;
unsigned short transceiverType;
unsigned int transceiverState;
unsigned char channelIndex;
User manual
XLuint64 channelMask;
unsigned int channelCapabilities;
unsigned int channelBusCapabilities;
unsigned char isOnBus;
unsigned int connectedBusType;
XLbusParams busParams;
unsigned int driverVersion;
unsigned int interfaceVersion;
unsigned int raw_data[10];
unsigned int serialNumber;
unsigned int articleNumber;
char transceiverName [XL_MAX_LENGTH + 1];
unsigned int specialCabFlags;
unsigned int dominantTimeout;
unsigned int reserved[8];
}
XLchannelConfig;

typedef struct {
unsigned int busType;
union {
struct {
unsigned int bitRate;
unsigned char sjw;
unsigned char tseg1;
unsigned char tseg2;
unsigned char sam;
unsigned char outputMode;
}
can;
unsigned char raw[32];
}
data;
}
XLbusParams;

Da man aber die Gesamtanzahl an Bytes kennt, hole ich mir nun ein Byte Array (vgl. letztes Bild) und fummel dann z.B. jeweils 4Bytes zu einem int zusammen. Diese Datentypen verpacke ich dann in einem Cluster und gebe sie zurück.
Das obige Beispiel geht auch noch tiefer verschachtelt und mit Pointer dazwischen ;=) Da muss ich aber erst mal schauen ob das noch mit LV geht...

Gruß,

Robert
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.11.2007, 09:13
Beitrag #9

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.696
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Vector Informatik: CAN Anbindung mit XL Treiber v6.4 (über DLL)
' schrieb:Da man aber die Gesamtanzahl an Bytes kennt, hole ich mir nun ein Byte Array (vgl. letztes Bild) und fummel dann z.B. jeweils 4Bytes zu einem int zusammen.
Im Prinzip genau so.Top1

Zitat:und mit Pointer dazwischen ;=) Da muss ich aber erst mal schauen ob das noch mit LV geht...
Eigentlich nicht. Es sei denn so: Aus 4 Bytes den Pointer machen. Der Pointer wird dem MoveBlock-VI, das hier auch irgendwo angesprochen wurde, übergeben. Dieses VI holt den Zielspeicher wieder per Array, das dann wieder umgefummelt werden muss. Usw.

[*guck*]

Union-Strukt. Hmm. Auch das geht. Macht aus einem Array drei Cluster.

Schau mer mal, ob ich das übernehmen kann.

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
21.11.2007, 11:00 (Dieser Beitrag wurde zuletzt bearbeitet: 21.11.2007 11:03 von Rob.)
Beitrag #10

Rob Offline
LVF-Grünschnabel
*


Beiträge: 25
Registriert seit: Apr 2007

7.1
2007
kA


Deutschland
Vector Informatik: CAN Anbindung mit XL Treiber v6.4 (über DLL)
' schrieb:Eigentlich nicht. Es sei denn so: Aus 4 Bytes den Pointer machen. Der Pointer wird dem MoveBlock-VI, das hier auch irgendwo angesprochen wurde, übergeben. Dieses VI holt den Zielspeicher wieder per Array, das dann wieder umgefummelt werden muss. Usw.
Wieso nicht? Genauso habe ich es vor. Die Adresse liefert mir die DLL zurück. Für die 32-Bit Versionen ist die halt 32 Bit lang, für 64 Bit dementsprechend. Aber das könnte man auch hardcodieren. Solange ich weiß wieviele Bytes ich ab der Adresse lesen soll/muss, gebe ich die Anzahl an Bytes und die Adresse an dei Move Funktion und die besorgt mir dann den Inhalt. Sollte (von der Theorie zumindest) ohne Probleme machbar sein. Gibt jetzt (leider) erst mal was anderes zu tun, war gerade so schön dabei...

Für dein Tutorial: mach in die DLL ein Struct mit diversen Datentypen, evtl. auch struct im struct (oder noch mit einem union gewürzt) und mach aus den einzelnen Bytes halt wieder die Datentypen, verpack die in einen Cluster und gut ist. Eigentlich simpel (wenn man weiß wie) ;=)

Gruß,

Robert

P.S. kleines Problem habe ich noch bei anderen Stucts: Strings dürfen dort bis zu 200 Zeichen lang sein, aber auch entsprechend kürzer. Dumm nur, wenn man über Array Subset 200 Bytes abschneidet und die dann mit Byte Array to String umwandelt... Aber da sollte man auch die "Nullterminierung" des Strings im Bytearray vorher finden können.
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
Question AutomotiveEthernet mit Vector vxlapi Achim 0 3.974 09.12.2020 12:14
Letzter Beitrag: Achim
  Einbindung der Vector XL Driver Library 5.3 in LabVIEW ... nmoerchen 15 26.661 17.10.2011 07:32
Letzter Beitrag: Mik
  dll Anbindung einer Infrarotkamera florianBO 3 4.451 13.11.2009 15:48
Letzter Beitrag: abrissbirne
  Einbindung der Vector driver libary 6.7 in LabVIEW Langen8 3 7.500 31.07.2009 14:31
Letzter Beitrag: rolfk
  DLL-Anbindung lösen astraios 3 4.858 18.04.2007 11:09
Letzter Beitrag: holterpolter
  dll-Anbindung obrueck 1 8.130 10.02.2005 11:07
Letzter Beitrag: Mario W.

Gehe zu: