Der Program Tab ist der wichtigste Teil in der Brick Viewer Ansicht des RED Bricks. Er dient dazu Programme hochzuladen, zu modifizieren und zu verwalten.
Wenn der RED Brick das erste mal gestartet wird ist die Programmliste leer. Mit drei Buttons unter der Programmliste können folgende Aktionen durchgeführt werden:
Nachdem das erste eigene Programm hochgeladen wurde, kann dieses ausgewählt werden. Auf der rechten Seite werden dann Informationen zum Programm angezeigt. Dazu gehört die Programm-Konfiguration, die geändert werden kann und die Logs des Programms.
Ein eigenes Programm kann auf den RED Brick in 8 einfachen Schritten hochgeladen werden:
Die hierarchische Struktur die hier definiert wird, wird eins-zu-eins auf dem RED Brick genutzt. Wenn als Beispiel eine kleine Webseite, die mit Python/Flask geschrieben wurde, mit folgender Struktur hochgeladen werden soll
und sowohl index.py
als auch die beiden Ordner im Root Verzeichnis seien
sollen, muss als erstes die index.py
mit Add Files hinzugefügt werden.
Anschließend muss jedes Unterverzeichnis einzeln mit Add Directory
hinzugefügt werden.
Jedes "Add" fügt etwas zum Root Verzeichnis des RED Brick Programms hinzu.
Je nach gewählter Sprache können verschiedene Dateien hochgeladen werden:
.js
, .pl
, .php
, .py
, .rb
).jar
, .class
, .exe
)In Schritt 3 werden die Compiler/Interpreter Einstellungen, der in Schritt 1 spezifizierten Sprache, vorgenommen. Dieser Schritt ist nachfolgend für jede Sprache dokumentiert.
Die Tinkerforge C/C++ Bindings sind auf dem RED Brick vorinstalliert
(kompiliert als Bibliothek libtinkerforge.so
, verfügbar in /usr/lib/
).
Die Header sind verfügbar in /usr/include/tinkerforge
. Es kann direkt gegen
die Bibliothek gelinkt werden (siehe das nachfolgende Beispiel).
Start Mode: Aktuell ist nur Executable verfügbar.
Executable: Name der ausführbaren Datei, die aufgerufen werden soll. Diese ist entweder eine Cross-Kompilierte Datei, die direkt mit hochgeladen wurde oder es ist der Name der ausführbaren Datei, die während des Kompilierens erstellt wird.
Compile From Source: Wird diese Checkbox aktiviert, so wird der Code nach dem
Hochladen kompiliert. Eine Makefile
muss im Projekt enthalten sein, damit
diese Option genutzt werden kann. Nachfolgend eine Beispiel-Makefile für ein
kleines Projekt, das die Tinkerforge Bindings benutzt und die Datei
example.c
kompiliert:
Download (Makefile), Download (example.c)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # Defines
CC=g++
CFLAGS=-c -Wall -I/usr/include/tinkerforge
LIBS=-ltinkerforge -lpthread
EXE=example
SOURCES=example.c
OBJECTS=$(SOURCES:.c=.o)
# Build Rules
all: $(SOURCES) $(EXE)
.c.o:
$(CC) $(CFLAGS) $< -o $@
$(EXE): $(OBJECTS)
$(CC) $(OBJECTS) -o $(EXE) $(LIBS)
clean:
rm -f *.o $(EXE)
|
Working Directory: Spezifiziert das
Arbeitsverzeichnis
des Programms. Dieser Pfad ist relativ zum Root Verzeichnis des Programms.
Typischerweise kann dies bei .
belassen werden.
Make Options: Wenn vom Source kompiliert wird, können hier make Parameter angegeben werden.
Die C# Tinkerforge.dll
ist in /usr/lib/
verfügbar und wird daher von Mono
direkt gefunden. Jedes C# Programm, dass die Tinkerforge.dll
als Referenz nutzt,
kann also ohne Angabe der Tinkerforge.dll
im vorherigen Schritt (Schritt 2)
kompiliert werden.
Mono Version: Aktuell ist nur eine Mono Version installiert.
Start Mode: Aktuell ist nur Executable verfügbar.
Executable: Wähle die ausführbare .NET Datei, die in Schritt 2 hinzugefügt
wurde. Diese Datei hat typischerweise die Endung .exe
.
Die ausführbare Datei wird mit Mono ausgeführt. Die Datei kann auch unter Windows mit Visual Studio kompiliert und auf dem RED Brick mit Mono ausgeführt werden, dabei muss allerdings darauf geachtet werden, dass keine Windows spezifischen Bibliotheken genutzt werden, die auf dem RED Brick nicht verfügbar sind.
Working Directory: Spezifiziert das
Arbeitsverzeichnis
des Programms. Dieser Pfad ist relativ zum Root Verzeichnis des Programms.
Typischerweise kann dies bei .
belassen werden.
Mono Options: Hier können Optionen angegeben werden, die dem Mono JIT Compiler übergeben werden.
Start Mode: Aktuell wird nur Executable unterstützt.
Executable: Der Name der ausführbaren Datei, die ausgeführt werden soll. Dies ist entweder der Name der cross-kompilierten ausführbaren Datei, die hochgeladen wurde, oder der Name der ausführbaren Datei die während des Kompilieren erstellt wird.
Compile From Source: Wird diese Checkbox aktiviert, so wird der Code nach dem Hochladen kompiliert. Als Build System kann entwerder fpcmake oder lazbuild (benötigt Image >= 1.7 und Brick Viewer >= 2.2.6) verwendet werden:
Für fpcmake muss eine Makefile.fpc
enthalten sein, damit
diese Option genutzt werden kann. Eine Beispiel-Makefile für ein kleines
Projekt, das die Tinkerforge Bindings und die Datei Example.pas
als
Hauptmodul nutzt, sieht wie folgt aus:
[target]
programs=Example
[require]
packages=tinkerforge
Für lazbuild muss eine Lazarus Projektdatei (*.lpi
) enthalten sein,
damit diese Option genutzt werden kann.
Working Directory: Spezifiziert das
Arbeitsverzeichnis
des Programms. Dieser Pfad ist relativ zum Root Verzeichnis des Programms.
Typischerweise kann dies bei .
belassen werden.
Make/Lazbuild Options: Wenn von Source kompiliert wird können hier make/lazbuild Parameter übergeben werden.
Die Tinkerforge.jar
Java Bindings sind unter
/usr/tinkerforge/bindings/java/
installiert. Die Datei ist zum Class Path
hinzugefügt, so dass die Tinkerforge Klassen nur importiert werden müssen.
Z.B. mittels import com.tinkerforge.IPConnection;
.
.
belassen werden.Client-Side (Browser): Wenn Client seitiges JavaScript genutzt wird, muss
nichts konfiguriert werden. Es mussten nur die .html
Dateien in Schritt 2
zuvor hinzugefügt werden, die dann über das
RED Brick Web Interface verfügbar sind.
Tinkerforge.js
kann genutzt werden mittels:
<script src="/Tinkerforge.js" type='text/javascript'></script>
Server-Side (Node.js): Wenn Node.js genutzt wird können der Start Mode und
weitere Optionen gesetzt werden. Die Tinkerforge Bindings sind verfügbar und
können mittels require('tinkerforge')
importiert werden.
.
belassen werden.Der Java Pfad zur Tinkerforge.jar
ist bereits zur .octaverc
hinzugefügt worden.
Das eigene Programm kann daher annehmen, dass javaaddpath("Tinkerforge.jar")
bereits mit dem korrekten Verzeichnis aufgerufen wurde.
.
belassen werden.Die Tinkerforge Bindings sind für Perl ebenfalls verfügbar. Nutze die use
Direktive um sie zu importieren, z.B: use Tinkerforge::IPConnection;
.
.
belassen werden.Die Tinkerforge Bindings wurden mittels PEAR
installiert und sind verfügbar.
Mittels require_once
können diese importiert werden, z.B.:
require_once('Tinkerforge/IPConnection.php');
.
.
belassen werden.Die Tinkerforge Bindings wurden mittels
pip installiert und stehen zur
Verfügung. Die Bindings können mit der normalen import
Direktive eingebunden
werden, z.B.: from tinkerforge.ip_connection import IPConnection
.
.
belassen werden.Die Tinkerforge Bindings sind mittels gem
installiert und daher direkt
verfügbar. Die require
Anweisung kann genutzt werden um diese zu
importieren, z.B. require 'tinkerforge/ip_connection'
.
.
belassen werden.Die Shell Bindings liegen unter /usr/local/bin
, was im Pfad liegt. Somit
kann in einem Shellskript direkt tinkerforge
ohne jeden Prefix aufgerufen
werden.
.
belassen werden.Die Tinkerforge.dll
ist unter /usr/lib/
für Visual Basic .NET verfügbar und
kann direkt von Mono gefunden werden. Jedes Visual Basic .NET Programm, dass die
Tinkerforge.dll
als Referenz nutzt, kann also ohne Angabe der Tinkerforge.dll
im
vorigen Schritt (Schritt 2) kompiliert werden.
Mono Version: Aktuell ist nur eine Mono Version installiert.
Start Mode: Es wird momentan nur Executable unterstützt.
Executable: Wähle die ausführbare .NET Datei von den in Schritt 2 zuvor
gewählten Dateien. Die Endung ist typischerweise .exe
.
Die ausführbare Datei wird mit Mono ausgeführt. Die Datei kann unter Windows zuvor mit Visual Studio kompiliert worden sein und anschließend auf dem RED Brick mit Mono ausgeführt werden. Dabei muss allerdings darauf geachtet werden, dass keine Windows spezifischen Bibliotheken genutzt werden, die auf dem RED Brick nicht verfügbar sind.
Working Directory: Spezifiziert das
Arbeitsverzeichnis
des Programms. Dieser Pfad ist relativ zum Root Verzeichnis des Programms.
Typischerweise kann dies bei .
belassen werden.
Mono Options: Hier können Optionen angegeben werden, die dem Mono JIT Compiler übergeben werden.
Arguments: Das Programm wird mit den angegebenen Argumenten aufgerufen
Dabei ist zu beachten, dass Argumente nicht escaped werden müssen. Wenn zum Beispiel ein Programm mittels:
./my_program --setting value1 value2
aufgerufen werden soll, so müssen drei Argumente --settings, value1 und value2 einzeln in der Liste angegeben werden.
Wenn nur ein Argument mit dem Inhalt --settings value1 value2 übergeben wird ist dies gleichbedeutend mit folgendem Programmaufruf:
./my_program --settings\ value1\ value2
Environment: Die Umgebungsvariablen, die hier gesetzt werden, sind für das Programm verfügbar. Umgebungsvariablen, die zum Programmstart notwendig sind, sind bereits voreingestellt.
Falls dein Programm ein GUI hat, dann muss die Umgebungsvariable DISPLAY auf dem Wert :0 gesetzt werden, damit dein Programm ein Fenster auf dem Desktop anzeigen kann.
Falls du dir unsicher bist was diese bedeuten, ist es sehr wahrscheinlich das du hier nichts anpassen musst.
In vielen Fällen können die Einstellungen hier so bleiben wie sie sind. Wenn dir die Begriffe Standard Input und Standard Output das erste mal begegnen, kannst du vermutlich einfach Next klicken.
Mode Never: Der Scheduler des RED Bricks wird nicht benutzt. Das Programm kann nur manuell im Program Tab des Brick Viewers gestartet werden.
Mode Always: Der Scheduler versucht immer das Programm am laufen zu halten. Wenn das Programm beendet wird, so wird es direkt wieder gestartet. Dies ist insbesondere für Kontrollprogramme sinnvoll, die permanent laufen sollen.
Mode Interval: Hier kann ein Intervall (in Sekunden) definiert werden im das Programm ausgeführt werden soll.
Mode Cron: Nutze cron um die Programmausführung zu planen. Cron ist ein zeitbasierter Aufgaben Scheduler.
Damit kann man zum Beispiel die Ausführung eines Programms planen, das
00 20 * * *
00 09-18 * * 1-5
* 12 16 * Mon
ausgeführt wird.
Wie man sieht können auch sehr komplizierte Aufgaben mit Cron erledigt werden. Es gibt eine große Menge an Cron Tutorials im Internet.
Zur Nutzung von Cron ist die aktuelle Uhrzeit notwendig. Der RED Brick verfügt aber über keine Uhr, die weiter läuft wenn der Brick heruntergefahren wurde. Verfügt der RED Brick eine Verbindung zum Internet, so werden Datum und Uhrzeit neu gesetzt (mittels NTP). Sie können auch manuell im Date/Time Abschnitt des Settings Tab gesetzt werden. Alternativ kann auch das GPS Bricklet genutzt werden um die Uhrzeit mittels GPS zu synchronisieren.
Mode Once After Upload: Der Scheduler führt das Programm nur einmal nach dem Hochladen aus.
Continue After Error: Wenn diese Checkbox nicht aktiviert ist, dann stoppt der Scheduler wenn das Programm mit einem Fehler beendet wurde. Wenn diese Checkbox aktiviert ist, dann werden Fehler ignoriert.
Die Seite zeigt eine Zusammenfassung der zuvor gewählten Konfiguration. Falls Probleme auftreten und es Fragen gibt hilft die Angabe dieser Zusammenfassung.
Im letzten Schritt kann der Start Upload Button geklickt werden um die ausgewählten Dateien hochzuladen und die Konfiguration zu übernehmen. Das Programm wird direkt nach dem Hochladen oder verzögert, je nach dem gewählten Scheduling in Schritt 6, ausgeführt.