Se riesci a cat /dev/urandom > /dev/fb0
e ottenere pixel casuali sullo schermo, hai tutto ciò di cui hai bisogno.
Nel mio caso ho dovuto scaricare alcune informazioni di testo. L'ho provato su busybox e raspi, quindi potrebbe funzionare per te. La risposta potrebbe essere un po 'lunga, poiché se non usi una console dovrai stampare tu stesso i pixel dei caratteri. Fortunatamente qualcuno ha fatto il duro lavoro, quindi dobbiamo solo combinarlo.
In busybox o nel tuo raspi dovresti avere un fbset
binario. Questo potrebbe aiutarti a scoprire le tue impostazioni come dimensioni dello schermo.
Nel mio incorporato appare così:
# 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
La parte importante qui è la larghezza 480 e l'altezza 272 pixel.
Come hai già detto, puoi completare lo schermo con
cat /dev/urandom > /dev/fb0
e puoi cancellarlo con cat /dev/zeros > /dev/fb0
Quindi cancella lo schermo, dobbiamo assicurarti di ottenere le dimensioni correttamente.
Per caso il mio busybox aveva un binario fbsplash che riceveva come input un file .ppm.
Corretto se sbaglio, ma sembra che fb0
accetta questo formato. Dando un'occhiata a Portable Anymap su Wikipedia , ci sono diversi "subformati" ... fbsplash ne usa uno di fantasia con colori, e così via ... ma vogliamo essere in grado di stampare solo qualcosa di leggibile. Usiamo il P1 codificato in ASCII per motivi di semplicità. Se potessimo stampare una linea verticale, sapremmo che le nostre dimensioni sono corrette. Proviamolo:
Una linea verticale in un tipo di ppm P1 dovrebbe apparire così:
P1
480 272
f 0 0 0 0 ... 0
f 0 0 0 0 ... 0
...
f 0 0 0 0 ... 0
Quindi, ci saranno 272 linee, larghe 959 caratteri. La documentazione dice che dovrebbe essere 1 invece di f ... su busybox e raspi f era più luminoso.
È importante non avere spazio dopo gli 0 ... Questa attività può essere un po 'noiosa ... è meglio usare un editor di testo che ti aiuti. In vim, puoi copiare le prime due righe, vai in modalità comando (esc), quindi digita i seguenti caratteri:
of(esc)479a 0(esc)yy271p
Certo, sto usando le mie dimensioni, dovresti usare le tue. Cat questo file su/dev/fb0
, dovrebbe apparire come:
Ok, sto barando ... non è solo una riga lì ... sono circa 8 ... ma quando non funziona (abbiamo dimensioni sbagliate o abbiamo spazio alla fine, avere solo una riga è molto Più facile).
Se sei arrivato così lontano, dobbiamo solo stampare i pixel giusti per vederli come caratteri. Grazie a Marcel Sondaar e al suo repository su GitHub non avremo bisogno di disegnare ogni personaggio.
Con una piccola modifica, espandi il suo semplice programma per stampare f
invece di X
e0
invece di spazi, inserisci spazi tra ogni carattere, aggiungi l'intestazione e abbiamo un file .ppm con la lettera corrispondente al suo codice.
Un piccolo passo avanti e non si ottiene un carattere come input, ma una riga. Cat un file, pipe al tuo programma e l'output a /dev/fb0
e ottieni un output di testo:
Ho testato questa soluzione anche su un lampone pi e ha funzionato. Il sistema mi dice che non ho la reputazione di pubblicare più di 2 link. Fino a quando ho capito, devi fare affidamento sulla mia parola: D