Якщо ви можете котити /dev/urandom > /dev/fb0
і отримувати випадкові пікселі на екрані, у вас є все необхідне.
У моєму випадку мені потрібно було скинути деяку текстову інформацію. Я перевірив це у зайнятому ящику та рашпі, щоб це могло працювати для вас. Відповідь може бути трохи довгою, оскільки якщо ви не використовуєте якусь консоль, вам потрібно буде надрукувати пікселі символів самостійно. На щастя, хтось зробив важку роботу, тому нам просто потрібно поєднати її.
У зайнятій скриньці або у вашому рашпі має бути 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
Окрім очищення екрана, ми маємо запевнити, що ви правильно отримали розміри.
Випадково у мого зайнятої скриньки був двійковий файл fbsplash, який отримує як вхідний файл.
Правильно, якщо я помиляюся, але здається, що fb0
приймає цей формат. Подивившись на Portable Anymap у Вікіпедії , є кілька "підформатів" ... fbsplash використовує ошатний колір із кольором тощо ... але ми хочемо просто надрукувати щось читабельне. Давайте використовувати P1, закодований в ASCII, для простоти. Якби ми могли надрукувати вертикальну лінію, ми б знали, що наші розміри є правильними. Давайте спробуємо:
Вертикальна лінія в 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
, він повинен виглядати так:
Гаразд, я обманюю ... це не один рядок там ... це приблизно 8 ... але коли він не працює (у нас неправильні розміри або у нас є пробіл в кінці, мати лише один рядок - це багато легше).
Якщо у вас так далеко, нам потрібно просто надрукувати правильні пікселі, щоб побачити їх як символи. Завдяки Марселю Сондару та його репо на GitHub нам не потрібно буде малювати кожен твір.
За допомогою невеликого налаштування розгорніть його просту програму для друку f
замість, X
а 0
замість пробілів, вставляйте пробіли між кожним знаком, додайте заголовок, і у нас є файл .ppm з буквою, що відповідає його коду.
Ще один невеликий крок далі, і ви отримуєте не графік як вхід, а рядок. Прокрутіть файл, передайте програму та виведіть текст, /dev/fb0
і ви отримаєте текст:
Я тестую це рішення також на малиновому пі, і воно спрацювало. Система каже мені, що я не маю репутації розміщувати більше 2 посилань. Поки я цього не отримаю, ти повинен покластися на моє слово: D