Si puede capturar /dev/urandom > /dev/fb0
y obtener píxeles aleatorios en la pantalla, tiene todo lo que necesita.
En mi caso, necesitaba volcar información de texto. Probé esto en busybox y raspi, por lo que podría funcionar para usted. La respuesta puede ser un poco larga, ya que si no usa alguna consola, deberá imprimir los píxeles de los caracteres usted mismo. Afortunadamente, alguien ha hecho el trabajo duro, por lo que solo tenemos que combinarlo.
En busybox o en tu raspi deberías tener un fbset
binario. Esto podría ayudarlo a conocer su configuración como dimensiones de pantalla.
En mi aspecto incrustado así:
# 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 aquí es el ancho 480 y la altura 272 píxeles.
Como mencionó, puede completar la pantalla con
cat /dev/urandom > /dev/fb0
y puedes limpiarlo con cat /dev/zeros > /dev/fb0
Luego de limpiar su pantalla, debemos asegurarnos de que obtenga las dimensiones correctamente.
Por casualidad, mi busybox tenía un binario fbsplash que recibía como entrada un archivo .ppm.
Corregir si me equivoco, pero parece que fb0
acepta este formato. Echando un vistazo a Portable Anymap en Wikipedia , hay varios "subformatos" ... fbsplash usa uno elegante con color, y así sucesivamente ... pero queremos poder imprimir algo legible. Usemos el P1 codificado en ASCII por simplicidad. Si pudiéramos imprimir una línea vertical, sabríamos que nuestras dimensiones son correctas. Vamos a intentarlo:
Una línea vertical en un ppm tipo P1 debería verse así:
P1
480 272
f 0 0 0 0 ... 0
f 0 0 0 0 ... 0
...
f 0 0 0 0 ... 0
Entonces, habrá 272 líneas, 959 caracteres de ancho. La documentación dice que debería ser 1 en lugar de f ... en busybox y raspi f era más brillante.
Es importante que no tenga espacio después de los 0 ... Esta tarea puede ser un poco tediosa ... es mejor que use un editor de texto que lo ayude. En vim, puede copiar las dos primeras líneas, ir al modo de comando (esc), que escribir los siguientes caracteres:
of(esc)479a 0(esc)yy271p
Por supuesto, estoy usando mis dimensiones, deberías usar las tuyas. Cat a este archivo /dev/fb0
, debería verse así:
Ok, estoy haciendo trampa ... no es solo una línea allí ... son aproximadamente 8 ... pero cuando no funciona (tenemos dimensiones incorrectas o tenemos espacio al final, tener una sola línea es mucho más fácil).
Si llegaste tan lejos, solo tenemos que imprimir los píxeles correctos para verlos como caracteres. Gracias a Marcel Sondaar y su repositorio en GitHub no necesitaremos dibujar cada personaje.
Con un pequeño ajuste, expanda su programa simple para imprimir en f
lugar de X
y en 0
lugar de espacios, inserte espacios entre cada carácter, agregue el encabezado y tenemos un archivo .ppm con la letra correspondiente a su código de carácter.
Un pequeño paso más y no obtienes un carácter como entrada, sino una línea. Cat un archivo, canalice a su programa y salida a /dev/fb0
y obtendrá una salida de texto:
Probé esta solución también en una frambuesa pi y funcionó. El sistema me dice que no tengo reputación para publicar más de 2 enlaces. Hasta que reciba esto, debes confiar en mi palabra: D