Wenn du /dev/urandom > /dev/fb0
zufällige Pixel auf dem Bildschirm sehen und sehen kannst, hast du alles, was du brauchst.
In meinem Fall musste ich einige Textinformationen ausgeben. Ich habe dies in busybox und raspi getestet, damit es bei Ihnen funktioniert. Die Antwort könnte etwas lang sein, da Sie, wenn Sie keine Konsole verwenden, die Pixel der Zeichen selbst drucken müssen. Zum Glück hat jemand die harte Arbeit geleistet, also müssen wir es einfach kombinieren.
In busybox oder in deinem raspi solltest du ein fbset
binär haben. Dies kann Ihnen helfen, Ihre Einstellungen als Bildschirmabmessungen zu ermitteln.
In meinem Embedded sieht das so aus:
# fbset
mode "480x272-1"
# D: 0.104 MHz, H: 0.207 kHz, V: 0.657 Hz
geometry 480 272 480 272 16
timings 9600000 3 3 0 32 17 11
accel false
rgba 5/0,6/5,5/11,0/0
endmode
Der wichtige Teil hier ist die Breite 480 und Höhe 272 Pixel.
Wie du erwähnt hast, kannst du den Bildschirm mit erfüllen
cat /dev/urandom > /dev/fb0
und Sie können es mit löschen cat /dev/zeros > /dev/fb0
Dann müssen wir sicherstellen, dass Sie die richtigen Abmessungen haben.
Zufällig hatte meine Busybox eine fbsplash-Binärdatei, die als Eingabe eine .ppm-Datei erhielt.
Richtig, wenn ich falsch liege, aber es scheint, dass fb0
dieses Format akzeptiert wird. Wenn man sich Portable Anymap auf Wikipedia ansieht , gibt es mehrere "Unterformate" ... fbsplash verwendet ein ausgefallenes Format mit Farbe und so weiter ... aber wir möchten in der Lage sein, einfach etwas Lesbares zu drucken. Verwenden wir der Einfachheit halber das in ASCII codierte P1. Wenn wir eine vertikale Linie drucken könnten, würden wir wissen, dass unsere Abmessungen korrekt sind. Lass es uns versuchen:
Eine vertikale Linie in einem ppm-Typ P1 sollte folgendermaßen aussehen:
P1
480 272
f 0 0 0 0 ... 0
f 0 0 0 0 ... 0
...
f 0 0 0 0 ... 0
Es wird also 272 Zeilen mit einer Breite von 959 Zeichen geben. Die Dokumentation sagt, es sollte 1 anstelle von f sein ... auf busybox und raspi f war heller.
Es ist wichtig, dass nach den Nullen kein Leerzeichen steht. Diese Aufgabe kann etwas langwierig sein. Verwenden Sie besser einen Texteditor, der Ihnen hilft. In vim können Sie die ersten beiden Zeilen kopieren, in den Befehlsmodus (esc) wechseln und die folgenden Zeichen eingeben:
of(esc)479a 0(esc)yy271p
Natürlich verwende ich meine Dimensionen, du solltest deine verwenden. Um diese Datei zu verschieben /dev/fb0
, sollte es so aussehen:
Ok, ich betrüge ... es ist nicht nur eine Zeile da ... es ist ungefähr 8 ... aber wenn es nicht funktioniert (wir haben falsche Dimensionen oder wir haben Platz am Ende, nur eine Zeile zu haben ist viel einfacher).
Wenn Sie so weit gekommen sind, müssen wir nur die richtigen Pixel drucken, um Zeichen zu sehen. Dank Marcel Sondaar und seinem Repo auf GitHub müssen wir nicht jeden Char ziehen.
Mit einem kleinen Kniff erweitert man sein einfaches Programm, um f
anstelle von X
und 0
anstelle von Leerzeichen Leerzeichen zwischen die einzelnen Zeichen einzufügen, den Header hinzuzufügen und eine PPM-Datei mit dem Buchstaben zu erstellen, der dem Zeichencode entspricht.
Ein kleiner Schritt weiter und Sie erhalten kein Zeichen als Eingabe, sondern eine Zeile. Rufe eine Datei auf, rufe dein Programm auf und gib sie aus /dev/fb0
und du bekommst eine Textausgabe:
Ich teste diese Lösung auch auf einem Himbeer-Pi und es hat funktioniert. Das System teilt mir mit, dass ich keinen Ruf habe, mehr als 2 Links zu posten. Bis ich das bekomme, musst du dich auf mein Wort verlassen: D