LabVIEWForum.de
Einbindung der Vector XL Driver Library 5.3 in LabVIEW ... - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: DLL & externer Code (/Forum-DLL-externer-Code)
+---- Thema: Einbindung der Vector XL Driver Library 5.3 in LabVIEW ... (/Thread-Einbindung-der-Vector-XL-Driver-Library-5-3-in-LabVIEW)

Seiten: 1 2


RE: Einbindung der Vector XL Driver Library 5.3 in LabVIEW ... - Azby Cxdw - 09.08.2011 11:56

Michael

Vielen Dank !!


RE: Einbindung der Vector XL Driver Library 5.3 in LabVIEW ... - Mik - 11.10.2011 14:04

Moin !

Ich beschäftige mich momentan auch mit der Einbindung der Driver Library und hänge momentan schon relativ weit vorne Confused .
Die vorhandenen VIs haben schon sehr geholfen.
Mit der alten Driver Library (4.3 ncd) wurde hier schon ein Projekt für den CAN Bus realisiert.
Nun soll ein MOST Bus angesteuert werden und dafür wird die XL Library benötigt.

Ich hänge momentan beim Punkt xlOpenPort.
Baue ich die Call Library Function nach der Syntax aus der Anleitung auf meckert mein Labview (leider noch 7.0) und sagt das ein Ausnahmefehler aufgetreten ist.
Benutze ich jetzt das hier gepostete VI gibt es keine Fehlermeldung. Es wird aber leider kein Port geöffnet.
Das was ich nicht verstehe ist, dass für mich die verwendete Syntax, von dem VI wo kein Fehler auftritt, augenscheinlich von der in der Anleitung abweicht.
Zwei AccessMask und ein Array Parameter.
Da die ganze Thematik mit dem einbinden von dll´s für mich noch sehr neu ist, würde ich mich freuen wenn irgendwer eine Idee hat.

Vielen Dank schon mal im Voraus.

Michael Westphal


RE: Einbindung der Vector XL Driver Library 5.3 in LabVIEW ... - rolfk - 13.10.2011 09:40

Es tut mir wirklich leid aber ich habe die Vector Software nicht installiert und habe auch kein Interesse daran das zu tun. Deshalb wäre es sehr nützlich wenn man neben den VIs auch die Header Files oder den entsprechenden Part davon publiziert. Manchmal sind die Header Files auch ungenügend und braucht man die Funktionsbeschreibung aus dem Manual dazu.


RE: Einbindung der Vector XL Driver Library 5.3 in LabVIEW ... - Mik - 13.10.2011 10:28

So dann stell ich die header und dll, sowie die Manual im Anhang zur vefügung.
Das Driver Paket kann man aber auch kostenlos, ohne Regestrierung, bei Vector downloaden (2,8 MB)
Vector XLDriverPaket

Habe jetzt eine Mögliche Ursache gefunden. Habe wie geschreiben hier nur die LabVIEW Version 7.0 und einige Werte benötigen
64Bit Werte. LabVIEW 7.0 unterstützt aber nur 32Bit Werte bei den Parametern.
Da ich nicht wirkllich viel Erfahrung mit dll´s und der Einbindung in LabVIEW habe habe ich diesen Punkt
in der header Datei übersehen. Es werden auch nur zwei 64 Bit Werte verwendet (Access Mask und Timestamp).


RE: Einbindung der Vector XL Driver Library 5.3 in LabVIEW ... - rolfk - 14.10.2011 11:56

(13.10.2011 10:28 )Mik schrieb:  So dann stell ich die header und dll, sowie die Manual im Anhang zur vefügung.
Das Driver Paket kann man aber auch kostenlos, ohne Regestrierung, bei Vector downloaden (2,8 MB)
Vector XLDriverPaket

Habe jetzt eine Mögliche Ursache gefunden. Habe wie geschreiben hier nur die LabVIEW Version 7.0 und einige Werte benötigen
64Bit Werte. LabVIEW 7.0 unterstützt aber nur 32Bit Werte bei den Parametern.
Da ich nicht wirkllich viel Erfahrung mit dll´s und der Einbindung in LabVIEW habe habe ich diesen Punkt
in der header Datei übersehen. Es werden auch nur zwei 64 Bit Werte verwendet (Access Mask und Timestamp).

Also da sind zwei Dinge. Die von Dir erwähnten AccessMasks die 64 bit sind und nicht 32 bit, und auch der xlInterfaceVersion Parameter der gemäss Header unsigned int ist und nicht unsigned short wie in Deinem VI. Das Letzte sollte wohl nicht das Problem sein, das Erste ist aber ziemlich problematisch. Da LabVIEW 7 keine 64 Bit Integer unterstützt kann man das eventuell mit etwas Magic aber doch noch hintricksen.

Für die permissionMask ist's noch relativ einfach da dieser als Referenz übergeben wird. Man macht hier mal einen Cluster, der zwei 32 bit Integers enthält und übergibt den als Parameter. Dazu muss der Parameter auf Adapt to Type gesetzt werden. Für die accessMask wirds etwas trickier. Da dieser by Value übergeben wird, man in LabVIEW aber keine Cluster by Value übergeben kann, muss man eine andere Eigenschaft der Parameterübergabe auf dem Stack kennen. Ein Cluster der by Value übergeben wird, wird effektiv Element für Element auf den Stack geschoben. Also muss man die accessMask in zwei 32 Bit Parameter aufteilen. Man übergibt also effektiv einen 32 bit Integer AccessMaskLo und dann einen anderen AccessMaskHi, und danach den Cluster als Adapt To Type. Das sollte dann schon funktionieren.

Das lässt dann auch gleich erkennen warum es nun falsch geht. Effektiv interpretiert die Funktion den Parameter accessMask nun als Low 32 bit Integer und den Pointer auf permissionMask als High 32 bit Integer der AccessMask. Danach wird die QueueSize als Pointer auf einen 64 bit permissionMask Wert interpretiert, usw. Dass das nicht sofort crasht ist nur ein unglücklicher Zufall.


RE: Einbindung der Vector XL Driver Library 5.3 in LabVIEW ... - Mik - 17.10.2011 07:32

Vielen Dank für die Hilfe. Auf diese Lösung wäre ich als Anfänger nie gekommen.
Wir haben uns jetzt aber hier entschieden auf die neuste LabVIEW Version zu wechseln.
Die Initialisierung des Treibers ist ja identisch mit der von CAN. Danach wird es für MOST aber anders.
Ich habe noch keine Beispiele gefunden aber ich hoffe, dass ich mit Hilfe des Flussdiagramms aus der Anleitung das in LabVIEW umgesetzt bekomme.