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

title_2015_02

Digitale Ausgabe: Preis € 5,49
(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, 2 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

Rootpasswort
Jutta Naumann, 29.01.2015 09:14, 1 Antworten
Ich habe OpenSuse 13.2 installiert und leider nur das Systempasswort eingerichtet. Um Änderungen,...
Neue SuSE-Literatur
Roland Welcker, 14.01.2015 14:10, 1 Antworten
Verehrte Linux-Freunde, seit Hans-Georg Essers Buch "LINUX" und Stefanie Teufels "Jetzt lerne ich...
DVD abspielen unter openSUSE 13.1
Michael Pfaffe, 12.01.2015 11:48, 6 Antworten
Hallo Linuxer, Bisher habe ich meine DVD´s mit linDVD unter openSUSE abgespielt. Mit der Versi...
Kontrollleiste SuSE 12.3 gestalten
Roland Welcker, 31.12.2014 14:06, 1 Antworten
Wie bekomme ich das Icon eines beliebigen Programms (aktuell DUDEN) in die Kontrollleiste und kan...
flash-player
roland reiner, 27.12.2014 15:24, 7 Antworten
Mein Flashplayer funktioniert nicht mehr-Plug in wird nicht mehr unterstütz,auch über google chro...