2014-04-21 61 views
4

這裏是場景:我已經寫了一個使用python框架Kivy的GUI,我想在this touchscreen的覆盆子pi上運行它。我已經做好了安裝,並且TSLIB_FBDEVICE=/dev/fb1 TSLIB_TSDEVICE=/dev/input/touchscreen FRAMEBUFFER=/dev/fb1 nohup startx &獲得xwindow桌面gui運行良好。不過,我一直無法讓我的kivy gui工作。我能夠通過 設置DISPLAY環境變量來獲得測試tkinter應用程序正常工作。觸摸屏Kivy應用程序樹莓派

我試圖把我的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是什麼我想現在,在這兩種情況下,顯示器和的fbdev需要進行設置。我也要檢查一下,看看我是否已經安裝了directfb或fbcon。
  • 相關kivy谷歌組issue
  • A fork我可能會嘗試

我已經很難直接在這一發現任何明顯較去年四月。

任何幫助將不勝感激。提前致謝!

+0

Kivy對RPi的支持不完整,但基本功能仍然有效。我能夠在我的RPi上運行這些示例 - 窗口只是繪製其他所有內容,鼠標光標不顯示(但點擊工作),並且鍵盤輸入不起作用(所以我必須使用Alt-Tab鍵終端,然後按Ctrl-C殺死該應用程序)。 –

+1

你運行raspbian嗎?你是最新的(sudo apt-get update && sudo apt-get dist-upgrade)?順便說一句 - 你不需要設置任何SDL環境變量,它們將被忽略。 Kivy在RPi上使用VideoCore EGL庫。 –

+0

我是raspbian,我是最新的,運行kivy-dev v1.8.1。感謝SDL內容的照明。我在kivy源代碼中使用了不同的窗口提供程序,但他們都犯了錯誤。似乎最好的(並且是默認的)窗口提供程序是egl_rpi。我沒有得到任何錯誤的默認配置,窗口只是無法顯示。 – jstaab

回答

3

這不起作用。 SPI屏幕適用於由您的CPU控制的SPI:http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus

Kivy使用Raspberry Pi的GPU,而不是SPI或X11。根據我的理解,在SPI上顯示加速的GLES應用程序將不起作用。

也就是說,你可以通過執行命令行的任何GLES軟件X11

+0

超級有用的答案,謝謝。我會測試一下,當我再次進入辦公室時,週五沒有任何GLES工作。與此同時,我想知道你是否可以推薦一個替代kivy來製作pi的GUI?我看過pygame和tkinter。兩者都笨重,但會起作用。 Tkinter很容易入門,所以我可能只是咬緊牙關,然後去做。我們確實需要圖書館幾乎不受限制,所以LGPL3或麻省理工學院或BSD許可證將是最好的。再次感謝,這是一個非常有啓發性的答案。 – jstaab

+0

考慮到這一點後,你認爲有可能以某種方式將加速圖形轉儲到幀緩衝區(比如/ dev/fb1)?這個觸摸屏有視頻工作。不確定這是否相關。我爲我的無知道歉 - 剛開始這一切。 – jstaab

+1

我沒有足夠的技術知識來告訴你它是否可行。至於在沒有GLES的情況下在Rpi上做UI,任何標準工具包都可以完成這個工作(tkinter,qt,gtk等)。如果是遊戲,pygame可能是更好的/標準的選擇。 同樣,這只是從我的SPI的理解,我在等你確認:) – tito

0

之外,我發現這個確認此行爲通過取消註釋下面的行/boot/config.txt工作

disable_overscan=1 

然後開始fbcp

fbcp & 

和例如運行Showcase演示(我編譯它kivy的PYT hon3.4):

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

kivy running on SPI display

觸摸作品,除了我的y軸反轉。