Raspberry pi 用于覆盆子皮的触摸屏Kivy应用程序

Raspberry pi 用于覆盆子皮的触摸屏Kivy应用程序,raspberry-pi,x11,kivy,touchscreen,Raspberry Pi,X11,Kivy,Touchscreen,下面是一个场景:我已经使用python框架编写了一个gui,我想在raspberry pi上运行它。我已经很好地完成了安装,TSLIB\u FBDEVICE=/dev/fb1 TSLIB\u TSDEVICE=/dev/input/touchscreen FRAMEBUFFER=/dev/fb1 nohup startx&使xwindow桌面gui运行良好。不过,我一直无法让我的KivyGUI工作。我能够得到一个测试tkinter应用程序工作正常,由 设置显示环境变量 我尝试将以下内容放在我的k

下面是一个场景:我已经使用python框架编写了一个gui,我想在raspberry pi上运行它。我已经很好地完成了安装,
TSLIB\u FBDEVICE=/dev/fb1 TSLIB\u TSDEVICE=/dev/input/touchscreen FRAMEBUFFER=/dev/fb1 nohup startx&
使xwindow桌面gui运行良好。不过,我一直无法让我的KivyGUI工作。我能够得到一个测试tkinter应用程序工作正常,由 设置
显示
环境变量

我尝试将以下内容放在我的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>
[INFO][Logger]记录登录/home/pi/.kivy/logs/kivy_14-04-21_10.txt
[信息]Kivy v1.8.1-dev
[INFO][Python]v2.7.3(默认,2014年3月18日,05:13:23)
[GCC 4.6.3]
[信息][工厂]已加载157个符号
[信息][图片]提供商:img_-tex、img_-dds、img_-pygame、img_-gif(img_-pil忽略)
[信息][文本]提供商:pygame
[INFO][Loader]使用2个工作线程池
[信息][窗口]提供商:egl_rpi
[信息][GL]OpenGL版本
[信息][GL]OpenGL供应商
[INFO][GL]OpenGL渲染器
[INFO][GL]OpenGL解析版本:2,0
[信息][GL]明暗处理版本
[信息][GL]纹理最大大小
[信息][GL]纹理最大单位
[信息][着色器]片段着色器:
[信息][着色器]顶点着色器:
[信息][窗口]不允许使用虚拟键盘,单模,未对接
[INFO][GL]提供NPOT纹理支持
[信息][OSC]用于插座
[INFO][ProbeSysfs]设备匹配:/dev/input/event0
[INFO][HIDInput]从中读取事件
[INFO][Base]启动应用程序主循环
[INFO][HIDMotionEvent]使用
我对帧缓冲区之类的东西知之甚少;我希望有人能给我指出正确的方向。似乎我提到的上述环境变量对于让pygame应用程序显示非常有用,而kivy是基于pygame构建的

一些链接:

  • 是我现在正在尝试的东西,以防需要设置显示器和FBDEV。我还将检查并查看是否实际安装了directfb或fbcon
  • 相关的kivy谷歌集团
  • 我可以试试
与去年四月相比,我很难找到任何直接与此相关的信息


任何帮助都将不胜感激。提前谢谢

这行不通。SPI屏幕在由CPU控制的SPI上工作:

Kivy使用树莓Pi的GPU,而不是SPI或X11。据我所知,在SPI上显示加速的GLES应用程序将不起作用


也就是说,您可以通过从X11之外的命令行执行任何GLES软件来确认此行为。我发现,通过在/boot/config.txt中取消对以下行的注释,可以实现此功能

disable_overscan=1
然后启动fbcp

fbcp &
运行示例showcase演示(我为kivy for python3.4编译):


触摸功能正常,除了y轴倒置。

Kivy对RPi的支持不完整,但基本功能正常。我能够在我的RPi上运行这些示例-窗口只是在所有其他窗口的顶部绘制,鼠标光标不显示(但单击“工作”),键盘输入不工作(因此我必须将Tab键切换到终端,然后按Ctrl-C键终止应用程序)。你在运行raspbian吗?您是否最新(sudo-apt-get-update和sudo-apt-get-dist-upgrade)?顺便说一句,您不需要设置任何SDL环境变量,它们将被忽略。Kivy在RPi上使用VideoCore EGL库。我在raspbian上,并且是最新的,运行Kivy dev v1.8.1。谢谢你对SDL的介绍。我在kivy源代码中使用了不同的窗口提供程序,但它们都出错了。似乎最好的窗口提供程序(也是默认的)是egl_rpi。默认配置没有任何错误,只是无法显示窗口。非常有用的答案,谢谢。我会在星期五再进办公室的时候测试一下,看有没有人在工作。同时,我想知道你是否可以推荐一种替代kivy的在pi上制作gui的方法?我看过皮加梅和特金特。两者都很笨重,但都能起作用。Tkinter很容易开始,所以我可能会咬紧牙关,坚持下去。我们确实需要库几乎不受限制,因此LGPL3或MIT或BSD许可证将是最好的。再次感谢您,这是一个非常有启发性的答案。仔细考虑一下,您是否认为有可能以某种方式将加速图形转储到帧缓冲区(例如,/dev/fb1)?这个触摸屏有视频功能。不确定这是否相关。我为我的无知道歉,我只是刚刚开始。我没有足够的技术知识来告诉你这是否可行。至于在没有GLE的Rpi上做UI,任何标准的工具包都可以(tkinter、qt、gtk等)如果是游戏,pygame可能是更好的/标准的选择。再一次,这仅仅是我对SPI的理解,我在等待你的确认:)我发现这很有用,尽管触摸仍然有问题。基本上,它用于从
/dev/fb0
转储到
/dev/fb1
python3.4 kivy/examples/demo/showcase/main.py