Nếu bạn có thể cat /dev/urandom > /dev/fb0
và nhận pixel ngẫu nhiên trên màn hình, bạn có tất cả những gì bạn cần.
Trong trường hợp của tôi, tôi cần phải bỏ một số thông tin văn bản. Tôi đã thử nghiệm điều này trong busybox và raspi, vì vậy nó có thể phù hợp với bạn. Câu trả lời có thể hơi dài một chút, vì nếu bạn không sử dụng một số bàn điều khiển, bạn sẽ cần phải tự in các pixel của ký tự. May mắn thay, ai đó đã làm công việc khó khăn, vì vậy chúng ta chỉ cần kết hợp nó.
Trong busybox hoặc trong raspi của bạn, bạn nên có một fbset
nhị phân. Điều này có thể giúp bạn tìm ra các cài đặt của bạn dưới dạng kích thước màn hình.
Trong nhúng của tôi trông như thế này:
# 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
Phần quan trọng ở đây là chiều rộng 480 và chiều cao 272 pixel.
Như bạn đã đề cập, bạn có thể hoàn thành màn hình với
cat /dev/urandom > /dev/fb0
và bạn có thể xóa nó với cat /dev/zeros > /dev/fb0
Hơn xóa màn hình của bạn, chúng tôi phải đảm bảo bạn có được kích thước chính xác.
Tình cờ, hộp bận rộn của tôi có tệp nhị phân fbsplash nhận đầu vào là tệp .ppm.
Đúng nếu tôi sai, nhưng có vẻ như fb0
chấp nhận định dạng này. Nhìn vào Portable Anymap trên Wikipedia , có một số "biểu mẫu con" ... fbsplash sử dụng một cái lạ mắt với màu sắc, v.v ... nhưng chúng tôi muốn có thể in một cái gì đó có thể đọc được. Hãy sử dụng P1 được mã hóa trong ASCII vì mục đích đơn giản. Nếu chúng ta có thể in một đường thẳng đứng, chúng ta sẽ biết kích thước của mình là chính xác. Hãy thử nó:
Một đường thẳng đứng trong loại ppm P1 sẽ trông như thế này:
P1
480 272
f 0 0 0 0 ... 0
f 0 0 0 0 ... 0
...
f 0 0 0 0 ... 0
Vì vậy, sẽ có 272 dòng, 959 ký tự rộng. Tài liệu nói rằng nó phải là 1 thay vì f ... trên busybox và raspi f sáng hơn.
Điều quan trọng là bạn không có khoảng trống sau 0 ... Nhiệm vụ này có thể hơi tẻ nhạt ... tốt hơn bạn nên sử dụng trình soạn thảo văn bản giúp bạn. Trong vim, bạn có thể sao chép hai dòng đầu tiên, chuyển sang chế độ lệnh (esc), hơn là gõ các ký tự sau:
of(esc)479a 0(esc)yy271p
Tất nhiên, tôi đang sử dụng kích thước của tôi, bạn nên sử dụng kích thước của tôi. Cat tập tin này /dev/fb0
, nó sẽ trông giống như:
Ok, tôi đang lừa dối ... nó không chỉ là một dòng ở đó ... khoảng 8 ... nhưng khi nó không hoạt động (chúng tôi có kích thước sai hoặc chúng tôi có không gian ở cuối, chỉ có một dòng là nhiều dễ dàng hơn).
Nếu bạn đã đi xa đến thế, chúng ta chỉ cần in đúng pixel để xem dưới dạng ký tự. Nhờ Marcel Sondaar và repo của anh ấy trên GitHub, chúng tôi sẽ không cần phải vẽ từng char.
Với một tinh chỉnh nhỏ, người ta mở rộng chương trình đơn giản của mình để in f
thay vì X
và 0
thay vào khoảng trắng, chèn khoảng trắng giữa mỗi char, thêm tiêu đề và chúng ta có tệp .ppm với chữ cái tương ứng với mã charcode của nó.
Một bước nhỏ nữa và bạn không nhận được char làm đầu vào, mà là một dòng. Cat một tập tin, đường ống đến chương trình của bạn và xuất ra /dev/fb0
và bạn nhận được một đầu ra văn bản:
Tôi cũng thử nghiệm giải pháp này trên một quả mâm xôi pi và nó đã hoạt động. Hệ thống cho tôi biết tôi không có danh tiếng để đăng nhiều hơn 2 liên kết. Cho đến khi tôi nhận được điều này, bạn phải dựa vào từ của tôi: D