Spionprogramme im Eigenbau

Da ich auf die Standardprogramme der LEGO-CD nicht zurückgreifen konnte, intensivierte ich meine geheimen Ermittlungen und wurde schließlich unter [3] fündig. Mit dem Tool NQC ("Not Quite C") lässt sich der Spybot ab Version 2.5r1 unter Linux individuell programmieren. Laden Sie die Sourcen entweder von der Website des Programms (z. B. mit wget http://www.baumfamily.org/nqc/release/nqc-2.5.r1.tgz) herunter oder kopieren Sie die Datei nqc-2.5.r1.tgz von der Heft-CD aus dem Verzeichnis LinuxUser/lego/ nach /usr/local/. Mit dem Befehl

tar -zxvf nqc-2.5.r1.tgz

entpacken Sie das Archiv. Im neu entstandenen Verzeichnis nqc-2.5.r1 ausgeführt sorgen

make

und

make install

für die Installation von NQC. Voraussetzung für einen reibungslosen Ablauf ist die vorherige Installation des Programms bison, welches nicht unbedingt zu einer Standard-Linux-Installation gehört.

NQC

NQC-Programme sind in ihrer Syntax C-Programmen sehr ähnlich. Anweisungen werden durch ein Semikolon abgeschlossen, und Blöcke stehen in geschweiften Klammern { }. Kommentare lassen sich durch /* und */ einfassen oder stehen ab // bis zum Zeilenende. Die Kontrollstrukturen if, while und for entsprechen denen in C. Zusätzlich bietet NQC repeat und until an (Kasten 1). Ähnlich wie bei C muss in NQC ein Hauptprogramm existieren, der Task definiert durch task main() (siehe Listing 1). In diesem (und jedem anderen) Task können die Anweisungen an den Roboter kodiert werden. Eine einfache Anweisung ist beispielsweise OnFwd(OUT_A+OUT_B). Hier steckt eine Menge drin: Zwei Ausgänge, OUT_A und OUT_B (durch ein + verbunden), werden als Parameter übergeben. Die Funktion OnFwd() ist bereits eine Kombination aus On() und Fwd() und damit direkt Richtungsangabe- und Einschaltbefehl zusammen.

Listing 1 zeigt weiterhin die Funktion Wait(). Ihr wird als Parameter die Anzahl Hundertstelsekunden, die der Roboter einfach das weitermachen soll, was er gerade tut, übergeben. OnRev(OUT_A+OUT_B) schaltet die Motoren in den Rückwärtsgang, und mit Off(OUT_A+OUT_B) werden sie gestoppt. Um den Spybot einem ersten Programmiertest zu unterziehen, wollte ich ihn drei Sekunden vorwärts, dann drei Sekunden rückwärts fahren lassen und schließlich anhalten. Den Quelltext des Programms (Listing 1, vor_u_zurueck.nqc) finden Sie auf der Heft-CD im Verzeichnis LinuxUser/lego/. Der Aufruf

user@host:~$ nqc -TSpy -d vor_u_zurueck.nqc

wandelt das Programm um und lädt es direkt in den Roboter hinein. NQCs Fehlermeldungen, sollte beim Kompilieren etwas schiefgehen, sind so informativ, dass sich Probleme im Quellcode schnell finden lassen. Die Option -TSpy muss für jedes Spybotics-Programm erfolgen; -d sorgt dafür, dass das umgewandelte Programm direkt in den Roboter hineingeladen wird. Dazu muss natürlich die Kabelverbindung stehen und der Spybot eingeschaltet sein. Standardmäßig wird der erste serielle Port angesprochen; mit dem Parameter -S lässt sich aber auch jeder andere Port setzen, z. B. -S/dev/ttyS1.

Kasten 1: NQC-Kontrollstrukturen

if(bedingung)
{konsequenzanweisungen}
else
{alternativanweisungen}
while(bedingung){anweisungen}
do{anweisungen}
while(bedingung)
for(initialanweisung;bedingung;folgeanweisung)
{wiederholungsanweisungen}
repeat(anzahlausdruck)
{anweisungen}
switch(ausdruck)
{
  case konstanter_ausdruck_1:
  {anweisungen_1} break;
  …
  case konstanter_ausdruck_n:
  {anweisungen_n} break;
  default:
  {anweisungen} break;
}
until(bedingung)
{anweisungen}

Agenten-

: vor, zurück und stop mit <I>vor_u_zurueck.nqc<I>

#include "spy.nqh"     // muss jedes Spybot-Programm haben
task main()
{
  OnFwd(OUT_A+OUT_B);  // beide Motoren vorwärts
  Wait(300);           // 3 Sekunden fahren
  OnRev(OUT_A+OUT_B);  // beide Motoren rückwärts
  Wait(300);           // 3 Sekunden fahren
  Off(OUT_A+OUT_B);    // anhalten
}

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Robotertraum
    Füttern Sie Ihren Mindstorms-Robot per Bluetooth mit Programmen und schicken Sie ihn auf Ballsuche durchs Labyrinth.
  • Wine erhöht auf Version 1.1.33
    Wie das "Wine-Hauptquartier" bekannt gibt, repariert die neue Version des Nicht-Emulators einige Fehler und verbessert die Zusammenarbeit mit diversen Windows-Programmen und Spielen.
  • LM-Sensors spürt Feuchtigkeit

    LM-Sensors, ein freies Softwarepaket zum Überwachen von Hardwaredaten unter Linux, ist in Version 3.3.0 mit neuen Features erhältlich.
  • LM-Sensors-Bibliothek wechselt zur LGPL

    LM-Sensors, ein Paket zur Hardwareüberwachung unter Linux, ist in Version 3.2.0 erhältlich. Ab dieser Release steht die enthaltene Bibliothek Libsensors unter LGPLv2.1.
  • World of Warcraft: Spielen unter Linux
    Anspruchsvolle Spiele aus der Windows-Welt laufen häufig nur mit dem kostenpflichtigen Cedega. Das beliebte Spiel World of Warcraft zeigt, wie ein kleiner Patch das ändert.
Kommentare

Infos zur Publikation

LU 12/2014: ANONYM & SICHER

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Ubuntu 14.10 und VirtualBox
Ubuntu 14.10 und VirtualBox
Tim Schürmann, 08.11.2014 18:45, 0 Kommentare

Wer Ubuntu 14.10 in einer virtuellen Maschine unter VirtualBox startet, der landet unter Umständen in einem Fenster mit Grafikmüll. Zu einem korrekt ...

Aktuelle Fragen

Nach Ubdates alles weg ...
Maria Hänel, 15.11.2014 17:23, 4 Antworten
Ich brauche dringen eure Hilfe . Ich habe am wochenende ein paar Ubdates durch mein Notebook von...
Brother Drucker MFC-7420
helmut berger, 11.11.2014 12:40, 1 Antworten
Hallo, ich habe einen Drucker, brother MFC-7420. Bin erst seit einigen Tagen ubuntu 14.04-Nutzer...
Treiber für Drucker brother MFC-7420
helmut berger, 10.11.2014 16:05, 2 Antworten
Hallo, ich habe einen Drucker, brother MFC-7420. Bin erst seit einigen Tagen ubuntu12.14-Nutzer u...
Can't find X includes.
Roland Welcker, 05.11.2014 14:39, 1 Antworten
Diese Meldung erhalte ich beim Versuch, kdar zu installieren. OpenSuse 12.3. Gruß an alle Linuxf...
DVDs über einen geeigneten DLNA-Server schauen
GoaSkin , 03.11.2014 17:19, 0 Antworten
Mein DVD-Player wird fast nie genutzt. Darum möchte ich ihn eigentlich gerne abbauen. Dennoch wür...