适用于Raspberry Pi的触摸屏Kivy应用

时间:2014-04-21 19:37:39

标签: raspberry-pi x11 kivy touchscreen

以下是场景:我使用python框架Kivy编写了一个gui,我希望在this touchscreen的覆盆子pi上运行它。我已经完成了安装,TSLIB_FBDEVICE=/dev/fb1 TSLIB_TSDEVICE=/dev/input/touchscreen FRAMEBUFFER=/dev/fb1 nohup startx &让xwindow桌面gui正常运行。但是,我无法让我的kivy gui工作。我能够通过测试tkinter应用程序正常工作  设置DISPLAY环境变量。

我尝试将以下内容放在我的kivy应用程序的顶部,但无济于事:

os.environ['SDL_VIDEODRIVER'] = 'fbcon'
os.environ['SDL_FBDEV'] = '/dev/fb1'
os.environ['SDL_MOUSEDRV'] = 'TSLIB'
os.environ['SDL_MOUSEDEV'] = '/dev/input/touchscreen'

当我运行我的应用程序时,这是调试输出:

[INFO   ] [Logger      ] Record log in /home/pi/.kivy/logs/kivy_14-04-21_10.txt
[INFO   ] Kivy v1.8.1-dev
[INFO   ] [Python      ] v2.7.3 (default, Mar 18 2014, 05:13:23) 
[GCC 4.6.3]
[INFO   ] [Factory     ] 157 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_pygame, img_gif (img_pil ignored)
[INFO   ] [Text        ] Provider: pygame
[INFO   ] [Loader      ] using a thread pool of 2 workers
[INFO   ] [Window      ] Provider: egl_rpi
[INFO   ] [GL          ] OpenGL version <OpenGL ES 2.0>
[INFO   ] [GL          ] OpenGL vendor <Broadcom>
[INFO   ] [GL          ] OpenGL renderer <VideoCore IV HW>
[INFO   ] [GL          ] OpenGL parsed version: 2, 0
[INFO   ] [GL          ] Shading version <OpenGL ES GLSL ES 1.00>
[INFO   ] [GL          ] Texture max size <2048>
[INFO   ] [GL          ] Texture max units <8>
[INFO   ] [Shader      ] fragment shader: <Compiled>
[INFO   ] [Shader      ] vertex shader: <Compiled>
[INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
[INFO   ] [GL          ] NPOT texture support is available
[INFO   ] [OSC         ] using <multiprocessing> for socket
[INFO   ] [ProbeSysfs  ] device match: /dev/input/event0
[INFO   ] [HIDInput    ] Read event from </dev/input/event0>
[INFO   ] [Base        ] Start application main loop
[INFO   ] [HIDMotionEvent] using <stmpe-ts>

我对框架缓冲器等知之甚少(知之甚少);我希望有人能指出我正确的方向。看来我提到的上述环境变量对于让pygame应用程序显示是有用的,而kivy是基于pygame构建的。

一些链接:

  • This是我现在正在尝试的,以防需要设置DISPLAY和FBDEV。我还要检查一下,看看我是否实际安装了directfb或fbcon。
  • 相关的kivy google小组issue
  • A fork我可以尝试

我很难在去年四月之后直接找到这些东西。

非常感谢任何帮助。提前谢谢!

2 个答案:

答案 0 :(得分:3)

这不起作用。 SPI屏幕适用于由CPU控制的SPI:http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus

Kivy使用Raspberry Pi的GPU,而不是SPI或X11。据我了解,在SPI上显示加速的GLES应用程序是行不通的。

即,您可以通过X11以外的命令行执行任何GLES软件来确认此行为

答案 1 :(得分:0)

我发现这可以通过取消注释/boot/config.txt

中的以下行来实现
disable_overscan=1

然后启动fbcp

fbcp &

并运行例如展示演示(我为python3.4编译为kivy):

python3.4 kivy/examples/demo/showcase/main.py

kivy running on SPI display

触摸有效,但我的y轴反转。