如何使用 pygame 通过 HDMI 在 /dev/fb0 上显示某些内容(使用 raspian OS lite)

问题描述 投票:0回答:1

我正在尝试让 pygame 将 anything 发送到运行精简版 raspbian 的树莓派上的帧缓冲区 /dev/fb0。我通过 ssh 连接,图像应该显示在 HDMI 输出上。

我可以发送一些东西到 /dev/fb0 显示出来

sudo fbi -T 1 1.jpg

发送图像文件,我可以在显示器上看到

while true; do sudo cat /dev/urandom > /dev/fb0; sleep .01; done

发送白噪声。

如何将 pygame 连接到“/dev/fb0”?

我尝试了很多例子,但没有一个起作用。

例如这段代码给了我一个错误

import os, pygame, time

def setSDLVariables(driver):
    print("Setting SDL variables...")
    os.environ["SDL_FBDEV"] = "/dev/fb0"
    os.environ["SDL_VIDEODRIVER"] = driver
    print("...done") 

def printSDLVariables():
    print("Checking current env variables...")
    print("SDL_VIDEODRIVER = {0}".format(os.getenv("SDL_VIDEODRIVER")))
    print("SDL_FBDEV = {0}".format(os.getenv("SDL_FBDEV")))

setSDLVariables('fbcon')
printSDLVariables()

try:
    pygame.init()
except pygame.error:
    print("Driver '{0}' failed!".format(driver))
size = (pygame.display.Info().current_w, pygame.display.Info().current_h)
print("Detected screen size: {0}".format(size))

退货

pi@raspberrypi:~/pve_img $ sudo python3 pg.py
pygame 2.1.2 (SDL 2.0.14, Python 3.9.2)
Hello from the pygame community. https://www.pygame.org/contribute.html
Setting SDL variables...
...done
Checking current env variables...
SDL_VIDEODRIVER = fbcon
SDL_FBDEV = /dev/fb0
Traceback (most recent call last):
    File "/home/pi/pve_img/pg.py", line 22, in <module>
    size = (pygame.display.Info().current_w, pygame.display.Info().current_h)
pygame.error: video system not initialized

关于 2021 年使用帧缓冲区运行 pygame 有什么提示吗?

pygame framebuffer
1个回答
0
投票

解决方案:

我已经使用 pip 安装了 pygame。

sudo python3 -m pip install pygame

卸载 pygame 和安装 pygame 的方式不同

sudo apt-get install python3-pygame

然后我可以将内容发送到屏幕上。示例

screen = pygame.display.set_mode(size )
clock = pygame.time.Clock()

for x in range(20):
    screen.fill((0, 0, 0))
    pygame.display.flip()
    clock.tick(1)
    screen.fill((200, 200, 0))
    pygame.display.flip()
    clock.tick(1)

安装适用于上述代码的版本。

2024 年更新

对于任何想尝试这个的人: 虽然这可行,但在生产中使用起来太麻烦了。我们最终启动了 xserver 并直接启动 pygame(不显示桌面)——这会导致更少的问题,并且仍然允许启动到 pygame。

© www.soinside.com 2019 - 2024. All rights reserved.