Einleitung:Um die Daten die während des Betriebs des Robos anfallen später auswerten zu können, müssen diese verfügbar gemacht werden. Da der Speicherplatz des Robos begrenzt ist, ist eine Log-Datei nur in begrenztem Umfang verwendbar. Eine andere Möglichkeit, die nicht auf Speicherplatz des Robos begrenzt ist, ist das Remote Debugging über Bluetooth. Die LeJOS-API bietet hierfür die Klasse
lejos.nxt.comm.RConsole
Wichtige (statische) Methoden sind hier
- openAny(int timeout)
- println(String s)
- close()
Vorgehensweise: Die RConsole muss mit openAny geöffnet werden. Für die Dauer des Timeouts (in ms) wird auf einen "ConsoleListener" gewartet. Diesen kann man selber implementieren oder den "
ConsoleViewer" der mit der leJOS-Installation mitgeliefert wird (im "/bin"-Verzeichnis die "nxjconsoleviewer.bat") nutzen.
Sobald die Verbindung zwischen Robo und RConsole steht, werden alle Ausgaben die durch "println(String s)" mitgegeben werden, in den ConsoleViewer übertragen.

Damit die Ausgaben an die Console die tatsächliche Aufgabe des Robos nur in geringem Maße beeinträchtigen, wurde eine Logger-Klasse geschrieben, die die RConsole-Klasse kapselt und in einem eigenen Thread läuft. Da mehrere Instanzen der Logger-Klasse nicht nötig sind oder ggfs. sogar stören, wurde sie nach dem Singleton-Pattern implementiert.
Bekannte Probleme:Problem:
Wenn das Programm über Eclipse über die "Run As -> LeJOS NXT Programm"-Configuration auf den Robo aufgespielt wird, das aufgespielte Programm dann automatisch startet, konnte der ConsoleViewer keine Verbindung aufbauen.
Workaround:
- Programm kompilieren
- Mit dem LeJOS-Programm "nxjbrowse" (siehe Installationsordner -> /bin) eine Verbindung mit dem Robo herstellen.
- Kompilierte .nxj-Datei übertragen
- "nxjbrowse" schließen
- "nxjconsoleviewer" öffnen
- Auf dem Robo die .nxj-Datei starten
- Mit dem nxjconsoleviewer innerhalb des Timeouts (siehe openAny(int timeout)) die Verbindung herstellen