Serie LabVIEW in der Praxis Mit Java und einer LabVIEW-DLL Signale erfassen

Autor / Redakteur: Dr. Jürgen Wünscher* / Dipl.-Ing. (FH) Hendrik Härter

Mit der Programmierplattform Java hat der Anwender keine Möglichkeit, Signale zu erfassen. Eine Lösung liegt im Einsatz von LabVIEW. Java kann durch den Aufruf einer selbstentwickelten DLL Signale via LabVIEW auslösen. Die Daten der Signalerfassung werden von Java übernommen, verarbeitet und visualisiert. Die Rückübertragung des Ergebnisses von Java nach LabVIEW ist ebenfalls möglich.

Anbieter zum Thema

Der direkte Aufruf einer LabVIEW-DLL aus Java heraus ist nur mit Einschränkungen möglich. Ursachen dafür sind die sich aus dem Java Native Interface (JNI) ergebenden Anforderungen an die DLL. Verschiedene Tests haben gezeigt, dass es möglich ist, eine LabVIEW-DLL direkt aufzurufen, wenn der Aufruf ohne Werteübergabe an das Labviewprogramm auskommt. Die Werterückgabe über den Returnwert ist auf einfache Variable wie „integer“ oder „float“ beschränkt.

Eine C++-DLL als Lösung

Bild 1: VI zum Testen des direkten DLL-Aufrufs aus Java (Archiv: Vogel Business Media)

Benötigt die Labview-DLL eine Werteübergabe, kann der Aufruf der LabVIEW-DLL über den Umweg einer C++-DLL umgesetzt werden. Diese DLL wird von Java aufgerufen, beachtet die Anforderungen des JNI und muss ihrerseits die Labview-DLL aufrufen.

Bild 2: Java-Programm zum Aufruf der LabVIEW-DLL (Archiv: Vogel Business Media)

Der direkte Aufruf ist für Aufgaben, bei denen die Übergabe der Werte über eine Datei erfolgen kann und/oder es auf die Anzeige des Frontpanels von LabVIEW ankommt, dennoch interessant. Das für den Test eingesetzte VI und das aufrufende Java-Progamm sind in den Bildern 1 und 2 dargestellt.

Erzeugen einer LabVIEW-DLL

Bild 3: Die Schritte zeigen, wie das Frontpanel in der DLL angezeigt wird (Archiv: Vogel Business Media)

In Labview ist ein Projekt mit den VIs anzulegen, aus denen die DLLs erzeugt werden sollen. Soll während der DLL-Abarbeitung das Frontpanel des VI angezeigt werden, ist dies vorher einzustellen. Die hierfür notwendigen Schritte sind in Bild 3 dargestellt.

Bild 4: Ein- und Ausgabeparameter an „Anschluß“ anschließen (Archiv: Vogel Business Media)

Für den Datenaustausch müssen vorher die Ein- oder Ausgabewerte richtig eingestellt werden. Durch einen Klick mit der rechten Maustaste auf das VI-Icon (Bild 4) öffnet sich ein entsprechendes Dialogfeld, um den benötigten „Anschluss“ herzustellen. Abschließend muss das Projekt mit „Speichern“ und „Projekt speichern“ gesichert werden.

Mit Java eine DLL erzeugen

Bild 5: Die letzten Schritte bis zur fertigen DLL (Archiv: Vogel Business Media)

Jetzt kann mit dem eigentlichen Erzeugen der DLL begonnen werden. Bild 5 zeigt die dazu wesentlichen Schritte. Der durch Unterstriche strukturierte Name des Funktionsprototypen „Java_nativeTest001_integerIO“ ergibt sich aus den Aufrufkonventionen innerhalb von Java.

Wurde die Datei erzeugt, muss die DLL gemeinsam mit dem erzeugten LIB-File und dem data-Verzeichnis in einem Verzeichnis stehen, auf das Java Zugriff hat. Beim Testen ist zu sehen, dass der an Labview übergebene Wert falsch interpretiert wird. Der Rückgabewert ist jedoch richtig.

Soundaufnahme und –wiedergabe mit LabVIEW

Bild 6: Blockdiagramme für die Soundaufnahme- und wiedergabe (Archiv: Vogel Business Media)

Als komplexeres Beispiel für einen Datenaustausch zwischen Java und Labview über eine C++-Brücke wurde die Soundaufnahme und –wiedergabe in Labview ausgewählt. Die Programme werden von Java durch den Aufruf jeweils einer C++-DLL, die ihrerseits die LabVIEW-DLL aufruft, gestartet.

Bild 7: Prototypen für Soundaufnahme- und -wiedergabe-DLL (Archiv: Vogel Business Media)

Die Bilder 6 und 7 zeigen die Blockdiagramme der LabVIEW-Programme und die Definition der VI-Prototypen zum Erzeugen der DLLs. Als simulierte Signalverarbeitung durch Java wurde beim Test das übertragene Abtastintervall verändert, sodass bei der Wiedergabe eine Frequenzveränderung hörbar wird.

Bild 8: Code der zwischen Java und LabVIEW geschalteten C++-DLL (Archiv: Vogel Business Media)

Der Name des Funktionsprototypen kann hier einfacher vergeben werden, da die Bindung an Java durch die C++-DLLs realisiert wird. Ihre Codes sind in Bild 8 wiedergegeben.

[1] LabVIEW, Getting Started with Labview, August 2005.

[2] LabVIEW, LabVIEW Fundamentals, August 2005.

[3] Borland C++, G. Renner, Markt+Technik Verlag, 1992; ISBN 3-87791-177-3.

[4] Core Java 2; Volume I und II; C.S.Horstmann, G.Cornell, Markt+Technik Verlag, 2002; ISBN 3-8272-6228-3 .

(ID:269115)