/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는 .ppm 파일로 입력되는 fbsplash 바이너리를 가지고있었습니다.
내가 틀렸다면 맞지만 fb0
이 형식 을 받아들이는 것 같습니다 . Wikipedia의 Portable Anymap을 살펴보면 몇 가지 "서브 포맷"이 있습니다 ... fbsplash는 색상이있는 멋진 것을 사용합니다. 그러나 우리는 읽을 수있는 것을 인쇄 할 수 있기를 원합니다. 단순성을 위해 ASCII로 코딩 된 P1을 사용합시다. 세로선을 인쇄 할 수 있으면 치수가 올바른 것입니다. 해 봅시다:
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 자입니다. 문서에 따르면 busybox에서 f ... 대신 1이어야하고 raspi f는 더 밝았습니다.
0 뒤에 공백이없는 것이 중요합니다 ...이 작업은 약간 지루할 수 있습니다 ... 텍스트 편집기를 사용하는 것이 좋습니다. vim에서는 처음 두 줄을 복사하여 다음 문자를 입력하는 것보다 명령 모드 (esc)로 이동할 수 있습니다.
of(esc)479a 0(esc)yy271p
물론, 나는 내 치수를 사용하고 있습니다. 이 파일을 /dev/fb0
에 배치하면 다음과 같아야합니다.
좋아, 속임수입니다 ... 그것은 단지 한 줄이 아닙니다 ... 그것은 약 8입니다 ...하지만 그것이 작동하지 않을 때 (우리는 잘못된 치수를 가지고 있거나 끝에 공간이 있습니다. 한 줄만 있으면됩니다. 쉽게).
당신이 그것을 멀리 가지고 있다면, 우리는 문자로 볼 수있는 올바른 픽셀을 인쇄해야합니다. Marcel Sondaar와 GitHub의 그의 repo 덕분에 우리는 각 문자를 그릴 필요가 없습니다.
작은 팅겨 하나와 함께 인쇄 할 그의 간단한 프로그램을 확장 f
하는 대신 X
하고 0
, 각 문자 사이에 공백 삽입하는 대신 공간의 헤더를 추가하고 우리는 charCode 값을 해당하는 문자와 .ppm 파일이 있습니다.
한 걸음 더 나아가서 문자를 입력으로 얻지 않고 줄을 얻습니다. 파일을 정리하고 프로그램으로 파이프하고 출력 /dev/fb0
하면 텍스트 출력이 나타납니다.
나는이 솔루션을 라즈베리 파이에서도 테스트했으며 효과가있었습니다. 시스템에 2 개 이상의 링크를 게시 한 것으로 평판이 없다고 알려줍니다. 내가 이것을 얻을 때까지, 당신은 내 말에 의지해야합니다 : D