Die MATLAB/Octave Bindings ermöglichen es Bricks und Bricklets aus selbst erstellen MATLAB/Octave Skripten heraus zu steuern. Die ZIP Datei für die Bindings beinhaltet:
matlab/Tinkerforge.jar
, eine vorkompilierte Java Bibliothek für MATLABmatlab/source/
den Quelltext für Tinkerforge.jar
für MATLABmatlab/examples/
die MATLAB Beispiele für alle Bricks und Brickletsoctave/Tinkerforge.jar
, eine vorkompilierte Java Bibliothek für Octaveoctave/source/
den Quelltext für Tinkerforge.jar
für Octaveoctave/examples/
die Octave Beispiele für alle Bricks und BrickletsDie MATLAB/Octave Bindings basieren auf den Java Bindings.
Bevor die Bindings mit MATLAB oder Octave benutzt werden können müssen sie installiert werden.
Die Java Unterstützung in MATLAB ist normalerweise standardmäßig aktiv. Dies kann mit folgendem Befehl in MATLAB getestet werden:
version -java
Falls dieser Befehl keine Java Unterstürzung zeigt, dann siehe die MATLAB Dokumentation darüber wie Java für MATLAB eingerichtet werden kann.
Um die Bindings verwenden zu können muss MATLAB die Tinkerforge.jar
Datei
finden können. Diese kann auf verschiedene Art und Weisen erreicht werden.
Die MATLAB Dokumentation
beschreibt alle Art und Weisen.
Das empfohlene Vorgehen ist die Bindings dem Preferences-Ordner hinzuzufügen.
Starte MATLAB und führe folgenden Befehl aus, um den Pfad zum Preferences-Ordner auszugeben:
prefdir(1)
Preferences-Ordner Beispielpfade:
C:\Users\<user>\AppData\local\MathWorks\MATLAB\R2016a
/home/<user>/.matlab/R2016a
/Users/<user>/.matlab/R2016a
Kopiere die Tinkerforge.jar
Datei vom matlab/
Ordner in den
Preferences-Ordner. Dann muss die Tinkerforge.jar
Datei zu MATLABs
Class Path hinzugefügt werden. Dazu eine Datei namens javaclasspath.txt
im Preferences-Ordner anlegen bzw. bearbeiten und den absoluten Pfad zur
Tinkerforge.jar
Datei als neue Zeile hinzufügen. Zum Beispiel:
C:\Users\<User>\AppData\local\MathWorks\MATLAB\R2016a\Tinkerforge.jar
/home/<User>/.matlab/R2016a/Tinkerforge.jar
/Users/<User>/.matlab/R2016a/Tinkerforge.jar
Start MATLAB neu und führe folgenden Befehl aus, er sollte die
Tinkerforge.jar
Datei mit auflisten:
javaclasspath
Die Java Bindings können jetzt genutzt werden.
Die Verfügbarkeit der Java Unterstützung in Octave hängt von der Octave Version ab. Bis Version 3.6 einschließlich war die Java Unterstürzung ein einiges Modul. Ab Version 3.8 ist sie standardmäßiger Teil von Octave.
Unter Linux muss die Java Unterstützung für Octave 3.6 separat installiert werden:
sudo apt-get install octave octave-java
Für Windows empfehlen wir die MinGW Variante von Octave. In dieser Variante ist die Java Unterstützung standardmäßig aktiviert. Eine Anleitung wie Octave für Windows installiert werden kann findet sich im Octave Wiki.
Die Verfügbarkeit der Java Unterstützung kann mit folgendem Befehl in Octave getestet werden:
octave_config_info("features").JAVA
Die Bindings stehen in unserem APT Repository für Debian basierte Linux Distributionen bereit. Zuerst das APT Repository einrichten dann die Bindings installieren:
sudo apt install octave-tinkerforge
Die Bindings JAR Datei ist hier installiert:
/usr/share/octave/packages/tinkerforge/tinkerforge.jar
Um die Bindings in Octave verfügbar zu machen muss die Bindings JAR Datei zu Octaves Class Path hinzugefügt werden werden. Zum Beispiel durch folgenden Octave Befehl unter Debian basierte Linux Distributionen:
javaaddpath("/usr/share/octave/packages/tinkerforge/tinkerforge.jar");
Alternativ muss die Tinkerforge.jar
Datei aus dem octave/
Ordner der
ZIP Datei zu Octaves Class Path hinzugefügt werden werden. Zum Beispiel durch
folgenden Octave Befehl unter Windows:
javaaddpath("C:\\Absoluter\\Pfad\\zum\\Octave\\Tinkerforge.jar");
Und durch folgenden Octave Befehl unter Linux:
javaaddpath("/Absoluter/Pfad/zum/Octave/Tinkerforge.jar");
Damit diese Änderung dauerhaft ist kann der Befehlt unter Linux in folgenden Datei eingetragen werden:
~/.octaverc
Falls diese Datei noch nicht existiert kann sie einfach angelegt werden. Nach Änderungen an dieser Datei muss Octave neugestartet werden.
Um ein MATLAB/Octave Beispiel testen zu können, müssen zuerst Brick Daemon und Brick Viewer installiert werden. Brick Daemon arbeitet als Proxy zwischen der USB Schnittstelle der Bricks und den API Bindings. Brick Viewer kann sich mit Brick Daemon verbinden und gibt Informationen über die angeschlossenen Bricks und Bricklets aus.
Als Beispiel werden wir das Stepper Brick Konfigurationsbeispiel ausführen.
Dazu die matlab_example_configuration.m
Datei aus dem
matlab/examples/brick/stepper/
Ordner in MATLAB öffnen.
Am Anfang des Beispiels ist mit HOST
und PORT
angegeben unter welcher
Netzwerkadresse der Stepper Brick zu erreichen ist. Ist er lokal per USB
angeschlossen dann ist localhost
und 4223 richtig. Als UID
muss die
UID des angeschlossen Stepper Bricks angegeben werden, diese kann über den
Brick Viewer ermittelt werden:
HOST = 'localhost';
PORT = 4223;
UID = 'XXYYZZ'; % Change XXYYZZ to the UID of your Stepper Brick
Dann ist auch schon alles bereit, um dieses Beispiel testen zu können.
Als Beispiel werden wir das Stepper Brick Konfigurationsbeispiel ausführen.
Dazu die octave_example_configuration.m
Datei aus dem
octave/examples/brick/stepper/
Ordner in Octave öffnen.
Am Anfang des Beispiels ist mit HOST
und PORT
angegeben unter welcher
Netzwerkadresse der Stepper Brick zu erreichen ist. Ist er lokal per USB
angeschlossen dann ist localhost
und 4223 richtig. Als UID
muss die
UID des angeschlossen Stepper Bricks angegeben werden, diese kann über den
Brick Viewer ermittelt werden:
HOST = "localhost";
PORT = 4223;
UID = "XXYYZZ"; % Change XXYYZZ to the UID of your Stepper Brick
Dann ist auch schon alles bereit, um dieses Beispiel testen zu können.
Die Octave Beispiel sind Function Dateien. Um sie direkt von der Kommandozeile ausführen zu können, müssen sie zu Script Dateien erweitert werden. Dazu einfach am Ende des Beispiels die Beispiel Funktion aufrufen:
function octave_example_configuration()
% ...
end
octave_example_configuration(); % Add this line
Callbacks funktioneren nicht in Octave 3.8 oder neuer (gelöst)
In Bindings Version 2.0.13 oder älter in Octave 3.8 funktioniert die Invoke
Funktion nicht und wirft eine java.lang.UnsatisfiedLinkError
Exception.
Die Invoke Funktion erlaubt es von Java aus Octave Funktionen aufzurufen.
Dies wird von den Bindings für Callbacks benutzt. Dies bedeutet, dass in
Octave 3.8 keine Callbacks verwendet werden können. Eine Diskussion
auf der Octave Mailing Liste hat zu keinem Erfolg geführt.
Das Problem ist sein Bindings Version 2.0.14 behoben.
Links zur API Referenz der IP Connection, Bricks und Bricklets sowie die Beispiele aus der ZIP Datei der Bindings sind in der folgenden Tabelle aufgelistet. Anleitungen für weiterführende Projekte finden sich im Abschnitt über Kits.