Jeśli potrafisz /dev/urandom > /dev/fb0
wyskakiwać na ekranie losowe piksele, masz wszystko, czego potrzebujesz.
W moim przypadku musiałem zrzucić trochę informacji tekstowych. Przetestowałem to na busyboksie i raspi, więc może ci się przydać. Odpowiedź może być nieco długa, ponieważ jeśli nie używasz konsoli, musisz samodzielnie wydrukować piksele znaków. Na szczęście ktoś wykonał ciężką pracę, więc musimy ją po prostu połączyć.
W busybox lub w raspi powinieneś mieć plik fbset
binarny. Może to pomóc w ustaleniu ustawień jako wymiarów ekranu.
W moim osadzonym wygląda to tak:
# 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
Ważną częścią jest tutaj szerokość 480 i wysokość 272 pikseli.
Jak wspomniałeś, możesz wypełnić ekran za pomocą
cat /dev/urandom > /dev/fb0
i możesz to wyczyścić cat /dev/zeros > /dev/fb0
Niż wyczyść ekran, musimy upewnić się, że prawidłowo uzyskasz wymiary.
Przez przypadek mój busybox miał plik binarny fbsplash, który pobierał jako plik wejściowy .ppm.
Poprawnie, jeśli się mylę, ale wygląda na to, że fb0
akceptuje ten format. Patrząc na Portable Anymap na Wikipedii , istnieje kilka „podformatów” ... fbsplash używa fantazyjnego z kolorami i tak dalej ... ale chcemy móc po prostu wydrukować coś czytelnego. Dla uproszczenia użyjmy P1 zakodowanego w ASCII. Gdybyśmy mogli wydrukować linię pionową, wiedzielibyśmy, że nasze wymiary są prawidłowe. Spróbujmy:
Linia pionowa w ppm typu P1 powinna wyglądać następująco:
P1
480 272
f 0 0 0 0 ... 0
f 0 0 0 0 ... 0
...
f 0 0 0 0 ... 0
Tak więc będzie 272 wierszy o szerokości 959 znaków. Dokumentacja mówi, że powinna być 1 zamiast f ... na busyboksie, a raspi f był jaśniejszy.
Ważne jest, aby po zerach nie było miejsca ... To zadanie może być trochę nudne ... lepiej użyj edytora tekstu, który ci pomoże. W vimie możesz skopiować pierwsze dwa wiersze, przejść do trybu poleceń (esc), a następnie wpisać następujące znaki:
of(esc)479a 0(esc)yy271p
Oczywiście używam swoich wymiarów, powinieneś użyć swoich. Cat ten plik do /dev/fb0
, powinien wyglądać następująco:
Ok, oszukuję ... to nie jest tylko jedna linia ... to jest około 8 ... ale kiedy to nie działa (mamy złe wymiary lub na końcu mamy spację, posiadanie tylko jednej linii to dużo łatwiej).
Jeśli zaszedłeś tak daleko, musimy po prostu wydrukować odpowiednie piksele, aby zobaczyć je w postaci znaków. Dzięki Marcelowi Sondaarowi i jego repozytorium na GitHub nie będziemy musieli rysować każdego znaku.
Po drobnej poprawce rozwinął swój prosty program do drukowania f
zamiast X
i 0
zamiast spacji, wstaw spacje między każdym znakiem, dodaj nagłówek, a my mamy plik .ppm z literą odpowiadającą jego kodowi znaków.
Jeden mały krok dalej i nie dostajesz znaku jako wejścia, ale wiersz. Cat plik, potok do swojego programu i wyjście do, /dev/fb0
a otrzymasz wynik tekstowy:
Testuję to rozwiązanie również na Raspberry Pi i zadziałało. System mówi mi, że nie mam reputacji, aby publikować więcej niż 2 linki. Dopóki tego nie otrzymam, musisz polegać na moim słowie: D