Si vous pouvez chatter /dev/urandom > /dev/fb0
et obtenir des pixels aléatoires à l'écran, vous avez tout ce dont vous avez besoin.
Dans mon cas, j'avais besoin de vider des informations textuelles. J'ai testé cela dans busybox et raspi, donc cela pourrait fonctionner pour vous. La réponse peut être un peu longue, car si vous n'utilisez pas de console, vous devrez imprimer vous-même les pixels des caractères. Heureusement, quelqu'un a fait le travail difficile, nous devons donc simplement le combiner.
Dans la boîte occupée ou dans votre raspi, vous devriez avoir un fbset
binaire. Cela pourrait vous aider à découvrir vos paramètres en tant que dimensions d'écran.
Dans mon imbriqué ressemble à ceci:
# 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 partie importante ici est la largeur 480 et la hauteur 272 pixels.
Comme vous l'avez mentionné, vous pouvez remplir l'écran avec
cat /dev/urandom > /dev/fb0
et vous pouvez l'effacer avec cat /dev/zeros > /dev/fb0
Ensuite, nettoyez votre écran, nous devons vous assurer d'obtenir les dimensions correctement.
Par chance, mon busybox avait un binaire fbsplash qui obtient en entrée un fichier .ppm.
Corrigez si je me trompe, mais il semble que fb0
ce format soit accepté. En jetant un œil sur Portable Anymap sur Wikipedia , il existe plusieurs "sous-formats" ... fbsplash en utilise un de fantaisie avec des couleurs, et ainsi de suite ... mais nous voulons pouvoir imprimer simplement quelque chose de lisible. Utilisons le P1 codé en ASCII pour des raisons de simplicité. Si nous pouvions imprimer une ligne verticale, nous saurions que nos dimensions sont correctes. Essayons:
Une ligne verticale dans un type P1 ppm devrait ressembler à ceci:
P1
480 272
f 0 0 0 0 ... 0
f 0 0 0 0 ... 0
...
f 0 0 0 0 ... 0
Donc, il y aura 272 lignes, 959 caractères de large. La documentation indique qu'il devrait être 1 au lieu de f ... sur busybox et raspi f était plus lumineux.
Il est important que vous n'ayez pas d'espace après les 0 ... Cette tâche peut être un peu fastidieuse ... vous feriez mieux d'utiliser un éditeur de texte qui vous aide. Dans vim, vous pouvez copier les deux premières lignes, passer en mode commande (esc), puis taper les caractères suivants:
of(esc)479a 0(esc)yy271p
Bien sûr, j'utilise mes dimensions, vous devez utiliser les vôtres. Cat ce fichier /dev/fb0
, il devrait ressembler à:
Ok, je triche ... ce n'est pas juste une ligne là ... c'est environ 8 ... mais quand ça ne marche pas (nous avons de mauvaises dimensions ou nous avons de l'espace à la fin, avoir une seule ligne c'est beaucoup Plus facile).
Si vous êtes arrivé jusque-là, il suffit d'imprimer les bons pixels pour les voir en caractères. Grâce à Marcel Sondaar et à son dépôt sur GitHub, nous n'aurons pas besoin de dessiner chaque personnage.
Avec un petit ajustement, développez son programme simple pour imprimer à la f
place X
et 0
au lieu d'espaces, insérez des espaces entre chaque caractère, ajoutez l'en-tête et nous avons un fichier .ppm avec la lettre correspondant à son code de caractère.
Un petit pas plus loin et vous n'obtenez pas un caractère en entrée, mais une ligne. Cat un fichier, pipe à votre programme et sortie /dev/fb0
et vous obtenez une sortie de texte:
J'ai également testé cette solution sur un Raspberry Pi et cela a fonctionné. Le système me dit que je n'ai pas la réputation de publier plus de 2 liens. Jusqu'à ce que j'obtienne ceci, vous devez vous fier à ma parole: D