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
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ä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.
  • Klang-Lego
    Digital Audio Workstations – das waren früher kaum zu bezahlende Hardware-Lösungen. Heute ersetzen ein simpler PC, Midi und Software wie Tracktion 7 die teure Hardware, auch unter Linux.
  • 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.
Kommentare

Infos zur Publikation

LU 10/2017: Daten retten & sichern

Digitale Ausgabe: Preis € 8,50
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

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

Stellenmarkt

Aktuelle Fragen

Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 2 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...
Backup mit KUP unter Suse 42.3
Horst Schwarz, 24.09.2017 13:16, 3 Antworten
Ich möchte auch wieder unter Suse 42.3 mit Kup meine Backup durchführen. Eine Installationsmöglic...
kein foto, etc. upload möglich, wo liegt mein fehler?
kerstin brums, 17.09.2017 22:08, 5 Antworten
moin, zum erstellen einer einfachen wordpress website kann ich keine fotos uploaden. vom rechne...
Arch Linux Netzwerkkonfigurationen
Franziska Schley, 15.09.2017 18:04, 0 Antworten
Moin liebe Linux community, ich habe momentan Probleme mit der Einstellung des Lan/Wlan in Arc...