NXC unter Linux - Hintergrundwissen und Installation
Programme
Für den Schulbetrieb in der Sekundarstufe I (spez. Jg. 9 und 10) bietet sich die Programmierung mit Not eXactly C (NXC) an.
- Den Compiler für NXC bekommt man unter http://bricxcc.sourceforge.net/nbc/
- Für AMD64-Linuxe kann man gemäß der Anleitung unter http://wiki.ubuntuusers.de/Mindstorms zum passenden Compiler kommen.
- Mittlerweile kann man mit nbc, dem NXC-Compiler, die übersetzten
NXC-Programme mit nbc auch unter Linux
und OSX auf den NXT-Baustein übertragen. Man braucht also dazu
keine weiteren Programme.
-
-
USB: Im Schulbetrieb ist eine
Übertragung mittels USB wohl angesagt. Die Übertragung ist sehr sicher
und schnell, kostet nichts extra und ist bei neuen PCs mit USB-Anschluss
in der Frontblende eine recht komfortable Sache.
- So übersetzt man ein Programm:
nbc 1_simple.nxc -O=1_simple.rxe - So überträgt man es per USB auf den Baustein:
nbc -S=USB -d -b simple.rxe - So macht man beides auf einmal:
nbc -S=USB -d 1_simple.nxc
- So übersetzt man ein Programm:
-
- BLUETOOTH: Einmal korrekt installiert, funktioniert Bluetooth unter Linux im Gegensatz zu Windows XP (bei mir!) absolut ohne Probleme! Im Schulbetrieb ist es wohl eher was für den Lehrerrechner oder für Laptops mit integriertem Bluetoothadapter. Ich habe Angst, das die kleinen Teile sonst verloren gehen... ;-( - Wie die Bluetootheinrichtung geht, ist unter http://wiki.ubuntuusers.de/Mindstorms beschrieben.
-
USB: Im Schulbetrieb ist eine
Übertragung mittels USB wohl angesagt. Die Übertragung ist sehr sicher
und schnell, kostet nichts extra und ist bei neuen PCs mit USB-Anschluss
in der Frontblende eine recht komfortable Sache.
Installation
Bei der Installation sind noch einige Dinge zu beachten:-
Aller Wahrscheinlichkeit sind die Rechte für den USB-Bus noch nicht korrekt gesetzt. Abhilfe bringt der Vorschlag von http://bricxcc.sourceforge.net/nbc/doc/ einige Dateien unter /etc gezielt anzulegen bzw. zu ergänzen. Die entsprechenden Dateien befinden sich unter obiger Adresse auch zum Download. Wirklich geholfen hat das bei unserer Netzwerkinstrallation leider nicht. In unserem Schulnetzwerk sind die LDAP-Benutzer nicht mal eben einer Gruppe zuzuordnen, bei lokalen Usern geht das ungleich leichter. Folgende Regeln bringen es aber:
# Lego NXT - /etc/udev/rules.d/70-lego.rules - OK fuer Ubuntu 10.04
oder
BUS=="usb", SYSFS{idVendor}=="0694", MODE="0666"
BUS=="usb", SYSFS{idVendor}=="03eb", MODE="0666"
# Lego NXT - /etc/udev/rules.d/70-lego.rules - OK fuer Ubuntu 12.04
SUBSYSTEM=="usb", ATTRS{idVendor}=="0694", MODE="0666""
SUBSYSTEM=="usb", ATTRS{idVendor}=="03eb", MODE="0666"
- Eine USB-Direktverbindung sollte mit den obigen Angaben problemlos funktionieren. Bluetoothgeräte müssen dagegen erst "gepairt" werden, damit sie miteinander kommunizieren können. Office-Hilfen> hierzu gibt es auf folgenden Seiten:
- Grundvoraussetzung: Auf dem NXT-Baustein muss Bluetooth aktiviert sein! Das erkennt man an
einem Bluetoothzeichen links oben im NXT-Display.
- Grundlegende (deutschsprachige) Anweisungen:
http://wiki.ubuntuusers.de/Mindstorms http://lukas.internet-freaks.net/nxtmanager.php
- Einrichtung unter UBUNTU:
http://wiki.ubuntuusers.de/Bluetooth/Einrichtung
- Die Paringzeile ist bei mir unter Ubuntu 7.04 die, die in der
UBUNTU-Anleitung (siehe oben) aufgeführt ist. Wichtig ist auch, dass man auch
vom NXT den PC suchen lassen muss. Komisch ist, dass auch nach 30 Sekunden
Wartezeit der Eingabeprompt nicht wieder zu sehen war und beim NXT "Line is
busy" zu lesen ist. Gut ist aber, dass es trotzdem funktioniert... ;-)
- Wenn man einen BLUETOOTH-Stick an mehrereren PCs benutzt, dann muss man
anscheinend am NXT die alte Verbindung erst löschen, bevor man mit dem
anderen Gerät wieder in Verbindung treten kann....
- Manchmal muss man das Pairing sogar unter jungfräulichen Bedingungen wiederholen. Dann muss man alles unter /var/lib/bluetooth löschen und einen neuen Versuch starten.
NXC-Editor
Als korrekten NXC-Editor habe ich SciTE (http://scintilla.sourceforge.net/) mit vertretbaren Aufwand anpassen können, so dass er eine nette IDE mit Syntaxhighlighting, API-Calltipps, Folding, Symbolvervollständigung sowie Compiler- bzw. Programm-Übertragungs-Aufruf auf Knopfdruck. bzw. Mausklick ist. Damit lässt sich wahrlich nett arbeiten!- SciTE sollte in jeder Linux-Distribution vorhanden sein. Unter UBUNTU installiert man ihn z.B. mit aptitude install scite.
- In der Grundinstallation ist das Programm mit englischsprachigen Menüs versehen. Eine deutsche Lokalisierung findet man unter http://scintilla.sourceforge.net/SciTETranslation.html
- In einer
nxt.properties
-Datei wird Syntaxhighlighting, Symbolvervollständigung und der Compiler- bzw. Programm-Übertragungsaufruf festgelegt. -
Diverse globale und lokale Voreinstellungen werden in den
Dateien
/usr/share/scite/SciTEGlobal.properties
und~/.SciTEUser.properties
gemacht. Beide Lösungen haben Vor- und Nachteile. Wird das Programm oft geupdated, dann sind globale Veränderungen nicht mehr vorhanden. Kommt das so gut wie nie vor, macht man sich weniger Arbeit, diese global zu machen. - Eine API (für engl. application programming interface, deutsch: „Schnittstelle zur Anwendungsprogrammierung“ siehe Wikipedia) für NXC findet man z.Zt. leider noch nicht auf den SciTE-Seiten. In den test_release-Dateien zu Bricxcc (siehe http://bricxcc.sourceforge.net/) ist aber Entsprechendes zu finden, was man für diesen Zweck verwenden kann.
Ein Archiv, das alle oben beschriebenen Programme beinhaltet sowie diese installiert bzw. entsprechende Veränderungen macht, soweit es unbedingt notwendig ist (siehe install-Datei im Archiv), findet man hier:
- für Ubuntu 6.10 und 7.04: hier
Neuere Versionen der verwendeten Programme findet man aber womöglich unter den oben angegebenen Adressen. Unter Ubuntu 10.04 sind bei mir in der Datei ~/.SciTEUser.properties folgende Zeilen:
# mit USB mit nbc
command.build.*.nxc= nbc -S=usb -d -b $(FileName).rxe
# mit Bluetooth mit nbc
command.compile.*.nxc= nbc -T=NXT -v=131 -O=$(FileName).rxe $(FileNameExt)
#command.build.*.nxc=nbc -d -b -S=BTH::NXT1_LIF $(FileName).rxe
#command.go.*.nxc=nbc -b -r -S=BTH::NXT1_LIF $(FileName).rxe
TIPP: Der Editor SciTE läuft auch unter Windows und kann auch dort zur NXC-Programmierung angepasst werden. Er hat wohl nicht die vielen Extras eingebaut wie BricCC (http://bricxcc.sourceforge.net/), doch das Programmieren geht mindestens genauso komfortabel.