Andreas Rozek
[ Impressum ]   [ Datenschutzerklärung ]   [ Kontakt ]   [ ]

Rückkanal

Bangle.js Rückkanal

In der Entwicklungsphase ist es oftmals hilfreich, Daten von Uhr oder Emulator zurück zum Terminalbereich der Espruino-IDE zu schicken.

Für diesen Zweck stehen zwei Verfahren zur Auswahl:

  • die globale print-Funktion oder
  • eine serielle Schnittstelle

Verwendung der print-Funktion

Die globale Funktion print akzeptiert ein oder mehrere Argumente

  print('1st Argument','2nd Argument','3rd Argument');

wobei die einzelnen Argumente nacheinander und jeweils durch ein Leerzeichen voneinander getrennt an den Rechner geschickt werden. Zum Schluss wird auch noch ein Zeilenvorschub angehängt.

print funktioniert sowohl im Emulator als auch auf einer echten Uhr.

Verwendung einer seriellen Schnittstelle

Die Verwendung einer seriellen Schnittstelle lässt dem Programmierer mehr Kontrolle über die Art der Übertragung - z.B. kann man das automatische Anhängen eines Zeilenvorschubes verhindern.

Allerdings muss man verschiedene Schnittstellen nutzen, je nachdem ob man im Emulator oder mit einer echten Uhr arbeitet:

  • im Emulator:  Serial1.print('Hello, World!');
  • auf einer Uhr: Bluetooth.print('Hello, World!');

Sucht man eine Lösung, die in beiden Umgebungen funktioniert, bietet sich folgende Vorgehensweise an:

let ReturnChannel = (typeof Bluetooth === 'undefined' ? Serial1 : Bluetooth);
ReturnChannel.println('Hello, World!');

im Emulator ausführen auf Uhr ausführen

Plant man viele solcher Aufrufe, so stellt man besser eine passende Funktion bereit, die die Textausgabe vereinfacht:

  let ReturnChannel = (typeof Bluetooth === 'undefined' ? Serial1 : Bluetooth);

function say () {
for (let i = 0, l = arguments.length; i < l; i++) {
ReturnChannel.print(arguments[i]);
}
}

function sayln () {
if (arguments.length === 0) {
ReturnChannel.println(' ');
} else {
for (let i = 0, l = arguments.length; i < l; i++) {
ReturnChannel.println(arguments[i]);
}
}
}

(die naheliegendere Lösung ReturnChannel.print.apply(this,arguments) funktioniert leider nicht)

im Emulator ausführen auf Uhr ausführen