目标:我正在为帧缓冲区编写一个非常简单的图像查看器/dev/fb0
(类似于fbi)。
当前状态:
/sys/class/graphics/fb0/virtual_size
我的软件从(例如)中获取像素分辨率1920,1080
。/dev/fb0
. 这在我的一台分辨率为 1920x1080 的笔记本电脑上运行得非常好。y
更准确地说:在-row x
-col =>处设置一个像素,arr[y * 1920 * 4 + x * 4 + channel]
其中值为channel
(0,1,2,3
分别为B
、G
、R
和A
)。问题:
/sys/.../virtual_size
当我在旧笔记本电脑上使用( ->分辨率)尝试相同的软件时1366,768
,图像未正确显示(有点倾斜)。所以我研究了像素宽度值,发现该值为1376(而不是 1366)。
问题:
我已经看过这个问题,并且解决方案在我可以在我的虚拟控制台中显示图像的范围内有效。但是,如果我首先tmux
在虚拟控制台中启动 a ,然后尝试fbi <imagename>
,则会失败并显示以下错误。
using "DejaVu Sans Mono-16", pixelsize=16.67 file=/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf
ioctl VT_GETSTATE: Inappropriate ioctl for device (not a linux console?)
Run Code Online (Sandbox Code Playgroud)
是否有解决方法,例如某些设置tmux
将允许它使用fbi
?
我fbi
用来显示一些图像。fbi
有一些键盘控制,如+
,-
,Page Up
,Page Down
,等来控制图像。
我不想使用键盘,而是想通过 SSH 将这些控制命令发送到fbi
.
我已经尝试过以下方法:
mkfifo /tmp/mycmd
fbi /myfolder/*.jpg < /tmp/mycmd &
Run Code Online (Sandbox Code Playgroud)
这样做后,fbi
不启动。我尝试发送一些命令,例如echo . > /tmp/mycmd
,但它没有启动;并给出以下错误:
using "DejaVu Sans Mono-16", pixelsize=16.67 file=/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf
ioctl VT_GETSTATE: Inappropriate ioctl for device (not a linux console?)
Run Code Online (Sandbox Code Playgroud)
问题是什么?
如何fbi
通过 SSH发送命令!?