2014-04-21 4 views
4

Вот сценарий: я написал gui с использованием рамки python Kivy, и я хочу запустить его на малине pi с помощью this touchscreen. Я отлично выполнил установку, и TSLIB_FBDEVICE=/dev/fb1 TSLIB_TSDEVICE=/dev/input/touchscreen FRAMEBUFFER=/dev/fb1 nohup startx & получает превосходный рабочий стол xwindow. Тем не менее, я не мог заставить работать киви-ги. Я смог получить тестовое приложение tkinter, работающее нормально, на , задав переменную окружения DISPLAY.Touchscreen Kivy app для Raspberry Pi

Я попытался положить следующую строку в верхней части моего 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 Я могу попробовать

У меня было трудно найти что-либо непосредственно на это гораздо позже, чем апреле прошлого года.

Любая помощь была бы принята с благодарностью. Заранее спасибо!

+0

Kivy поддержка RPi является неполной, но основы действительно работают.Я могу запускать примеры на своем RPi - окно просто рисует поверх всего остального, курсор мыши не показывает (но работает на кликах), а ввод с клавиатуры не работает (поэтому мне нужно добавить Alt-Tab к моему терминал, а затем нажмите Ctrl-C, чтобы убить приложение). –

+1

Вы используете raspbian? И вы обновлены (sudo apt-get update && sudo apt-get dist-upgrade)? BTW - вам не нужно устанавливать какие-либо из этих переменных среды SDL, они все равно будут проигнорированы. Kivy использует библиотеку VideoCore EGL на RPi. –

+0

Я на raspbian, и я в курсе, запустив kivy-dev v1.8.1. Спасибо за освещение на материале SDL. Я перепутал с использованием разных поставщиков окон в источнике kivy, но все они ошибались хуже. Поставщиком окна, который кажется лучшим (и по умолчанию), является egl_rpi. Я не получаю никаких ошибок при настройке по умолчанию, окно просто не отображается. – jstaab

ответ

3

Это не будет работать. Экран SPI работает на SPI, который контролируется вашим CPU: http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus

Kivy использует графический процессор Raspberry Pi, а не SPI или X11. Насколько я понимаю, отображение ускоренного приложения GLES в SPI не будет работать.

То есть, вы могли бы подтвердить это поведение, выполнив любое программное обеспечение Глес из командной строки вне X11

+0

Супер полезный ответ, спасибо. Я проверю, что никакой GLES не работает в пятницу, когда я снова войду в офис. Тем временем мне было интересно, можете ли вы порекомендовать альтернативу kivy для создания gui на пи? Я посмотрел на pygame и tkinter. Оба они неуклюжи, но будут работать. Tkinter было легко начать, поэтому я могу просто укусить пулю и пойти с этим. Нам очень нужна библиотека, поэтому лицензии LGPL3 или MIT или BSD будут лучшими. Еще раз спасибо, это был очень освещающий ответ. – jstaab

+0

Подумав об этом немного, как вы думаете, можно было бы как-то сбрасывать ускоренную графику в фреймбуфер (скажем,/dev/fb1)? На этом сенсорном экране работает видео. Не уверен, что это связано. Я извиняюсь за свое невежество - просто начинаю со всего этого. – jstaab

+1

Мне не хватает технических знаний, чтобы сказать вам, возможно ли это или нет. Что касается выполнения пользовательского интерфейса на Rpi без GLES, любой стандартный инструментарий будет выполнять работу (tkinter, qt, gtk и т. Д.). Если это игра, pygame может быть лучшим/стандартным выбором. Опять же, это только из моего понимания SPI, я жду вас для подтверждения :) – tito

0

Я нашел эту работу раскомментировав следующую строку в /boot/config.txt

disable_overscan=1 

затем начинает fbcp

fbcp & 

и работает, например, витрина демо (я компилировать его для kivy для Пыть hon3.4):

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

kivy running on SPI display

касания работает, за исключением того, что моя ось у перевернута.