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

Bildschirmabzüge

Bangle.js Bildschirmabzüge

Derzeit ist es noch recht schwierig, Bildschirmabzüge von der Anzeige einer Bangle.js zu erstellen und auf einen damit verbundenen PC hochzuladen.

Lösung für die Auflösungen 120x120 und 80x80

Für Bildschirmabzüge in den LCD-Modi 120x120 und 80x80 kann evtl. folgendes Skript Abhilfe bieten, welches zusätzlich zum eigentlichen Programm auf die Uhr hochzuladen ist:

const HexDigits = '0123456789ABCDEF';
function dec2hex (Value) {
return HexDigits[(Value & 0xF0) >> 4] + HexDigits[Value & 0x0F];
}

function dumpScreen () {
const Width = g.getWidth();
const Height = g.getHeight();

g.flip();

for (let y = 0; y < Height; y++) {
let PixelRow = '';
for (let x = 0; x < Width; x++) {
PixelRow += dec2hex(g.getPixel(x,y));
}
print(PixelRow);
}

g.flip();
}

Das Skript liest den Bildschirmpuffer Pixel für Pixel aus und überträgt das Ergebnis zeilenweise an einen mit der Uhr verbundenen PC - z.B. in die Espruino-IDE.

Die Ausgabe kann nun mit der Maus selektiert, in die Zwischenablage kopiert und von dort in das untenstehende Formular eingesetzt werden, wo es auf Knopfdruck in eine PNG-Datei umgewandelt wird.

Nota bene:

Die Funktion dumpScreen aus dem genannten Skript darf auf keinen Fall sofort nach der Übertragung des Skriptes aufgerufen werden, da die IDE von der Uhr zunächst eine Bestätigung in Form eines Prompts erwartet - oder den Vorgang mit einer Fehlermeldung abbricht.

Stattdessen kann man die Funktion z.B. auf Knopfdruck oder mit einer kurzen Verzögerung starten:

  • zeitverzögerter Aufruf (z.B. nach einer Sekunde)
    setTimeout(dumpScreen,1000);
  • Aufruf per Tastendruck (z.B. auf die mittlere seitliche Taste)
    setWatch(dumpScreen, BTN2, {edge:"falling", debounce:50, repeat:true});

Auch andere Varianten (z.B. nach Erreichen einer bestimmten Bedingung) sind auf diese Weise möglich.

Konvertierung übermittelter Bildschirminhalte

Display Content:
Status: enter Display Content and press "Convert"
Result:
as Data URI:
File Name:
(as PNG image)

Bildschirmabzüge vom Emulator

Der Emulator unterstützt derzeit keine Bildschirmabzüge von der emulierten Bangle.js-Anzeige, eine solche Funktion kann jedoch (temporär) wie folgt nachgerüstet werden:

  1. öffnen Sie den Bangle.js-Emulator
  2. öffnen Sie die Browser-Konsole
  3. geben Sie in der Konsole folgende Anweisung ein und lassen Sie sie ausführen:
$('<a id="ScreenshotButton" class="icon-save lrg"></a>').on('click', () => {
window.open('','Bangle.js Emulator Screenshot').document.write('<a href="' + $('#gfxcanvas')[0].toDataURL().replace(/^data:image\/png/,'data:application/octet-stream') + '" download="Bangle-Screenshot.png">click to download</a>')
}).insertAfter('#icon-clearScreen');

In der linken Leiste erscheint daraufhin ein neuer Button mit einem Floppy-Disc-Symbol. Durch Anklicken wird ein neuer Browser-Tab mit einem Download-Link geöffnet - ein Klicken auf diesen Link lädt nun den aktuellen Vorschau-Inhalt als PNG-Bild auf den Rechner herunter.

Nota bene: dieses Hacker-artige Vorgehen ist nichts für schwache Nerven - und muss außerdem jedesmal wiederholt werden, sobald man den Emulator neu lädt.