如果您可以捕捉/dev/urandom > /dev/fb0
并在屏幕上获得随机像素,则拥有所需的一切。
就我而言,我需要转储一些文本信息。我在busybox和raspi中对此进行了测试,因此它可能对您有用。答案可能会有点长,因为如果您不使用某些控制台,则需要自己打印chars的像素。幸运的是,有人已经完成了艰苦的工作,所以我们只需要结合起来。
在busybox或raspi中,您应该有一个fbset
二进制文件。这可以帮助您找出设置为屏幕尺寸。
在我的嵌入式中看起来像这样:
# 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
这里的重要部分是宽度480和高度272像素。
如前所述,您可以通过
cat /dev/urandom > /dev/fb0
你可以用清除它 cat /dev/zeros > /dev/fb0
除了清除屏幕之外,我们还必须确保正确获取尺寸。
偶然的情况下,我的busybox有了一个fbsplash二进制文件,该二进制文件作为输入文件。
如果我错了,请更正,但似乎fb0
接受这种格式。看一下Wikipedia上的Portable Anymap,有几种“子格式” ... fbsplash使用一种带有颜色的精美字体,以此类推...但是我们希望能够仅打印可读的内容。为了简单起见,让我们使用以ASCII编码的P1。如果我们可以打印一条垂直线,我们将知道我们的尺寸是正确的。让我们尝试一下:
ppm类型P1中的垂直线应如下所示:
P1
480 272
f 0 0 0 0 ... 0
f 0 0 0 0 ... 0
...
f 0 0 0 0 ... 0
因此,将有272行,宽959个字符。文档说它应该是1而不是f ...,在busybox上,并且raspi f会更亮。
重要的是,0后必须没有空格。此任务可能有点乏味。您最好使用可以帮助您的文本编辑器。在vim中,您可以复制前两行,进入命令模式(esc),然后键入以下字符:
of(esc)479a 0(esc)yy271p
当然,我使用的是尺寸,您应该使用尺寸。将此文件保存到/dev/fb0
,它应类似于:
好吧,我在作弊...这不仅是一行...大约是八行...但是当行不通时(我们的尺寸错误或最后有空格,只有一行是很多更轻松)。
如果您走了那么远,我们只需要打印正确的像素就可以看成字符。感谢Marcel Sondaar及其在GitHub上的仓库,我们不需要绘制每个字符。
有了小的调整,一个扩大了简易程序,打印f
代替X
和0
代替的空间,将每个字符之间的空格,添加页眉和我们有相应的则charCode字母a .ppm格式文件。
再往前走一小步,您不会得到char作为输入,而是一行。整理一个文件,通过管道传递到您的程序并输出到/dev/fb0
,您将获得文本输出:
我也在树莓派上测试了该解决方案,并且有效。系统告诉我,我不具有发布两个以上链接的声誉。在得到这个之前,您必须依靠我的话:D