Jika Anda bisa /dev/urandom > /dev/fb0
menggambar dan mendapatkan piksel acak di layar, Anda memiliki semua yang Anda butuhkan.
Dalam kasus saya, saya perlu membuang beberapa info teks. Saya menguji ini di busybox dan raspi, jadi mungkin berhasil untuk Anda. Jawabannya mungkin agak lama, karena jika Anda tidak menggunakan konsol, Anda perlu mencetak sendiri piksel-piksel karakter. Untungnya seseorang telah melakukan pekerjaan berat, jadi kita hanya perlu menggabungkannya.
Di busybox atau raspi Anda, Anda harus memiliki fbset
biner. Ini mungkin membantu Anda mengetahui pengaturan Anda sebagai dimensi layar.
Di embedded saya terlihat seperti ini:
# 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
Bagian penting di sini adalah lebar 480 dan tinggi 272 piksel.
Seperti yang Anda sebutkan, Anda dapat memenuhi layar dengan
cat /dev/urandom > /dev/fb0
dan Anda dapat menghapusnya dengan cat /dev/zeros > /dev/fb0
Dari membersihkan layar Anda, kami harus memastikan Anda mendapatkan dimensi dengan benar.
Secara kebetulan, busybox saya memiliki biner fbsplash yang mendapatkan sebagai input file .ppm.
Benar jika saya salah, tetapi tampaknya fb0
menerima format ini. Melihat Portable Anymap di Wikipedia , ada beberapa "subformat" ... fbsplash menggunakan yang mewah dengan warna, dan seterusnya ... tetapi kami ingin dapat hanya mencetak sesuatu yang dapat dibaca. Mari kita gunakan kode P1 dalam ASCII demi kesederhanaan. Jika kita bisa mencetak garis vertikal, kita akan tahu dimensi kita benar. Mari kita coba:
Garis vertikal dalam ppm tipe P1 akan terlihat seperti ini:
P1
480 272
f 0 0 0 0 ... 0
f 0 0 0 0 ... 0
...
f 0 0 0 0 ... 0
Jadi, akan ada 272 garis, lebar 959 karakter. Dokumentasi mengatakan seharusnya 1 bukannya f ... di busybox dan raspi f lebih cerah.
Penting bahwa Anda tidak memiliki ruang setelah 0 ... Tugas ini bisa sedikit membosankan ... Anda lebih baik menggunakan editor teks yang membantu Anda. Di vim, Anda dapat menyalin dua baris pertama, pergi ke mode perintah (esc), daripada mengetik karakter berikut:
of(esc)479a 0(esc)yy271p
Tentu saja, saya menggunakan dimensi saya, Anda harus menggunakan dimensi Anda. Cat file ini /dev/fb0
, akan terlihat seperti:
Ok, saya curang ... itu bukan hanya satu baris di sana ... itu sekitar 8 ... tetapi ketika tidak bekerja (kami memiliki dimensi yang salah atau kami memiliki ruang pada akhirnya, memiliki hanya satu baris jauh lebih mudah).
Jika Anda sejauh itu, kita hanya perlu mencetak piksel yang tepat untuk dilihat sebagai karakter. Berkat Marcel Sondaar dan repo-nya di GitHub kita tidak perlu menggambar masing-masing char.
Dengan tweak kecil memperluas program sederhana untuk mencetak f
bukan X
dan 0
bukannya spasi, masukkan spasi di antara masing-masing karakter, tambahkan header dan kami memiliki file .ppm dengan huruf yang sesuai dengan kode kodenya.
Satu langkah kecil lebih jauh dan Anda tidak mendapatkan char sebagai input, tetapi sebuah baris. Cat file, pipa ke program Anda dan output ke /dev/fb0
dan Anda mendapatkan output teks:
Saya menguji solusi ini juga pada pi raspberry dan itu berhasil. Sistem memberi tahu saya bahwa saya tidak memiliki reputasi untuk mengirim lebih dari 2 tautan. Sampai saya mendapatkan ini, Anda harus mengandalkan kata saya: D