pygame初始化framebuffer或x服务器

2024-04-22

我有一个类检查合适的帧缓冲区,它工作得很好。一对计算机(主要是嵌入式旧板)没有帧缓冲区,所以我删除了init(self): 函数并手动将其设置为在 X 下运行。两种方式都可以在各自的系统上运行,我只是厌倦了每次进行更改时都将其移植。

这是工作帧缓冲区代码:

    class wxdisplay :
        screen = None;

        def __init__(self):
            "Ininitializes a new pygame screen using the framebuffer"
            # Based on "Python GUI in Linux frame buffer"
            # http://www.karoltomala.com/blog/?p=679
            disp_no = os.getenv("DISPLAY")
            if disp_no:
                print "I'm running under X display = {0}".format(disp_no)

            # Check which frame buffer drivers are available
            # Start with fbcon since directfb hangs with composite output
            drivers = ['fbcon', 'directfb', 'svgalib']
            found = False
            for driver in drivers:
                # Make sure that SDL_VIDEODRIVER is set
                if not os.getenv('SDL_VIDEODRIVER'):
                    os.putenv('SDL_VIDEODRIVER', driver)
                try:
                    pygame.display.init()
                except pygame.error:
                    print 'Driver: {0} failed.'.format(driver)
                    continue
                found = True
                break

            if not found:
                raise Exception('No suitable video driver found!')

            size = (pygame.display.Info().current_w, pygame.display.Info().current_h)
            print "Framebuffer size: %d x %d" % (size[0], size[1])
            self.screen = pygame.display.set_mode(size, pygame.FULLSCREEN)class wxdisplay :

这是非帧缓冲版本:

    class wxdisplay :
        pygame.init()
        size = (1024, 768)
        screen = pygame.display.set_mode(size)
        print "Framebuffer size: %d x %d" % (size[0], size[1])

我想尝试初始化帧缓冲区,如果失败,请尝试在控制台上运行它。我尝试过或排除过的每件事都失败了......

    class wxdisplay :
        def __init__(self):
                    # Try to use framebuffer, and use the local X server if not there
                    try:
                            screen = None;
                            "Ininitializes a new pygame screen using the framebuffer"
                            # Based on "Python GUI in Linux frame buffer"
                            # http://www.karoltomala.com/blog/?p=679
                            disp_no = os.getenv("DISPLAY")
                            print("disp_no " +disp_no)
                            if disp_no:
                                    print "I'm running under X display = {0}".format(disp_no)

                            # Check which frame buffer drivers are available
                            # Start with fbcon since directfb hangs with composite output
                            drivers = ['fbcon', 'directfb', 'svgalib', 'xvfb', 'Xvfb']
                            found = False
                            for driver in drivers:
                                    # Make sure that SDL_VIDEODRIVER is set
                                    if not os.getenv('SDL_VIDEODRIVER'):
                                            os.putenv('SDL_VIDEODRIVER', driver)
                                    try:
                                            print("Driver: "+driver)
                                            pygame.display.init()
                                    except pygame.error:
                                            print 'Driver: {0} failed.'.format(driver)
                                            continue
                                    found = True
                                    print("break")
                                    break


                            if not found:
                                    raise Exception('No suitable video driver found!')

                            size = (pygame.display.Info().current_w, pygame.display.Info().current_h)
                            print "Framebuffer size: %d x %d" % (size[0], size[1])
                            self.screen = pygame.display.set_mode(size, pygame.FULLSCREEN)

                    except:
                            print('No suitable Framebuffer found!')
                            pygame.init()
                            size = (1024, 768)
                            print "X server size: %d x %d" % (size[0], size[1])
                            self.screen = pygame.display.set_mode(size)

失败并显示:

starting from __main__ call
disp_no localhost:11.0
I'm running under X display = localhost:11.0
Driver: fbcon
Driver: fbcon failed.
Driver: directfb
commandline read: python
commandline read: ./PiWxDisplay.py

~~~~~~~~~~~~~~~~~~~~~~~~~~| DirectFB 1.2.10 |~~~~~~~~~~~~~~~~~~~~~~~~~~
    (c) 2001-2008  The world wide DirectFB Open Source Community
    (c) 2000-2004  Convergence (integrated media) GmbH
  ----------------------------------------------------------------

(*) DirectFB/Core: Single Application Core. (2012-05-20 13:17)
(!) Direct/Util: opening '/dev/fb0' and '/dev/fb/0' failed
    --> No such file or directory
(!) DirectFB/FBDev: Error opening framebuffer device!
(!) DirectFB/FBDev: Use 'fbdev' option or set FRAMEBUFFER environment variable.
(!) DirectFB/Core: Could not initialize 'system_core' core!
    --> Initialization error!
Driver: directfb failed.
Driver: svgalib
Driver: svgalib failed..
No suitable Framebuffer found!
X server size: 1024 x 768
Traceback (most recent call last):
  File "./PiWxDisplay.py", line 366, in <module>
    wxdisplay().start_screen()
  File "./PiWxDisplay.py", line 66, in __init__
    self.screen = pygame.display.set_mode(size)
pygame.error: No available video device

我显然不完全理解如何正确初始化 pygame。我怎样才能得到它

  1. 检查 FB 驱动程序
  2. 如果 FB 驱动程序检测失败,请使用 X 服务器

回答晚了,但我希望我能早点尝试一下:

您可能需要成为 root 才能使用帧缓冲区驱动程序。

(这对我的情况有帮助:RaspberryPi 2 没有运行 X,但连接了屏幕。我现在可以通过 SSH 或直接在 RPi 上打开显示器)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pygame初始化framebuffer或x服务器 的相关文章

随机推荐

  • R 中的线性插值

    我有一个真实数据的数据集 例如如下所示 Dataset 1 with known data known lt data frame x c 0 6 y c 0 10 20 23 41 39 61 plot known x known y t
  • UIImage 内存未释放 VM:ImageIO_JPEG_DATA?

    我在屏幕上同时有多个水平滚动的集合视图 它们都充满了图像 所有这些图像都通过 Parse api 在后台加载 我正在运行 Instrument 的分配 并且匿名 VM ImageIO JPEG DATA 类别占用了大部分正在使用的内存 应用
  • linux终端动画-延迟打印“帧”的最佳方法(C语言)

    我正在为终端开发一个简单的 pong 克隆 并且需要一种方法来延迟 帧 的打印 我有一个二维数组 screen ROWS COLUMNS 以及打印屏幕的函数 void printScreen int i 0 int j while i lt
  • 与 Matlab 相比,Numpy 加载 csv 太慢

    我发布这个问题是因为我想知道我是否做了一些非常错误的事情才能得到这个结果 我有一个中等大小的 csv 文件 我尝试使用 numpy 来加载它 为了便于说明 我使用 python 创建了该文件 import timeit import num
  • 使用 Angular 5 和 RxJS 观察带有过滤器的数组

    我正在创建一个简单的论坛 我正在寻找过滤帖子 我在 RxJS 中使用 pipe 和 filter 时遇到一些问题 我试图 从内存中检索 api 帖子列表api posts 当与 http get 一起使用时 它返回一个Observable
  • Android appbarlayout 海拔出现在状态栏中

    如何消除状态栏中的高度 如果我在 AppbarLayout 中将 app elevation 设置为 0dp 则标高不再出现在状态栏中 但也不会出现在 AppbarLayout 下方 如何获取 AppbarLayout 下的高度 这是我的意
  • Rails/Devise - 我应该使用 devise 和 rspec 测试什么?

    许多程序员使用 devise 作为他们的身份验证解决方案 我想得到他们的建议 设计已经经过测试 但我想知道是否需要自己测试一些东西 集成 单元 功能测试 以便与我的知识进行标准设计集成 我不熟悉shoulda和cucumber 但我了解一些
  • 在 HTML 中正确对齐图像和文本

    This is the example 我想对齐image与名称并排 但不知何故 图像只是浮得更高一点 有什么帮助吗 UPDATE profile name header background color 006400 font famil
  • NPM5,package-lock.json 与 package.json 有什么区别?

    将NPM更新到版本5后 我发现package lock json包含 package json 的文件 这两个文件有什么区别 有什么优点package lock json package json 文件 列出您的项目所依赖的包 允许您使用语
  • 如何检查 iPhone 上的自定义 url 方案?

    我想在我的应用程序中使用自定义 url 方案 例如调用 navigons mobile navigator 首先 我想检查是否安装了 navigon 或者至少检查自定义 url 方案 navigon 是否已注册 有任何想法吗 多谢 看看 U
  • C 函数堆栈布局

    我有一个看起来像这样的函数 int bof char str char buffer 12 strcpy buffer str return 1 我正在尝试覆盖其返回地址 我发现我可以通过使用来做到这一点 例如 memcpy buffer
  • 使用 DTO 和 BO

    我对 DTO BO 的疑问之一是何时传递 返回 DTO 以及何时传递 返回 BO 我的直觉告诉我始终将 NHibernate 映射到 DTO 而不是 BO 并且始终传递 返回 DTO 然后 每当我需要执行业务逻辑时 我都会将 DTO 转换为
  • 在predict.lm()中使用聚类协方差矩阵

    我正在分析一个数据集 其中数据聚集在多个组 区域中的城镇 中 数据集如下所示 R gt df lt data frame x rnorm 10 y 3 rnorm x groups factor sample c 0 1 10 TRUE R
  • 如何调试 Heroku 请求超时错误

    我如何找出导致 heroku 上 h12 超时错误的原因 它在不同的页面 控制器上随机发生 这是我从日志中得到的错误 Processing by UsersController new as HTML 2013 08 15T13 08 54
  • 使用 script/api 更改组件服务 > COM 安全中的访问权限?

    是否有一个 api 可以更改 COM 安全的访问权限 我需要将新值写入 编辑限制 和 编辑默认值 这些是普通的注册表设置吗 找不到如何设置这些条目 快速答案是是 它们是注册表设置 长答案是否 它们不是simple注册表设置 这些值是二进制的
  • 确定线段是否与多边形相交

    如果我在 2D 平面上有一个向量 由 2 个点组成的线 我如何确定它是否穿过多边形 我知道我可以采用构成多边形的每条线并查看是否有相交 但有更好的方法吗 我读过这篇文章如何确定 2D 点是否在多边形内 https stackoverflow
  • 如何从 Swift 3 中的文本视图中删除查找和共享

    我可以使用它删除剪切 复制 粘贴 选择 选择所有内容 override public func canPerformAction action Selector withSender sender Any gt Bool if action
  • 在sqlalchemy中跨不同模块访问相同的db.session

    我对 sqlalchemy 非常陌生 正在尝试找出如何让事情变得更干净和连接 我创建了一个 model base py 文档 在其中创建了一个会话并在表中建立了所有实体 以及关系等 我想创建另一个模块 在其中对 base py 中的实体 表
  • 如果列数据重复,mysql 不会对行进行两次计数

    我正在计算名为 mysql 表的行数ptb profile views 我的桌子看起来像这样 id profile id viewed profile id date time 1 1 6 2 2 6 3 2 6 4 2 6 5 3 6 目
  • pygame初始化framebuffer或x服务器

    我有一个类检查合适的帧缓冲区 它工作得很好 一对计算机 主要是嵌入式旧板 没有帧缓冲区 所以我删除了init self 函数并手动将其设置为在 X 下运行 两种方式都可以在各自的系统上运行 我只是厌倦了每次进行更改时都将其移植 这是工作帧缓