Если вы можете ловить кошку /dev/urandom > /dev/fb0
и получать случайные пиксели на экране, у вас есть все, что вам нужно.
В моем случае мне нужно было сбросить некоторую текстовую информацию. Я проверил это в busybox и raspi, так что это может сработать для вас. Ответ может быть немного длинным, поскольку, если вы не используете какую-либо консоль, вам нужно будет самостоятельно распечатать пиксели символов. К счастью, кто-то проделал тяжелую работу, поэтому нам просто нужно объединить ее.
В 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, который получал в качестве входного файла .ppm.
Поправьте, если я ошибаюсь, но похоже, что 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
Конечно, я использую свои измерения, вы должны использовать свои. Cat этот файл /dev/fb0
, он должен выглядеть так:
Хорошо, я обманываю ... это не просто одна строка там ... это около 8 ... но когда это не работает (у нас неправильные размеры или у нас есть место в конце, иметь только одну строку много Полегче).
Если вы продвинулись так далеко, нам нужно просто распечатать правильные пиксели, чтобы увидеть их в виде символов. Благодаря Марселю Сондару и его репо на GitHub нам не нужно рисовать каждый символ.
С помощью небольшой настройки вы можете развернуть простую программу для печати f
вместо X
и 0
вместо пробелов, вставлять пробелы между каждым символом, добавлять заголовок, и у нас есть файл .ppm с буквой, соответствующей его коду.
Еще один маленький шаг, и вы получаете не символ, а строку. Cat файл, канал к вашей программе и вывод, /dev/fb0
и вы получите текстовый вывод:
Я тестирую это решение также на Raspberry Pi, и это сработало. Система говорит мне, что у меня нет репутации, чтобы публиковать более 2 ссылок. Пока я не получу это, вы должны полагаться на мое слово: D