Kivy: لم يتمكن Buster RPi4B من العثور على موفر Window ذي قيمة من وحدة تحكم سطح المكتب الأقل

تم إنشاؤها على ١٥ أغسطس ٢٠١٩  ·  113تعليقات  ·  مصدر: kivy/kivy

بعد تسجيل الدخول إلى Raspberry Pi 4B في سطر الأوامر (باستخدام تمهيد raspi-config إلى CLI) ، لا يمكن تنفيذ kivy بسبب خطأ فادح عند محاولة استخدام أي موفر kivy Window: egl_rpi أو sdl2 أو pygame أو x11. تسرد هذه المشكلة المحاولات والنتائج لكل من موفري Window هؤلاء. يتم سرد هؤلاء الموفرين في الصفحة التالية:

https://kivy.org/doc/stable/guide/environment.html

KIVY_WINDOW
التنفيذ لاستخدامه في إنشاء النافذة
القيم: sdl2 ، pygame ، x11 ، egl_rpi

إصدارات

وصف

تم استخدام نفس برنامج test.py المدرج أدناه لاختبار جميع موفري Window المذكورين أعلاه. يتم تغيير السطر الثاني لكل نتيجة اختبار.

import os
#os.environ['KIVY_WINDOW'] = 'egl_rpi'
from kivy.app import App
from kivy.uix.button import Button

class TestApp(App):
    def build(self):
        return Button(text='Hello World')

TestApp().run()

عندما لا يتم تعريف KIVY_WINDOW (افتراضيًا) (test.py أعلاه) ، تحصل على النتائج التالية:

[DEBUG  ] [Window      ] Provider <egl_rpi> ignored by config
[DEBUG  ] [Window      ] Provider <sdl2> ignored by config
[DEBUG  ] [Window      ] Provider <x11> ignored by config
[CRITICAL] [Window      ] Unable to find any valuable Window provider. 
[CRITICAL] [App         ] Unable to get a Window, abort.

بعد تغيير السطر 2 بإزالة علامة # ، حصلت على النتائج التالية:

[DEBUG  ] [Window      ] Ignored <egl_rpi> (import error)
[DEBUG  ] [Window      ] Provider <sdl2> ignored by config
[DEBUG  ] [Window      ] Provider <x11> ignored by config
[CRITICAL] [Window      ] Unable to find any valuable Window provider. 
egl_rpi - ImportError: cannot import name 'bcm' from 'kivy.lib.vidcore_lite' (/usr/local/lib/python3.7/dist-packages/kivy/lib/vidcore_lite/__init__.py)
  File "/usr/local/lib/python3.7/dist-packages/kivy/core/__init__.py", line 63, in core_select_lib
    fromlist=[modulename], level=0)
  File "/usr/local/lib/python3.7/dist-packages/kivy/core/window/window_egl_rpi.py", line 12, in <module>
    from kivy.lib.vidcore_lite import bcm, egl
[CRITICAL] [App         ] Unable to get a Window, abort.

بعد تغيير السطر 2 إلى os.environ['KIVY_WINDOW'] = 'sdl2' ، حصلت على النتائج التالية:

[DEBUG  ] [Window      ] Provider <egl_rpi> ignored by config
[INFO   ] [Window      ] Provider: sdl2(['window_egl_rpi'] ignored)
[DEBUG  ] [Window      ] Provider <x11> ignored by config
[CRITICAL] [Window      ] Unable to find any valuable Window provider. Please enable debug logging (e.g. add -d if running from the command line, or change the log level in the config) and re-run your app to identify potential causes
sdl2 - RuntimeError: b'Could not initialize EGL'
  File "/usr/local/lib/python3.7/dist-packages/kivy/core/__init__.py", line 71, in core_select_lib
    cls = cls()
  File "/usr/local/lib/python3.7/dist-packages/kivy/core/window/window_sdl2.py", line 152, in __init__
    super(WindowSDL, self).__init__()
  File "/usr/local/lib/python3.7/dist-packages/kivy/core/window/__init__.py", line 981, in __init__
    self.create_window()
  File "/usr/local/lib/python3.7/dist-packages/kivy/core/window/window_sdl2.py", line 290, in create_window
    self.get_gl_backend_name())
  File "kivy/core/window/_window_sdl2.pyx", line 224, in kivy.core.window._window_sdl2._WindowSDL2Storage.setup_window
  File "kivy/core/window/_window_sdl2.pyx", line 74, in kivy.core.window._window_sdl2._WindowSDL2Storage.die
[CRITICAL] [App         ] Unable to get a Window, abort.

بعد تغيير السطر 2 إلى os.environ['KIVY_WINDOW'] = 'pygame' ، حصلت على النتائج التالية:

[DEBUG  ] [Window      ] Provider <egl_rpi> ignored by config
[DEBUG  ] [Window      ] Provider <sdl2> ignored by config
[DEBUG  ] [Window      ] Provider <x11> ignored by config
[CRITICAL] [Window      ] Unable to find any valuable Window provider. 
[CRITICAL] [App         ] Unable to get a Window, abort.

بعد تغيير السطر 2 إلى os.environ['KIVY_WINDOW'] = 'x11' ، حصلت على النتائج التالية:

[DEBUG  ] [Window      ] Provider <sdl2> ignored by config
[DEBUG  ] [Window      ] Ignored <x11> (import error)
[CRITICAL] [Window      ] Unable to find any valuable Window provider. 
x11 - ModuleNotFoundError: No module named 'kivy.core.window.window_x11'
  File "/usr/local/lib/python3.7/dist-packages/kivy/core/__init__.py", line 63, in core_select_lib
    fromlist=[modulename], level=0)
[CRITICAL] [App         ] Unable to get a Window, abort.

التعليق الأكثر فائدة

فيما يلي إرشادات حول كيفية تثبيت وتشغيل تطبيق Kivy عند التمهيد على Buster lite:

قم أولاً بتثبيت xserver-org ، حيث نحتاجها لإظهار النافذة الفعلية:

sudo apt-get -y install xserver-xorg

بعد ذلك ، أقوم بتثبيت nodm من المصدر ، لذا فهو يتضمن الإصلاح التالي: https://github.com/spanezz/nodm/pull/10 :

sudo apt-get -y install libpam0g-dev help2man libx11-dev debhelper
git clone https://github.com/slashblog/nodm.git
pushd nodm
    git checkout d48a8f6266d3f464138e0e95b65896917c35c89f
    source /etc/os-release  # Will set the 'VERSION' variable
    if [ "$(echo $VERSION | sed -En 's/[0-9]+ \(([a-z]+)\)/\1/p')" == "buster" ]; then
        wget http://deb.debian.org/debian/pool/main/n/nodm/nodm_0.13-5.debian.tar.xz
    else
        wget http://deb.debian.org/debian/pool/main/n/nodm/nodm_0.13-1.3.debian.tar.xz
    fi
    tar xf nodm_0.13-*.debian.tar.xz
    sudo dpkg-buildpackage -us -uc -b
popd
sudo dpkg -i nodm_0.13-*_armhf.deb
sudo rm -rf nodm*

الآن قم بتمكين تسجيل الدخول الرسومي:

sudo systemctl set-default graphical.target

قم بتكوين nodm وابدأ تشغيل تطبيقنا عند التشغيل:

# Has the same effect as calling 'sudo dpkg-reconfigure nodm'
sudo sh -c 'echo "NODM_ENABLED=true" > /etc/default/nodm'
sudo sh -c 'echo "NODM_USER=$SUDO_USER" >> /etc/default/nodm' # Note that the variable SUDO_USER is used
sudo sh -c 'echo "NODM_FIRST_VT='\''7'\''" >> /etc/default/nodm'
sudo sh -c 'echo "NODM_XSESSION=/etc/X11/Xsession" >> /etc/default/nodm'
sudo sh -c 'echo "NODM_X_OPTIONS='\''-nolisten tcp'\''" >> /etc/default/nodm'
sudo sh -c 'echo "NODM_MIN_SESSION_TIME=60" >> /etc/default/nodm'
sudo sh -c 'echo "NODM_X_TIMEOUT=300" >> /etc/default/nodm'

# Start the app using nodm
echo '#!/bin/bash' > ~/.xsession
echo 'export DISPLAY=:0.0' >> ~/.xsession
echo "~/venv-kivy/bin/python3 ~/app.py" >> ~/.xsession

قم بإعداد بيئة افتراضية:

sudo apt-get -y install python3-pip python3-venv
sudo pip3 install -U pip
python3 -m venv venv-kivy
source ~/venv-kivy/bin/activate

تثبيت تبعيات Kivy:

sudo apt-get -y install python3-dev libmtdev1 libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev
sudo apt-get -y install pkg-config libgl1-mesa-dev libgles2-mesa-dev libgstreamer1.0-dev gstreamer1.0-plugins-{bad,base,good,ugly} gstreamer1.0-{omx,alsa} libmtdev-dev
pip3 install -U pygments docutils Cython==0.29.10 wheel

حان الوقت الآن لتجميع Kivy وتثبيته. لاحظ أنني أستخدم مفترقتي مع التصحيح ، لذلك لا تستخدم برامج تشغيل Broadcom الملكية غير المتوفرة على Raspberry Pi 4 (https://github.com/Lauszus/kivy/commit/9cdcada34a6149b7fd6bd4c57285afc828d69948):

export VIDEOCOREMESA=1; pip3 install git+https://github.com/Lauszus/kivy.git@rpi4_auto#egg=kivy

أخيرًا ، قم بإنشاء تطبيق اختبار صغير:

cat <<EOF > ~/app.py
from kivy.app import App
from kivy.uix.button import Button


class TestApp(App):

    def build(self):
        return Button(text='hello world')


if __name__ == '__main__':
    TestApp().run()
EOF

الآن أعد التشغيل واستمتع :)

ال 113 كومينتر

تم العثور على نفس السلوك في إصدار RPi 4B: 1G. في السابق ، رأيت في منتدى SBC الآخر ، لاستخدام مزود نافذة sdl2 ، يحتاج إلى إعادة ترجمة sdl2 مع دعم KMS. لست متأكدًا مما إذا كان هذا سيكون مفيدًا.
Tinker Board: https://groups.google.com/forum/m/#!topic/kivy -users / jwBnYxe969g
جيتسون نانو:
https://devtalk.nvidia.com/default/topic/1057120/kivy-app-fails-on-jetson-nano-/

وبالمثل ، قضيت ثلاثة أيام من الاختبار ، في محاولة للعثور على تكوين Raspbian Lite قابل للتطبيق والذي سيعرض واجهة المستخدم الرسومية على شاشة اللمس SunFounder 10 بوصة (متوافقة بشكل معقول مع شاشة Raspberry Pi Foundation القياسية) على Raspberry Pi 4B مع ذاكرة وصول عشوائي سعتها 4 جيجا بايت.

حالة الخطأ: تعطل تطبيق Kivy (غير مستجيب) يتطلب kill من جلسة أخرى
رسالة الخطأ: "فشل إضافة الخدمة - قيد الاستخدام بالفعل؟" (شوهد بعد المحاولات اللاحقة)
خطأ: لا يوجد إخراج واجهة المستخدم الرسومية (عند استخدام خيار Legacy KMS) مباشرة بعد التمهيد ولكن إخراج السجل يبدو سعيدًا

حسنًا ، لقد واجهت بالفعل مشكلات مع HDMI لا يعمل بشكل صحيح بسبب منافذ micro-HDMI المزدوجة الجديدة. لم أختبر شاشة اللمس الرسمية مقاس 7 بوصات مع طرازات 4B ويمكنني أن أتخيل وجود مشكلات في ذلك. لقد أبلغت عن مشكلة micro-HDMI. حظًا سعيدًا مع DSI.

لقد صادفت failed to add service - already in use? عند تشغيل برنامج buster ممتلئ ، عند محاولة استخدام الواجهة الخلفية egl_rpi . إصلاحه من خلال التعليق على dtoverlay=vc4-kms-v3d في /boot/config.txt جعل الخطأ يختفي ، ولكن بعد ذلك لم تظهر kivy أي شيء على الإطلاق.

أتساءل ما إذا كان الأمر نفسه في باستر لايت؟

لقد صادفت failed to add service - already in use? عند تشغيل برنامج buster ممتلئ ، عند محاولة استخدام الواجهة الخلفية egl_rpi . إصلاحه من خلال التعليق على dtoverlay=vc4-kms-v3d في /boot/config.txt جعل الخطأ يختفي ، ولكن بعد ذلك لم تظهر kivy أي شيء على الإطلاق.

أتساءل ما إذا كان الأمر نفسه في باستر لايت؟

كان لديه نفس المشكلة ولكن الآن حصلت. فقط تعطيل برنامج OpenGL في raspi-config
x11 - ImportError: لا توجد وحدة باسم window_x11
ملف "/home/pi/project/venv/local/lib/python2.7/site-packages/kivy/core/__init__.py" ، السطر 59 ، في core_select_lib
fromlist = [modulename] ، المستوى = 0)
باستخدام raspbian buster و python2.7 و virtualenv و kivy 1.10.1.

Gawezi تحتاج إلى تعيين kivy لاستخدام نافذة egl_rpi ، وليس x11 عن طريق تعيين KIVY_WINDOW=egl_rpi . إذا كنت تقصد تشغيل x11 ، فتأكد من تجميع kivy مع دعم x11 في وقت التثبيت ( USE_X11=1 ).

وجود نفس المشكلة / نفس المشكلة على Pi 3B تشغيل Buster على # 6418 ، شكرًا لك على نشر تقدمك وآمل حقًا أن يأتي الحل قريبًا!

@ matham هل يمكنك توضيح مكان تعيين USE_X11 = 1؟ أعتقد أن هذه هي مشكلتي مع كل من Buster و ALARM (لم تختبر هذه المشكلة نفسها من تمهيد وحدة التحكم بدون سطح المكتب). كنت أحاول تشغيل kivy بدون سطح مكتب وأعتقد أن هذه مشكلتي. أحتاج إلى تجميع kivy مع دعم x11 كما تقول.

@ frankgould تصدير VIDEOCOREMESA = متغير بيئة واحد قبل تجميع kivy (https://github.com/kivy/kivy/commit/fa9932d812afd74f8524d17f5a85365e64ac39d7)

وإلا فسيتم تجميعه دائمًا ضد السائقين المملوكين على rpi.
علاوة على ذلك ، يجب عليك تثبيت x11 وبدء جلسة وبدء تشغيل تطبيق kivy داخل جلسة x11.
يمكنك استخدام مدير نوافذ بسيط مثل i3wm مما يجعل الأمور أكثر بساطة.

@ rnixx شكرا على المعلومات. سآخذ لقطة لهذا اليوم.

يجب أن يكون USE_X11=1 في البيئة عند تجميع kivy.

ومع ذلك ، من غير المحتمل أن يؤدي ذلك إلى إصلاح مشكلات تشغيل kivy بدون سطح مكتب لأنه إذا كنت تعمل بدون سطح مكتب ، فأنا أعتقد أنك تعمل بدون دعم x في نظام التشغيل ، لذا فإن وجود دعم x في kivy لن يساعد.

فقط egl_rpi من المفترض أن يعمل بدون دعم x afaik.

شكرا @ ماثام. أضفت هذا المفتاح = Val combo في / etc / environment مع KIVY_GRAPHICS = “gles” و VIDEOCOREMESA = 1 لكن لا شيء يعمل بدون سطح المكتب. لا يمكن فتح نافذة. أحتاج إلى البحث في RPi3A + أقدم لمعرفة كيف قمت بتثبيته لتشغيله بدون سطح مكتب على ALARM.

تحديث: الاختبار أعلاه كان على ALARM 4.19 ، وليس Buster. لذلك ، هذا التعليق خارج هذا الموضوع ولكنه ذو صلة. سأختبر هذا على باستر بعد ذلك.

لقد اختبرت اليوم RPi4B: 4GB Raspbian 4.19 kivy مثبتة مع محتويات البيئة / etc / البيئة التالية:

USE_X11=1
VIDEOCOREMESA=1
KIVY_GRAPHICS="gles"

فيما يلي نتائج التشغيل باستخدام قيم البيئة الافتراضية:

pi<strong i="9">@SlideShowPi</strong>:~/SlideShow $ python3 test.py
[INFO   ] [Logger      ] Record log in /home/pi/.masterpics/logs/SlideShowPi_19-08-23_15.txt
[INFO   ] [Kivy        ] v1.11.1
[INFO   ] [Kivy        ] Installed at "/usr/local/lib/python3.7/dist-packages/kivy/__init__.py"
[INFO   ] [Python      ] v3.7.3 (default, Apr  3 2019, 05:39:12) 
[GCC 8.2.0]
[INFO   ] [Python      ] Interpreter at "/usr/bin/python3"
[INFO   ] [Factory     ] 184 symbols loaded
[DEBUG  ] [Cache       ] register <kv.lang> with limit=None, timeout=None
[DEBUG  ] [Cache       ] register <kv.image> with limit=None, timeout=60
[DEBUG  ] [Cache       ] register <kv.atlas> with limit=None, timeout=None
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[DEBUG  ] [Cache       ] register <kv.texture> with limit=1000, timeout=60
[DEBUG  ] [Cache       ] register <kv.shader> with limit=1000, timeout=3600
[DEBUG  ] [Text        ] Provider <pango> ignored by config
[INFO   ] [Text        ] Provider: sdl2(['text_pango'] ignored)
[DEBUG  ] [App         ] Loading kv <./test.kv>
[DEBUG  ] [App         ] kv <./test.kv> not found
[DEBUG  ] [Window      ] Ignored <egl_rpi> (import error)
[INFO   ] [Window      ] Provider: sdl2(['window_egl_rpi'] ignored)
[DEBUG  ] [Window      ] Ignored <x11> (import error)
[CRITICAL] [Window      ] Unable to find any valuable Window provider. Please enable debug logging (e.g. add -d if running from the command line, or change the log level in the config) and re-run your app to identify potential causes
egl_rpi - ImportError: cannot import name 'bcm' from 'kivy.lib.vidcore_lite' (/usr/local/lib/python3.7/dist-packages/kivy/lib/vidcore_lite/__init__.py)
  File "/usr/local/lib/python3.7/dist-packages/kivy/core/__init__.py", line 63, in core_select_lib
    fromlist=[modulename], level=0)
  File "/usr/local/lib/python3.7/dist-packages/kivy/core/window/window_egl_rpi.py", line 12, in <module>
    from kivy.lib.vidcore_lite import bcm, egl

sdl2 - RuntimeError: b'Could not initialize EGL'
  File "/usr/local/lib/python3.7/dist-packages/kivy/core/__init__.py", line 71, in core_select_lib
    cls = cls()
  File "/usr/local/lib/python3.7/dist-packages/kivy/core/window/window_sdl2.py", line 152, in __init__
    super(WindowSDL, self).__init__()
  File "/usr/local/lib/python3.7/dist-packages/kivy/core/window/__init__.py", line 981, in __init__
    self.create_window()
  File "/usr/local/lib/python3.7/dist-packages/kivy/core/window/window_sdl2.py", line 290, in create_window
    self.get_gl_backend_name())
  File "kivy/core/window/_window_sdl2.pyx", line 224, in kivy.core.window._window_sdl2._WindowSDL2Storage.setup_window
  File "kivy/core/window/_window_sdl2.pyx", line 74, in kivy.core.window._window_sdl2._WindowSDL2Storage.die

x11 - ModuleNotFoundError: No module named 'kivy.core.window.window_x11'
  File "/usr/local/lib/python3.7/dist-packages/kivy/core/__init__.py", line 63, in core_select_lib
    fromlist=[modulename], level=0)

[CRITICAL] [App         ] Unable to get a Window, abort.
  • Raspberry Pi 4B مع 4 جيجابايت
  • راسببيان باستر لايت 7-10-2019
  • Kivy 1.11.1.1 تحديث
  • بايثون 3.7.3
  • شاشة TFT سعوية مقاس 10.1 بوصة من SunFounder

أحصل على segmentation fault على جهازي.

gdb --args python3 test.py # then press 'r' to run it

GNU gdb (Raspbian 8.2.1-2) 8.2.1
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "arm-linux-gnueabihf".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from python3...(no debugging symbols found)...done.
(gdb) r

Starting program: /usr/bin/python3 test.py
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".
[INFO   ] [Logger      ] Record log in /home/pi/.kivy/logs/kivy_19-08-23_16.txt
[INFO   ] [Kivy        ] v1.11.1
[INFO   ] [Kivy        ] Installed at "/usr/local/lib/python3.7/dist-packages/kivy/__init__.py"
[INFO   ] [Python      ] v3.7.3 (default, Apr  3 2019, 05:39:12) 
[GCC 8.2.0]
[INFO   ] [Python      ] Interpreter at "/usr/bin/python3"
[Detaching after fork from child process 3301]
[INFO   ] [Factory     ] 184 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[INFO   ] [Text        ] Provider: sdl2(['text_pango'] ignored)
[INFO   ] [Window      ] Provider: sdl2(['window_egl_rpi'] ignored)
[New Thread 0xb4171460 (LWP 3302)]
[New Thread 0xb37ff460 (LWP 3303)]
[New Thread 0xb2ffe460 (LWP 3304)]
[New Thread 0xb27fd460 (LWP 3305)]
[INFO   ] [GL          ] Using the "OpenGL ES 2" graphics system
[INFO   ] [GL          ] Backend used <gl>

Thread 1 "python3" received signal SIGSEGV, Segmentation fault.
0xb6fbc1dc in strlen () from /usr/lib/arm-linux-gnueabihf/libarmmem-v7l.so

أعتقد أنني وجدت الحل الخاص بي لنظام Arch Linux المبني على RPi3A +. يوجد أدناه ما ينفذه التمهيد عند تسجيل الدخول التلقائي وخدمة نظام شاشة البدء الخاصة بي ، أدناه أيضًا. لذلك ، يبدو أن التمهيد يبدأ X11 وهذه هي الطريقة التي يبدأ بها kivy (على pastebin ). أحتاج إلى اختبار هذا على باستر لمعرفة ما إذا كنت سأحصل على نفس النتائج.

محتوى .xinitrc:

#!/bin/sh
# ~/.xinitrc
# Executed by startx (run your window manager from here)
if [ -d /etc/X11/xinit/xinitrc.d ]; then
  for f in /etc/X11/xinit/xinitrc.d/*; do
    [ -x "$f" ] && . "$f"
  done
  unset f
fi

exec startlxde

خدمة بدء الشاشة الخاصة بي:

[Unit]
Description=Remote Control Screen
Requires=time-sync.target
After=time-sync.target

[Service]
Environment="DISPLAY=:0.0"
ExecStart=/usr/bin/python3 /home/remote/app/main.py
RemainAfterExit=yes
Restart=always
RestartSec=3

[Install]
WantedBy=default.target

قيمة بيئة kivy عند بدء التشغيل:

#! /usr/bin/python3
import os
os.environ['KIVY_VIDEO']='ffpyplayer'

يعمل هذا في كلا الاتجاهين على Buster مع Pi3B +
لكن بالنسبة إلى Pi4 ، وجدت بعض الأشياء التي يجب أن أتحرى عنها. ولكن هذا يوم الاثنين OutsourcedGuru ؟!

في الواقع ، أنا هنا يوم السبت لأختبر هذا الهراء.

نفس جهاز Raspbian Lite كما هو مذكور أعلاه ، بالإضافة إلى محاولة إضافة واجهة x11. حاولت فقط الحصول على الحد الأدنى ولكن ذلك لن يؤدي إلى ظهور سطح مكتب واجهة المستخدم الرسومية. بدأه من Pi نفسه بعد أن بدأ x ثم عمل كما هو موضح أدناه.

sudo apt-get install --no-install-recommends xserver-xorg # Trying for the PIXEL desktop
sudo apt-get install --no-install-recommends xinit # Need the startx script
sudo pip3 install --force-reinstall kivy
python3 test.py # Didn't work - segmentation fault
startx # Didn't work - wouldn't start the desktop
sudo apt-get install --yes raspberrypi-ui-mods # Desktop
python3 test.py # Didn't work - segmentation fault
startx # Worked - then open a terminal from the upper menu
python3 test.py # Works - displays a window

نفس جهاز Raspbian Lite (مع إضافة x11 / Desktop) لا يزال يعاني في عالم Python2. يتجمد ، لا يستجيب لـ Ctl-C ، لا يعرض نافذة أخرى ، يسجل بشكل طبيعي خلاف ذلك.

OutsourcedGuru عليك تجاهل استخدام python2 من البداية. دعمها ينتهي هذا العام.
لذا ما يجب عليك فعله هو التثبيت مقابل python3 فقط واستخدام pip3 . لا أعرف لماذا لم يضع Raspbian python3 ليكون الثعبان الافتراضي. إذا تابعت بـ Arch Linux فستعرف أن python3 هو الإصدار الافتراضي المثالي.

ومع ذلك ، منذ كانون الثاني (يناير) ، كنت أعمل على مكون إضافي لـ OctoPrint . لا يدعم Py3 حتى الآن في الفرع master . لقد أمضيت للتو كل الصباح في تجهيز شيء لفرعهم devel لاختبار ذلك. من المحتمل أن أقضي أيامًا في تعديل المكون الإضافي الخاص بي في محاولة لجعله يعمل على شيء لم يتم دفعه حتى إلى النظام الأساسي القابل للتطبيق. وبعد ذلك يمكنني أن أتجاوز أصابعي وآمل ألا يؤدي تطوير الكود الخاص بهم إلى كسر أشيائي الخاصة. (هذا لما سيكون طابعة إنتاج ورمز بيتا ليس عادةً ما تفضله في حالة مثل هذه.)

"للأسف ، يوريك المسكين ، كنت أعرفه جيدًا."

OutsourcedGuru ، لقد قرأت ذات مرة وسيط Raspberry Pi يقول إنه لا ينبغي لأحد أن يبني نموذج عمل على Raspbian أو Raspberry Pi لهذا الأمر. قد يكون على حق في ذلك الوقت ، لكن بمرور الوقت ، يحرزون تقدمًا لمزيد من الاحتمالات. كما ترى أعلاه ، حصلت على ALARM للعمل مع تطبيقي ؛ ومع ذلك ، منذ ذلك الحين ، تم غلق صوت HDMI. إنه نظيف في سطر أوامر Python ، لكن عند التشغيل من systemd ، فإنه يعد مهملاً.

لذا ، فهو منحنى تقني يسعى إليه المطورون. يمكنك أن تقصفها طوال اليوم ، كما فعلت اليوم ، وما زلت لا تحصل على نتائج. فقط استمر في الضرب ، إذا كان الأمر يستحق ذلك بالنسبة لك.

هل جرب أحد هذا الاقتراح؟ يبدو أنه يغير KIVY_TEXT أيضًا. سأحاول نهاية هذا الأسبوع إذا سنحت لي الفرصة.

https://stackoverflow.com/questions/56947840/kivy-1-10-1-and-1-11-0-not-working-on-raspberry-pi4-buster

إذن لا يزال الجميع غير قادرين على تشغيل Kivy على Buster ..؟

من السهل تشغيل برامج Kivy على إصدار سطح المكتب ، ولكن ما زلت لم أجد طريقة للعمل بنفسي لبدء تشغيله في تمهيد وحدة التحكم.

اي شخص اخر؟

شكرًا هاها ، أشعر بالغباء لأنني لم أحاول ذلك الآن ... كنت أحاول فقط من خلال ssh لكنني أعطيته فرصة من خلال vnc وقد نجح بالفعل. إذا كان هناك أي اهتمام ، فإن tkinter (مكتبة أخرى لواجهة المستخدم في Python) لا يعمل أيضًا من خلال وحدة التحكم ولكنه يعمل مع سطح المكتب.

أحتاج حقًا إلى طريقة موثوقة للبدء من وحدة التحكم أو على الأقل بدء التشغيل ، لكن شكرًا لك على ذكر هذا ، لدي أخيرًا حل بديل!

masyn يمكنني إعطاء المزيد من المعلومات إذا كنت بحاجة إليها. أنا لست في مكتبي الآن وأحتاج إلى تشغيل الجهاز اللوحي لمعرفة كيفية تنفيذه بالضبط.

سيكون ذلك مفيدًا للغاية ، شكرًا ، لا داعي للاندفاع لأنني في الغالب بحاجة إلى ملف
بيئة التطوير في هذا الوقت

في يوم السبت ، 14 سبتمبر ، 2019 ، الساعة 3:17 صباحًا ، كتب Frank Gould [email protected] :

masynthetic https://github.com/masynthetic On ALARM، my .xinitrc
يبدأ تشغيل windows ثم يتم تشغيل تطبيق Kivy تلقائيًا بعد تشغيل النوافذ. أستطيع أن أعطي
مزيد من المعلومات إذا كنت في حاجة إليها. أنا لست في مكتبي الآن وأحتاج إلى الإقلاع
الجهاز اللوحي لأرى بالضبط كيف قمت بتطبيقه.

-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/kivy/kivy/issues/6474؟email_source=notifications&email_token=AEOWUVKTRWPPLKDVSMG2ERDQJS25HA5CNFSM4IL7DFSKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW80
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/AEOWUVMTOIQUCNBD7EKOK3TQJS25HANCNFSM4IL7DFSA
.

سيكون ذلك مفيدا. تضمين التغريدة

أعتقد أننا بحاجة إلى حل جيد لإصدار سطح المكتب الأقل من هذا. آمل أن أعود إلى هذا لاحقًا وأن يعمل نظام التشغيل الأساسي ومجموعة برامج التشغيل كما كان الحال من قبل. لكوني ساخر ، أشك في ذلك نوعًا ما.

لم أحصل على kivy للعمل على Debian Jessie بدون رقعة أيضًا. ولكن إذا كنت موافقًا على استخدام egl ، فقد وجدت أنه من المفيد في الماضي تصحيح المُهيئ في kivy/core/window/window_egl_rpi.py ، عن طريق استبدال:

-    def create_window(self):
+    def create_window(self, *args):

لقد واجهت مشكلات مماثلة مع إصدار أقدم من kivy قبل شهرين ، وهذا ما أدى إلى الحيلة.

إذا كنت أتذكر بشكل صحيح ، فإن إنشاء نافذة باستخدام egl يفشل افتراضيًا لأنه يتم تمرير وسيطات إضافية. يتم اكتشاف الاستثناء في مكان ما ، ويتم تجاهله.

في Debian Jessie ، حل هذا التصحيح جميع المشكلات بالنسبة لي ، لكنني لم أختبر هذا على Buster.

لا يزال من الممكن أن يتم تجاهل خيار egl بسبب هذا الالتزام: 333a4cc9c7b4b3168f7427d27f4fdea2a69bc52b.

على أي حال ، ymmv.

ahendriksen بافتراض وجود بيئة افتراضية ، هل يقوم المرء فقط

يمكنك القيام بذلك في مكانه ، لكنني أشك في أن هذه هي المشكلة هنا ، لأنني لم أر ذلك في أي تتبع تم نشره في إصدارات buster. ولكن ، إذا كان هناك تتبع يظهر هذا الخطأ على الرغم من ذلك ، فسيكون من المفيد نشره حتى نصلحه.

OutsourcedGuru في تجربتي ، يجب أن يعمل الترقيع في المكان.

@ ماثام ، لقد قمت للتو بتثبيت باستر على التوت باي. سوف أنشر مرة أخرى قريبا.

يمكنني الإبلاغ عن أنه في Pi 3 Model B + مع Buster ، يعمل الفرع الرئيسي الحالي (2.0.0-dev0) بشكل جيد.
لم يكن من الضروري تصحيح window_egl_rpi.pi.

لا يبدو أنها تعمل من أجلي ، لما تستحقه. لقد أنقذت ذلك وقضيت اليوم على Buster Desktop بمحاولة Python 3.

حتى الآن ، لا يوجد حل لـ Kivy على Buster Lite على Raspberry Pi 4 ، أليس كذلك؟
RPi4 4 جيجابايت
العرض الرسمي Rpi
راسببيان باستر 2019-09-26
بايثون: 3.7.3
كيفي: v2.0.0.dev0

في المرة الأولى التي يتم فيها تشغيل ملف Kivy بسيط بعد التمهيد ، يكون لدي السجل التالي ولا توجد شاشة :
[INFO] [المسجل] تسجيل الدخول /home/pi/.kivy/logs/kivy_19-10-02_7.txt
[INFO] [Kivy] v2.0.0.dev0، git-f223133، 20191002
[INFO] [Kivy] مُثبت على "/usr/local/lib/python3.7/dist-packages/kivy/__init__.py"
[INFO] [Python] v3.7.3 (افتراضي ، 3 أبريل 2019 ، 05:39:12)
[GCC 8.2.0]
[INFO] [Python] مترجم فوري في "/ usr / bin / python"
[INFO] [المصنع] تم تحميل 184 رمزًا
[DEBUG] [ذاكرة التخزين المؤقت] سجلمع الحد = لا شيء ، المهلة = لا شيء
[DEBUG] [ذاكرة التخزين المؤقت] سجلمع الحد = لا شيء ، المهلة = 60
[DEBUG] [ذاكرة التخزين المؤقت] سجلمع الحد = لا شيء ، المهلة = لا شيء
[INFO] [صورة] الموفرون: img_tex ، img_dds ، img_sdl2 ، img_pil ، img_gif (تم تجاهل img_ffpyplayer)
[DEBUG] [ذاكرة التخزين المؤقت] سجلمع الحد = 1000 ، المهلة = 60
[DEBUG] [ذاكرة التخزين المؤقت] سجلمع الحد = 1000 ، المهلة = 3600
[DEBUG] [التطبيق] تحميل kv <./ test.kv>
[INFO] [نص] المزود: sdl2
مزود [INFO] [Window]: egl_rpi
[DEBUG] [Window] حجم العرض الفعلي: 800x480
[INFO] [GL] استخدام نظام الرسوم "OpenGL ES 2"
[DEBUG] [GL] glShaderBinary غير متاح
[INFO] [GL] الخلفية المستخدمة
[INFO] [GL] إصدار OpenGL [INFO] [GL] بائع OpenGL [INFO] [GL] عارض OpenGL
[INFO] [GL] إصدار تحليل OpenGL: 2 ، 0
[INFO] [GL] نسخة التظليل
[INFO] [GL] الحد الأقصى لحجم الملمس <2048>
الحد الأقصى للوحدات [INFO] [GL] Texture <8>
[DEBUG] [Shader] تم تجميع جزء بنجاح
[DEBUG] [Shader] تم تجميع Vertex بنجاح
[DEBUG] [ImageSDL2] تحميل
[INFO] [Window] لوحة المفاتيح الافتراضية غير مسموح بها ، الوضع الفردي ، غير مثبت
[DEBUG] [المورد] إضافة في قائمة المسار
[DEBUG] [المورد] إضافة في قائمة المسار
[DEBUG] [المورد] إضافة في قائمة المسار
[DEBUG] [المورد] إضافة في قائمة المسار
[DEBUG] [المورد] إضافة في قائمة المسار
[تصحيح] [قاعدة] إنشاء مزود من الماوس
[DEBUG] [Base] إنشاء مزود من probesysfs ، Provider = mtdev
[DEBUG] [ProbeSysfs] باستخدام probesysfs!
[DEBUG] عثر [ProbeSysfs] على الجهاز: برنامج التشغيل المستند إلى الذاكرة FT5406 في / dev / input / event0
[INFO] تطابق الجهاز [ProbeSysfs]: / dev / input / event0
[INFO] [MTD] قراءة حدث من
[DEBUG] [Base] إنشاء مزود من probesysfs ، Provider = hidinput
[DEBUG] [ProbeSysfs] باستخدام probesysfs!
[DEBUG] عثر [ProbeSysfs] على الجهاز: برنامج التشغيل المستند إلى الذاكرة FT5406 في / dev / input / event0
[INFO] تطابق الجهاز [ProbeSysfs]: / dev / input / event0
[INFO] [HIDInput] قراءة حدث من
[INFO] [Base] بدء الحلقة الرئيسية للتطبيق
[INFO] [MTD] وضع النطاق X هو 0-800
[INFO] [MTD] موضع النطاق Y هو 0 - 480
[INFO] [MTD] نطاق اللمس الرئيسي هو 0 - 0
[INFO] [MTD] نطاق اللمس الصغرى هو 0 - 0
[INFO] ضغط النطاق [MTD] هو 0 - 255
[INFO] [MTD] انعكاس المحاور: X تساوي 0 ، Y تساوي 0
تم ضبط دوران [INFO] [MTD] على 0
[INFO] [HIDMotionEvent] باستخدام
[INFO] [GL] دعم نسيج NPOT متاح
[معلومات] [HIDMotionEvent] نطاق وضع ABS X هو 0-800
[معلومات] [HIDMotionEvent] نطاق وضع ABS Y هو 0 - 480
[معلومات] [HIDMotionEvent] النطاق الموضع X هو 0 - 800
[معلومات] [HIDMotionEvent] وضع النطاق Y هو 0 - 480
[DEBUG] [أطلس] تحميل
[DEBUG] [أطلس] يلزم تحميل صورة واحدة
[DEBUG] [أطلس] تحميل
[DEBUG] [ImageSDL2] تحميل

وفي المرة الثانية التي لا توجد فيها شاشة ، لكن سجلّي أصغر:
[INFO] [المسجل] سجل الدخول /home/pi/.kivy/logs/kivy_19-10-02_8.txt
[INFO] [Kivy] v2.0.0.dev0، git-f223133، 20191002
[INFO] [Kivy] مُثبت على "/usr/local/lib/python3.7/dist-packages/kivy/__init__.py"
[INFO] [Python] v3.7.3 (افتراضي ، 3 أبريل 2019 ، 05:39:12)
[GCC 8.2.0]
[INFO] [Python] مترجم فوري في "/ usr / bin / python"
[INFO] [المصنع] تم تحميل 184 رمزًا
[DEBUG] [ذاكرة التخزين المؤقت] سجلمع الحد = لا شيء ، المهلة = لا شيء
[DEBUG] [ذاكرة التخزين المؤقت] سجلمع الحد = لا شيء ، المهلة = 60
[DEBUG] [ذاكرة التخزين المؤقت] سجلمع الحد = لا شيء ، المهلة = لا شيء
[INFO] [صورة] الموفرون: img_tex ، img_dds ، img_sdl2 ، img_pil ، img_gif (تم تجاهل img_ffpyplayer)
[DEBUG] [ذاكرة التخزين المؤقت] سجلمع الحد = 1000 ، المهلة = 60
[DEBUG] [ذاكرة التخزين المؤقت] سجلمع الحد = 1000 ، المهلة = 3600
[DEBUG] [التطبيق] تحميل kv <./ test.kv>
[INFO] [نص] المزود: sdl2
مزود [INFO] [Window]: egl_rpi
[DEBUG] [Window] حجم العرض الفعلي: 800x480

هل تمكن أي شخص من جعله يعمل؟

تعمل بطاقة SD نفسها بشكل جيد على RPi3B +. هذه السجلات من RPI4 4 غيغابايت.

لم أتمكن من الحصول على أي شيء للعمل على Raspbian Buster الأقل من سطح المكتب. ربما يرجع ذلك إلى واجهة OpenGL ES v3 (بدلاً من الإصدار 2 المتوقع) في مكدس برنامج تشغيل Raspbian. أو أنه شيء غريب بسبب محولات HDMI المزدوجة.

حتى الآن ، لا يوجد حل لـ Kivy على Buster Lite على Raspberry Pi 4 ، أليس كذلك؟
RPi4 4 جيجابايت
العرض الرسمي Rpi
راسببيان باستر 2019-09-26
بايثون: 3.7.3
كيفي: v2.0.0.dev0

في المرة الأولى التي يتم فيها تشغيل ملف Kivy بسيط بعد التمهيد ، يكون لدي السجل التالي ولا توجد شاشة :
[INFO] [المسجل] تسجيل الدخول /home/pi/.kivy/logs/kivy_19-10-02_7.txt
[INFO] [Kivy] v2.0.0.dev0، git-f223133، 20191002
[INFO] [Kivy] مُثبت على "/usr/local/lib/python3.7/dist-packages/kivy/ init .py"
[INFO] [Python] v3.7.3 (افتراضي ، 3 أبريل 2019 ، 05:39:12)
[GCC 8.2.0]
[INFO] [Python] مترجم فوري في "/ usr / bin / python"
[INFO] [المصنع] تم تحميل 184 رمزًا
[DEBUG] [ذاكرة التخزين المؤقت] سجلمع الحد = لا شيء ، المهلة = لا شيء
[DEBUG] [ذاكرة التخزين المؤقت] سجلمع الحد = لا شيء ، المهلة = 60
[DEBUG] [ذاكرة التخزين المؤقت] سجلمع الحد = لا شيء ، المهلة = لا شيء
[INFO] [صورة] الموفرون: img_tex ، img_dds ، img_sdl2 ، img_pil ، img_gif (تم تجاهل img_ffpyplayer)
[DEBUG] [ذاكرة التخزين المؤقت] سجلمع الحد = 1000 ، المهلة = 60
[DEBUG] [ذاكرة التخزين المؤقت] سجلمع الحد = 1000 ، المهلة = 3600
[DEBUG] [التطبيق] تحميل kv <./ test.kv>
[INFO] [نص] المزود: sdl2
مزود [INFO] [Window]: egl_rpi
[DEBUG] [Window] حجم العرض الفعلي: 800x480
[INFO] [GL] استخدام نظام الرسوم "OpenGL ES 2"
[DEBUG] [GL] glShaderBinary غير متاح
[INFO] [GL] الخلفية المستخدمة
[INFO] [GL] إصدار OpenGL [INFO] [GL] بائع OpenGL [INFO] [GL] عارض OpenGL
[INFO] [GL] إصدار تحليل OpenGL: 2 ، 0
[INFO] [GL] نسخة التظليل
[INFO] [GL] الحد الأقصى لحجم الملمس <2048>
الحد الأقصى للوحدات [INFO] [GL] Texture <8>
[DEBUG] [Shader] تم تجميع جزء بنجاح
[DEBUG] [Shader] تم تجميع Vertex بنجاح
[DEBUG] [ImageSDL2] تحميل
[INFO] [Window] لوحة المفاتيح الافتراضية غير مسموح بها ، الوضع الفردي ، غير مثبت
[DEBUG] [المورد] إضافة في قائمة المسار
[DEBUG] [المورد] إضافة في قائمة المسار
[DEBUG] [المورد] إضافة في قائمة المسار
[DEBUG] [المورد] إضافة في قائمة المسار
[DEBUG] [المورد] إضافة في قائمة المسار
[تصحيح] [قاعدة] إنشاء مزود من الماوس
[DEBUG] [Base] إنشاء مزود من probesysfs ، Provider = mtdev
[DEBUG] [ProbeSysfs] باستخدام probesysfs!
[DEBUG] عثر [ProbeSysfs] على الجهاز: برنامج التشغيل المستند إلى الذاكرة FT5406 في / dev / input / event0
[INFO] تطابق الجهاز [ProbeSysfs]: / dev / input / event0
[INFO] [MTD] قراءة حدث من
[DEBUG] [Base] إنشاء مزود من probesysfs ، Provider = hidinput
[DEBUG] [ProbeSysfs] باستخدام probesysfs!
[DEBUG] عثر [ProbeSysfs] على الجهاز: برنامج التشغيل المستند إلى الذاكرة FT5406 في / dev / input / event0
[INFO] تطابق الجهاز [ProbeSysfs]: / dev / input / event0
[INFO] [HIDInput] قراءة حدث من
[INFO] [Base] بدء الحلقة الرئيسية للتطبيق
[INFO] [MTD] وضع النطاق X هو 0-800
[INFO] [MTD] موضع النطاق Y هو 0 - 480
[INFO] [MTD] نطاق اللمس الرئيسي هو 0 - 0
[INFO] [MTD] نطاق اللمس الصغرى هو 0 - 0
[INFO] ضغط النطاق [MTD] هو 0 - 255
[INFO] [MTD] انعكاس المحاور: X تساوي 0 ، Y تساوي 0
تم ضبط دوران [INFO] [MTD] على 0
[INFO] [HIDMotionEvent] باستخدام
[INFO] [GL] دعم نسيج NPOT متاح
[INFO] نطاق [HIDMotionEvent] وضع ABS X هو 0-800
[INFO] نطاق [HIDMotionEvent] وضع ABS Y هو 0 - 480
[INFO] [HIDMotionEvent] وضع النطاق X هو 0 - 800
[INFO] [HIDMotionEvent] موضع النطاق Y هو 0 - 480
[DEBUG] [أطلس] تحميل
[DEBUG] [أطلس] يلزم تحميل صورة واحدة
[DEBUG] [أطلس] تحميل
[DEBUG] [ImageSDL2] تحميل

وفي المرة الثانية التي لا توجد فيها شاشة ، لكن سجلّي أصغر:
[INFO] [المسجل] سجل الدخول /home/pi/.kivy/logs/kivy_19-10-02_8.txt
[INFO] [Kivy] v2.0.0.dev0، git-f223133، 20191002
[INFO] [Kivy] مُثبت على "/usr/local/lib/python3.7/dist-packages/kivy/ init .py"
[INFO] [Python] v3.7.3 (افتراضي ، 3 أبريل 2019 ، 05:39:12)
[GCC 8.2.0]
[INFO] [Python] مترجم فوري في "/ usr / bin / python"
[INFO] [المصنع] تم تحميل 184 رمزًا
[DEBUG] [ذاكرة التخزين المؤقت] سجل مع الحد = لا شيء ، المهلة = لا شيء
[DEBUG] [ذاكرة التخزين المؤقت] سجل مع الحد = لا شيء ، المهلة = 60
[DEBUG] [ذاكرة التخزين المؤقت] سجل مع الحد = لا شيء ، المهلة = لا شيء
[INFO] [صورة] الموفرون: img_tex ، img_dds ، img_sdl2 ، img_pil ، img_gif (تم تجاهل img_ffpyplayer)
[DEBUG] [ذاكرة التخزين المؤقت] سجل مع الحد = 1000 ، المهلة = 60
[DEBUG] [ذاكرة التخزين المؤقت] سجل مع الحد = 1000 ، المهلة = 3600
[DEBUG] [التطبيق] تحميل kv <./ test.kv>
[INFO] [نص] المزود: sdl2
مزود [INFO] [Window]: egl_rpi
[DEBUG] [Window] حجم العرض الفعلي: 800x480

هل تمكن أي شخص من جعله يعمل؟

تعمل بطاقة SD نفسها بشكل جيد على RPi3B +. هذه السجلات من RPI4 4 غيغابايت.

من المستحيل الآن تشغيل أي تطبيق kivy في RPi4 بدون سطح مكتب. إنه فشل في برامج التشغيل ، لذلك يتعين علينا انتظار بعض التصحيح في إصدار kivy التالي (أو الإصدار الرئيسي).

[INFO ] [Window ] Provider: egl_rpi

لا أعتقد حقًا أنك ستحصل على Kivy (أي إصدار) للتحدث إلى موفر Window egl_rpi لأن Kivy مرتبط بـ gles2.h بدلاً من بعض أحادي القرن المسمى gles3.h الذي لا يوجد مما يمكنني رؤيته. يستخدم Pi4B برنامج OpenGL ES v3.

حاول تعديل التكوين بحيث يطلب Kivy sdl2 أو أي شيء آخر. اقرأ منشورات فرانك هنا.

هل هناك طريقة ما لتثبيت كود Google Angle على Pi (ربما للحصول على رؤوس OpenGL ES 3.0) ثم تصحيح موفر Kivy egl_rpi لسحب gles3.h بدلاً من gles2.h (أو ما شابه)؟

فيما يلي إرشادات حول كيفية تثبيت وتشغيل تطبيق Kivy عند التمهيد على Buster lite:

قم أولاً بتثبيت xserver-org ، حيث نحتاجها لإظهار النافذة الفعلية:

sudo apt-get -y install xserver-xorg

بعد ذلك ، أقوم بتثبيت nodm من المصدر ، لذا فهو يتضمن الإصلاح التالي: https://github.com/spanezz/nodm/pull/10 :

sudo apt-get -y install libpam0g-dev help2man libx11-dev debhelper
git clone https://github.com/slashblog/nodm.git
pushd nodm
    git checkout d48a8f6266d3f464138e0e95b65896917c35c89f
    source /etc/os-release  # Will set the 'VERSION' variable
    if [ "$(echo $VERSION | sed -En 's/[0-9]+ \(([a-z]+)\)/\1/p')" == "buster" ]; then
        wget http://deb.debian.org/debian/pool/main/n/nodm/nodm_0.13-5.debian.tar.xz
    else
        wget http://deb.debian.org/debian/pool/main/n/nodm/nodm_0.13-1.3.debian.tar.xz
    fi
    tar xf nodm_0.13-*.debian.tar.xz
    sudo dpkg-buildpackage -us -uc -b
popd
sudo dpkg -i nodm_0.13-*_armhf.deb
sudo rm -rf nodm*

الآن قم بتمكين تسجيل الدخول الرسومي:

sudo systemctl set-default graphical.target

قم بتكوين nodm وابدأ تشغيل تطبيقنا عند التشغيل:

# Has the same effect as calling 'sudo dpkg-reconfigure nodm'
sudo sh -c 'echo "NODM_ENABLED=true" > /etc/default/nodm'
sudo sh -c 'echo "NODM_USER=$SUDO_USER" >> /etc/default/nodm' # Note that the variable SUDO_USER is used
sudo sh -c 'echo "NODM_FIRST_VT='\''7'\''" >> /etc/default/nodm'
sudo sh -c 'echo "NODM_XSESSION=/etc/X11/Xsession" >> /etc/default/nodm'
sudo sh -c 'echo "NODM_X_OPTIONS='\''-nolisten tcp'\''" >> /etc/default/nodm'
sudo sh -c 'echo "NODM_MIN_SESSION_TIME=60" >> /etc/default/nodm'
sudo sh -c 'echo "NODM_X_TIMEOUT=300" >> /etc/default/nodm'

# Start the app using nodm
echo '#!/bin/bash' > ~/.xsession
echo 'export DISPLAY=:0.0' >> ~/.xsession
echo "~/venv-kivy/bin/python3 ~/app.py" >> ~/.xsession

قم بإعداد بيئة افتراضية:

sudo apt-get -y install python3-pip python3-venv
sudo pip3 install -U pip
python3 -m venv venv-kivy
source ~/venv-kivy/bin/activate

تثبيت تبعيات Kivy:

sudo apt-get -y install python3-dev libmtdev1 libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev
sudo apt-get -y install pkg-config libgl1-mesa-dev libgles2-mesa-dev libgstreamer1.0-dev gstreamer1.0-plugins-{bad,base,good,ugly} gstreamer1.0-{omx,alsa} libmtdev-dev
pip3 install -U pygments docutils Cython==0.29.10 wheel

حان الوقت الآن لتجميع Kivy وتثبيته. لاحظ أنني أستخدم مفترقتي مع التصحيح ، لذلك لا تستخدم برامج تشغيل Broadcom الملكية غير المتوفرة على Raspberry Pi 4 (https://github.com/Lauszus/kivy/commit/9cdcada34a6149b7fd6bd4c57285afc828d69948):

export VIDEOCOREMESA=1; pip3 install git+https://github.com/Lauszus/kivy.git@rpi4_auto#egg=kivy

أخيرًا ، قم بإنشاء تطبيق اختبار صغير:

cat <<EOF > ~/app.py
from kivy.app import App
from kivy.uix.button import Button


class TestApp(App):

    def build(self):
        return Button(text='hello world')


if __name__ == '__main__':
    TestApp().run()
EOF

الآن أعد التشغيل واستمتع :)

تحتاج إلى تعليمات التثبيت لـ RPi4B مع Raspbian Buster ممتلئة

اختبار:

RPi4 4 جيجابايت
شاشة HDMI مقاس 7 بوصات (تعمل عن طريق منفذ HDMI واحد صغير بالقرب من النوع C)
config.ini

max_usb_current = 1
hdmi_group = 2
hdmi_mode = 87
hdmi_cvt 1024600 60 6 0 0 0
hdmi_drive = 1

راسببيان باستر 2019-09-26 ممتلئ

السجل: خطأ "* فشل في إضافة الخدمة - قيد الاستخدام بالفعل؟"

pi @ raspberrypi : ~ / kivy -amples / 3Drendering $ python main.py
[INFO] [المسجل] تسجيل الدخول /home/pi/.kivy/logs/kivy_19-10-19_10.txt
[INFO] [Kivy] v1.11.0
[INFO] [Kivy] مُثبت على "/usr/local/lib/python2.7/dist-packages/kivy/__init__.pyc"
[INFO] [Python] v2.7.16 (افتراضي ، 6 أبريل 2019 ، 01:42:57)
[GCC 8.2.0]
[INFO] [Python] مترجم فوري في "/ usr / bin / python"
[تحذير] [موقوف] تم إيقاف دعم Python 2 Kivy. إصدار Kivy بعد 1.11.0 لن يدعم Python 2 بعد الآن
[INFO] [المصنع] تم تحميل 184 رمزًا
[INFO] [صورة] الموفرون: img_tex ، img_dds ، img_sdl2 ، img_pil ، img_gif (تم تجاهل img_ffpyplayer)
مزود [INFO] [Window]: egl_rpi

  • فشل في إضافة الخدمة - قيد الاستخدام بالفعل؟

@ Lauszus سأختبر هذا في وقت ما في نهاية هذا الأسبوع. شكرا لمساعدتك في هذا. :)

@ diamond2nv "... مع Raspbian Buster full" إذا كنت تقصد بهذا Raspbian Buster _Desktop_ فإن التعليمات موجودة هنا في إصدار Kivy.

شكرا جزيلا !
تم حل المشكلة من خلال تلك التعليمات.

ملاحظة. "2019-09-26-raspbian-buster-full.img"

Lauszus حسنًا ، لقد اختبرت هذا على ...

  • Raspberry Pi 4B (4 جيجابايت)
  • شاشة لمس سعوية مقاس 10.1 بوصة
  • Raspbian Buster Lite 9/26/2019 -> "Linux octopi 4.19.75-v7l + # 1270 SMP الثلاثاء 24 سبتمبر 18:51:41 BST 2019 armv7l"
  • البدء sudo apt-get update && sudo apt-get -y upgrade
  • sudo raspi-config مع الترجمة ، التمهيد التلقائي إلى CLI _ ولتثبيتي ، تغييرات الواجهات (I2C / UART / camera) _

أشير إلى أنني استعدت لكل هذا من خلال إجراء عملية استرداد Raspbian لأنني قمت سابقًا بتشغيل rpi-update في محاولة لإنجاز هذا العمل. من المعروف أن هذا يغير البرامج الثابتة المخزنة على شريحة ، لذلك عدت إلى الإصدار الذي تم إصداره.

وإلا فقد اتبعت تعليماتك. بالإضافة إلى ذلك ، قمت بتحديث التكوين للسماح للجهاز الذي يعمل باللمس بالعمل.

تحرير إلى ~/.kivy/config.ini :

[input]
mouse = mouse
#%(name)s = probesysfs,provider=hidinput
mtdev_%(name)s = probesysfs,provider=mtdev
hid_%(name)s = probesysfs,provider=hidinput

إصلاح لملء الشاشة

لا يظهر "ملء الشاشة" لذا أعتقد أنني سأحتاج إلى اللعب بالإعدادات قليلاً. ربما تكون 800 × 640 بدلاً من 1280 × 800 المتوقعة. قد يكون هذا في Raspbian /boot/config.txt أو ملف Kivy ~/.kivy/config.ini أو تكوين xsession ...

على الرغم من ذلك ، قمت فقط بتعديل تطبيق الاختبار من خلال تضمين ما يلي بالقرب من الجزء العلوي:

from kivy.core.window import Window
Window.fullscreen = True

يبدو أن هذا يؤدي إلى الحيلة لضبط التطبيق ليكون في وضع ملء الشاشة ، كما هو متوقع.

تشكرات! فما استقاموا لكم فاستقيموا تكون مهتمة كثيرا لمعرفة متى يتم سحب هذا في master فرع Kivy نفسها.

OutsourcedGuru يرجى الاطلاع على العلاقات العامة التي فتحتها: https://github.com/kivy/kivy/pull/6562.

سيكون رائعًا إذا أمكنك تجربته باستخدام VIDEOCOREMESA=0 و VIDEOCOREMESA=1 ومعرفة ما إذا كان هناك أي اختلاف في الأداء.

@ Lauszus : عمل جيد - يعمل بشكل جيد للغاية.

أيضًا إلىOutsourcedGuru.

Lauszus ذهبت لإعادة الاختبار في وقت سابق لكنني اعتقدت أنك حذفت هذا الفرع ... (؟) لذلك لم أستطع.

OutsourcedGuru كما كتبت سابقًا. انتهى بي الأمر بفتح واحدة جديدة ستكتشف تلقائيًا عند تشغيلها في Raspberry Pi 4. على أي حال ، وجدت أيضًا طريقة لتجميع العجلة ، حتى لا يضطر المستخدمون إلى تجميع Kivy بأنفسهم. يرجى تنزيل العجلة من هنا: https://github.com/Lauszus/kivy/suites/285162135/artifacts/197175 ثم التعليق على العلاقات العامة التالية عند اختبارها: https://github.com/kivy/kivy/ سحب / 6568.

Lauszus بفضل مساعدتك ، حصلت على تطبيق أقدم من RPI3B + يعمل على RPI4 باستخدام طريقة nodm الخاصة بك.
يبدأ تلقائيًا عند التمهيد وهو رائع ، إنها الطريقة التي أخطط لاستخدامها بها.
لكن لدي بعض المشكلات الأخرى مع التطبيق التي أحتاج إلى تصحيحها ولست متأكدًا الآن من كيفية الحصول على الإخراج العادي منه كما هو الحال عند بدء تشغيل التطبيق من cli كما هو الحال في 'python3 app.py'.
هل لديك أي نصائح حول كيفية تحقيق ذلك؟
وسيكون موضع تقدير حقا.
شكرًا جزيلاً مرة أخرى ، لم أكن لأصل إلى هذا الحد بدون منشورك.
هتافات!

lucasnzone أنا ببساطة أستخدم وظيفة المسجل بدلاً من بيانات الطباعة: https://kivy.org/doc/stable/api-kivy.logger.html.

ثم أستخدم البرنامج النصي التالي لإعادة تشغيل Kivy واتباع السجل:

#!/bin/bash -e

if [[ $* == *--restart* ]]; then
    sudo service nodm restart
    inotifywait -q ~/.kivy/logs -e create --format %w%f | xargs tail -f
else
    ls -t -d ~/.kivy/logs/* | head -n1 | xargs tail -f
fi

لم أتمكن من اختبار هذا ، آسف على التأخير. يستغرق الأمر حوالي أسبوعين بالنسبة لـ FormNext ، لذلك نحن نسعى جاهدين هنا لمعرفة ما يستحق.

كما أذكر من الاختبار السابق الذي أجريته ، نجح برنامج اختبار Kivy الصغير ولكن يبدو أن المكون الإضافي OctoPrint الذي استخدم Kivy لم يكن سعيدًا. لقد قضيت وقتًا طويلاً في محاولة تغيير الطريقة التي تم بها تحميل OctoPrint (للسماح لـ nodm بالتحكم في هذه الخدمة). يحتاج المكون الإضافي OctoPrint إلى التحميل داخل بيئة افتراضية وعادة ما يحدث كخدمة. لم يكن لدي الوقت المناسب لمطاردة ذلك الأرنب حتى قاع جحره.

@ Lauszus شكرًا جزيلاً لك على ذلك ، لم أفكر في الأمر ،
شكرا مرة أخرى يا صديقي

يوم فرابجوس. تمكنت من الحصول على منصة عمل لما يلي:

  • Kivy 1.10.1 مثبت في بيئة افتراضية
  • بايثون 2.7
  • راسببيان باستر لايت
  • OctoPrint 1.3.12 (من OctoPi 0.17.0 IMG)
  • ffpyplayer (كان عليه العودة إلى gstplayer بسبب عدم توافق Pi4B)
  • إيماءة
  • OctoPrint المساعد باستخدام Kivy

ينجح في إحضار واجهة مستخدم رسومية بملء الشاشة عند بدء التشغيل وإعادة التشغيل.

من كود بايثون ...

    if pi_type == '4B':
        os.environ['VIDEOCOREMESA'] =       '1'
        os.environ['KIVY_WINDOW'] =         'sdl2'
        os.environ['KIVY_GL_BACKEND'] =     'gl'
        os.environ['rpi'] =                 '0'
        from kivy.core.window               import Window
        Window.fullscreen =                 True

يحتاج config.ini إلى تضمين أبعاد الشاشة بالإضافة إلى ضبط جهاز الإدخال الخاص بشاشة TFT.

تحتاج إلى تعليمات التثبيت لـ RPi4B مع Raspbian Buster ممتلئة

اختبار:

RPi4 4 جيجابايت
شاشة HDMI مقاس 7 بوصات (تعمل عن طريق منفذ HDMI واحد صغير بالقرب من النوع C)
config.ini

max_usb_current = 1
hdmi_group = 2
hdmi_mode = 87
hdmi_cvt 1024600 60 6 0 0 0
hdmi_drive = 1

راسببيان باستر 2019-09-26 ممتلئ

السجل: خطأ "* فشل في إضافة الخدمة - قيد الاستخدام بالفعل؟"

pi @ raspberrypi : ~ / kivy -amples / 3Drendering $ python main.py
[INFO] [المسجل] تسجيل الدخول /home/pi/.kivy/logs/kivy_19-10-19_10.txt
[INFO] [Kivy] v1.11.0
[INFO] [Kivy] مُثبت على "/usr/local/lib/python2.7/dist-packages/kivy/ init .pyc"
[INFO] [Python] v2.7.16 (افتراضي ، 6 أبريل 2019 ، 01:42:57)
[GCC 8.2.0]
[INFO] [Python] مترجم فوري في "/ usr / bin / python"
[تحذير] [موقوف] تم إيقاف دعم Python 2 Kivy. إصدار Kivy بعد 1.11.0 لن يدعم Python 2 بعد الآن
[INFO] [المصنع] تم تحميل 184 رمزًا
[INFO] [صورة] الموفرون: img_tex ، img_dds ، img_sdl2 ، img_pil ، img_gif (تم تجاهل img_ffpyplayer)
مزود [INFO] [Window]: egl_rpi

  • فشل في إضافة الخدمة - قيد الاستخدام بالفعل؟

مرحبًا @ diamond2nv ، هل يمكنك تشغيل kivy من CLI بالفعل؟

elisandrom يرجى الاطلاع على تعليقي: https://github.com/kivy/kivy/issues/6474#issuecomment -542679712

elisandrom يرجى مشاهدة تعليقي: # 6474 (تعليق)

شكرا !!!!!! يعمل بشكل مثالي !!!

لأي شخص مهتم ، يمكن تنزيل العجلة المتقاطعة هنا: https://github.com/kivy/kivy/suites/364981942/artifacts/751103.

ما عليك سوى اتباع هذه التعليمات حول كيفية تثبيت جميع التبعيات: https://github.com/kivy/kivy/issues/6474#issuecomment -542679712 ، ولكن بدلاً من تجميع Kivy من المصدر ، يجب أن تكون قادرًا على تثبيته باستخدام العجلة المترجمة مسبقًا :

pip install Kivy-2.0.0.dev0-cp37-cp37m-linux_armv7l.whl

سيكون من الرائع لو تمكنا من الحصول على شخصين لاختبار هذا ، لذلك يمكن دمج # 6568.

Lauszus هل يمكننا تأكيد إصدار Kivy على تلك العجلة؟ يجب أن أفترض أنه 2.0.0.dev0 من عنوان العجلة. لست متأكدًا حقًا مما يوجد في هذا. أفترض أنه يتطلب Python 3 للبيئة الافتراضية ، رغم ذلك.

OutsourcedGuru نعم هذا صحيح. إنه في الأساس مجرد الفرع الرئيسي مع الالتزامات في # 6568. إليك الإجراء الذي تم إنشاؤه فيه: https://github.com/kivy/kivy/runs/354828981.

نعم ، إنها تتطلب Python 3.7 ، حيث أن هذا هو المعيار في Buster. يمكنك تثبيته إما عالميًا أو في بيئة افتراضية ، الأمر متروك لك.

لما يستحق ، لقد تمكنت من ترقية منصة الإنتاج الخاصة بي إلى Python 3 + Kivy 1.11.1 على Raspbian Lite ، بعد أن قمت بتثبيت nodm مع دعم محدود لـ x windows كما هو موضح أدناه. يعمل كما هو متوقع على Pi 4B. تم التثبيت ببساطة pip install kivy==1.11.1 في البيئة الافتراضية.

sudo apt-get -y install xserver-xorg libpam0g-dev help2man libx11-dev debhelper

بالنظر إلى https://github.com/kivy/kivy/issues/6474#issuecomment -542679712 ، يبدو أن الحل الوحيد حتى الآن على Raspberry Pi 4 هو استخدام X11. هل لم يعد هناك دعم لمخزن الإطارات غير X الذي كان موجودًا في RPis السابق؟ أحاول ترقية مشروعي من Raspberry Pi 3B + إلى Raspberry Pi 4 ، لكنني لا أريد البدء في تثبيت X11 فقط لأتمكن من عرض الأشياء.

whitelynx جربت تجميع SDL2 بدون X على Raspberry Pi 4. ومع ذلك ظل يشتكي من أنه لم يتمكن من العثور على نافذة: https://github.com/kivy/kivy/pull/6662#issuecomment -573423540. حتى الآن لا يمكنني تشغيله إلا إذا استخدمت مدير نوافذ مثل nodm.

إليك مثال على رمز ينشئ نافذة opengles على rpi4 بدون X.
https://github.com/matusnova/rpi-opengl-without-x/blob/master/triangle_rpi4.c
https://www.raspberrypi.org/forums/viewtopic.php؟t=243707#p1499181
هل من الممكن استخدام بعض التعليمات البرمجية المماثلة لرسم نافذة kivy؟

لاحظ أن المثال الأول يجلب gl2.h. على حد علمي ، يستخدم Pi4B gl3.

لقد اختبرتهم على حد سواء على rpi4b الخاص بي وعملوا دون مشكلة. يكتب المثال الأول في ملف خام ويمكنك عرض المثلث على الشاشة بإلغاء التعليق على السطر 384.

Lauszus مشكلة عدم القدرة على العثور على نافذة عند التشغيل باستخدام SDL2 w / o X11 هي أن SDL2 إنشاء رمز النافذة يحدد 8 بتات ألفا للنافذة. إذا تم تغييره إلى 0 بت ألفا في kivy.core.window._window_sdl2.pyx فسيعمل.

ddimensia حاولت التغيير
138: SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8)
إلى
138: SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 0)
لكن ما زلت أتلقى نفس الأخطاء عند محاولة إنشاء نافذة:
[CRITICAL] [Window ] Unable to find any valuable Window provider. Please enable debug logging (e.g. add -d if running from the command line, or change the log level in the config) and re-run your app to identify potential causes sdl2 - RuntimeError: Could not initialize EGL File "/usr/local/lib/python2.7/dist-packages/Kivy-1.11.0-py2.7-linux-armv7l.egg/kivy/core/__init__.py", line 71, in core_select_lib cls = cls() File "/usr/local/lib/python2.7/dist-packages/Kivy-1.11.0-py2.7-linux-armv7l.egg/kivy/core/window/window_sdl2.py", line 152, in __init__ super(WindowSDL, self).__init__() File "/usr/local/lib/python2.7/dist-packages/Kivy-1.11.0-py2.7-linux-armv7l.egg/kivy/core/window/__init__.py", line 969, in __init__ self.create_window() File "/usr/local/lib/python2.7/dist-packages/Kivy-1.11.0-py2.7-linux-armv7l.egg/kivy/core/window/window_sdl2.py", line 289, in create_window self.fullscreen, resizable, state) File "kivy/core/window/_window_sdl2.pyx", line 225, in kivy.core.window._window_sdl2._WindowSDL2Storage.setup_window File "kivy/core/window/_window_sdl2.pyx", line 75, in kivy.core.window._window_sdl2._WindowSDL2Storage.die

هل لديك ريبو مع جميع التغييرات المطلوبة للحصول على sdl2 + kivy للعمل على rpi4 بدون X؟

أنا أتبع بشكل أساسي تعليمات Amiberry لتجميع SDL2 (https://github.com/midwan/amiberry/wiki/Compile-SDL2-from-source) مع الحد الأدنى من المتطلبات وأيضًا تجميع SDL2_mixer من المصدر ، الأمر الذي يتطلب عددًا قليلاً من libs الأخرى إذا تريد دعم mp3 ، flac ، إلخ. ثم قمت بتعديل بتات Alpha إلى 0 في ملف _window_sdl2.pyx. أخيرًا ، قمت بتعديل setup.py لإجبار use_x11 على False (في مكان واحد يتم تعيينه على True) وقمت بتشغيل export VIDEOCOREMESA=1 ثم pip install . . أعتقد أن هذا كان. شيء واحد قمت به مختلفًا عند تجميع كل مكتبات SDL2 هو عندما قمت بتشغيل التكوين ، أضفت --prefix=/usr إلى args لتثبيت libs في الموقع العادي بدلاً من / usr / local / lib.

ddimensia شكرا لك! هذا مشغول :)

ddimensia لقد فتحت للتو https://github.com/kivy/kivy/pull/6769. أنا في انتظار CI لإكمال البناء ، حتى أتمكن من التحقق من أن بناء العجلة من خلاله سيعمل أيضًا.

ddimensia لم تكن هناك حاجة إلى VIDEOCOREMESA=1 ، لذلك تركتها.

Lauszus مرحبا مرة أخرى
لقد وجدت حاوية kivy الخاصة بك على https://hub.docker.com/u/lauszus
كنت أتساءل عما إذا كان بإمكانك توجيهي في الاتجاه الصحيح مع تشغيل kivy داخل حاوية.
أعني ، لقد جعلته يعمل بشكل جيد ، يتم عرضه على شاشة تعمل باللمس.
ولكن بغض النظر عما أفعله ، لا يمكنني تشغيل الشاشة التي تعمل باللمس داخل الحاوية.
هل تعرف أي شيء عن ذلك؟
شكرا لك مقدما.
هتافات

lucasnzone هذه حاوية قديمة استخدمتها عند تجربة تجميع Kivy لتسريع عمليات الإنشاء الخاصة بي. لم أقم بتشغيل Kivy في الواقع داخل جهاز التحكم الذي استخدمته للتو لتجميعه.

على أي حال ، أخبرني بحث سريع أنه من الممكن استخدام الوسيطة --device عند تشغيل الحاوية ، على سبيل المثال:

--device /dev/input/event0

يجب أن تضيف شاشة اللمس الخاصة بك إلى الحاوية.

انظر: https://docs.docker.com/engine/reference/commandline/run/

Lauszus مرحبا ماتي ، شكرا لإجابتك.
هذا في أمر تشغيل عامل الإرساء الخاص بي
--privileged --net host --device /dev/gpiomem:/dev/gpiomem --device /dev/ttyAMA0:/dev/ttyAMA0 -v /boot/overlay:/boot/overlay
لقد اختبرته للتو بإضافة --device /dev/input/event0
لكن لم يحالفنا الحظ.
أنا على وشك التخلي عن المحاولة مع حاوية معًا. لا يمكنني حتى الحصول على عينات kivy تعمل.
حتى أنني أدير الحاوية بـ --privileged بدون حظ.
هل تقول أن هذه مشكلة في تكوين عامل الإرساء أو مشكلة في تكوين kivy؟
لقد فقدت بصراحة ، لقد أمضيت أسبوعًا في هذا الأمر ولم أستطع معرفة ذلك.
شكرا مرة أخرى على ردك يا ​​صديقي ، حقًا أقدر ذلك

هل تحققت من أن الشاشة التي تعمل باللمس هي في الواقع /dev/input/event0 ؟

لماذا تريد تشغيله في حاوية على أي حال إذا كنت تتلاعب بالأمثلة؟ ما عليك سوى استخدام بيئة Python الافتراضية وتثبيت التبعيات المطلوبة لنظام التشغيل الخاص بك باستخدام الحزمة التي تدير أي apt إلخ.

lucasnzone لقد نسيت أن أسأل عما إذا كنت تستخدم Raspberry Pi أو أي منصة أخرى؟ ما هو نظام التشغيل الذي تستخدمه أيضًا؟

Lauszus RPI4 مع raspbian لايت
أوه ، لا ، لدي تطبيق actuall أريد تشغيله في حاوية لأنه سيجعل التوزيع والتحكم في الإصدار أسهل.
كنت أحاول استخدام الأمثلة لأنني إذا جعلتها تعمل ، يمكنني أن أفعل الشيء نفسه مع تطبيق kivy الخاص بي.
كيف يمكنني التحقق من الجهاز الموجود في / dev / input؟ لم أفعل ذلك ، لا

lucasnzone ها هو الإخراج على

$ cat /proc/bus/input/devices | grep -P '^[NH]: ' | paste - -
N: Name="eGalax Inc. eGalaxTouch EXC3110-3883-08.00.00" H: Handlers=mouse0 event0

هذا يعني أن الشاشة التي تعمل باللمس بسعر /dev/input/event0 .

نعم ، حدث لي هو الحدث - أيضًا
N: Name="ADS7846 Touchscreen" H: Handlers=mouse0 event0

تمام. هل يعمل التطبيق مع شاشة تعمل باللمس خارج الحاوية؟

تضمين التغريدة
نعم ، لقد فعلت ذلك باستخدام عجلة Kivy-2.0.0rc1-cp37-cp37m-linux_armv7l.whl
أصلاً مع مفترقك الذي لا يستخدم برامج تشغيل Broadcom

تمام. ماهي الاخطاء التي حصلت عليها؟ هو /dev/input/event0 ؟ الجهاز الموجود داخل الحاوية؟

نعم @ Lauszus
لدي crw-rw---- 1 root i2c 13, 64 Mar 12 22:56 event0 و crw-rw---- 1 root i2c 13, 64 Mar 12 22:56 mouse0 داخل الحاوية

حاول تحديد الناتج مثل cat /dev/input/event0 . هل تطبع أي شيء عندما تلمس الشاشة؟

Lauszus يفعل ، أحرف عشوائية
أنا الآن مرتبك أكثر من ذي قبل

سوبر هذا يعني أن الحاوية تحصل على المدخلات. ما تراه هو تدفق البايت الخام ، لذلك لن يكون له معنى بالنسبة لك. على أي حال ، هذا يعني أن شيئًا ما في تكوين Kivy غير صحيح.

هل يمكنك محاولة تجميع وتشغيل رمز C هذا (إنه رمز قديم استخدمته لتصحيح أخطاء شاشتي):

#include <stdio.h>
#include <linux/input.h>
#include <signal.h>
#include <fcntl.h>
#include <unistd.h>

static volatile sig_atomic_t run = 1;

void sigint(int sig) {
    run = 0;
}

int main() {
    signal(SIGINT, sigint);

    int fd = open("/dev/input/event0", /*O_NONBLOCK |*/ O_RDONLY);
    if (fd < 0) {
        printf("Failed to open device\n");
        return 1;
    }

    while (run) {
        struct input_event ev;
        int num_bytes = read(fd, &ev, sizeof(ev));
        if (num_bytes != sizeof(ev)) {
            printf("Failed to read device\n");
            return 1;
        }
        printf("%u, %u, %u, %u, %d\n", ev.time.tv_sec, ev.time.tv_usec, ev.type, ev.code, ev.value);
    }

    printf("Closing device\n");
    close(fd);
    return 0;
}

يمكنك تجميعها وتشغيلها على النحو التالي:

gcc touch.c -o touch && ./touch

تضمين التغريدة
أحصل على بعض الإخراج من اللمس:

1584058230، 998152، 1، 330، 1
1584058230، 998152، 3، 0، 477
1584058230 ، 998152 ، 3 ، 1 ، 3477
1584058230 ، 998152 ، 3 ، 24 ، 64790
1584058230، 998152، 0، 0، 0
1584058231، 15687، 1، 330، 0
1584058231 ، 15687 ، 3 ، 24 ، 0
1584058231، 15687، 0، 0، 0

هذا هو الزاوية اليسرى السفلية

تمام. حاول إضافة ما يلي إلى أعلى الكود (من المهم أن يكون أعلى من أي عمليات استيراد أخرى):

from kivy.config import Config
Config.set('input', 'mtdev_%(name)s', 'probesysfs,provider=mtdev')

حسنًا ، هذا هو الناتج عندما أقوم بتشغيل تطبيقي ، مع وجود هذا الرمز في الأعلى:

[INFO] المسجل: تسجيل الدخول /root/.kivy/logs/kivy_20-03-13_3.txt
[INFO] Kivy: v2.0.0.dev0، git-cef99e4، 20191024
[INFO] Kivy: مثبت على "/root/venv-kivy/lib/python3.7/site-packages/kivy/__init__.py"
[INFO] Python: v3.7.3 (افتراضي ، 3 أبريل 2019 ، 05:39:12)
[GCC 8.2.0]
[INFO] Python: مترجم فوري في "/ root / venv-kivy / bin / python3"
[INFO] المصنع: تم تحميل 184 رمزًا
[INFO] صورة: الموفرون: img_tex ، img_dds ، img_sdl2 ، img_gif (تم تجاهل img_pil ، img_ffpyplayer)
[INFO] النص: الموفر: sdl2
[INFO] النافذة: الموفر: sdl2 (تم تجاهل ['window_egl_rpi'])
[INFO] GL: استخدام نظام الرسوم "OpenGL ES 2"
[INFO] GL: الخلفية المستخدمة
[INFO] GL: إصدار OpenGL [INFO] GL: بائع OpenGL [INFO] GL: عارض OpenGL
[INFO] GL: إصدار تحليل OpenGL: 2 ، 1
[INFO] GL: نسخة التظليل
[INFO] GL: الحد الأقصى لحجم الملمس <4096>
[INFO] GL: الحد الأقصى للوحدات Texture <16>
[INFO] النافذة: إضافة مزود إدخال sdl2 تلقائيًا
[INFO] النافذة: لوحة المفاتيح الافتراضية غير مسموح بها ، الوضع الفردي ، غير مثبت
[INFO] القاعدة: بدء الحلقة الرئيسية للتطبيق
[INFO] GL: دعم نسيج NPOT متاح

لا يزال لا يستجيب للمس

هل يمكنك محاولة تثبيت الحزمة libmtdev1 ؟

بالتأكيد يمكنني ذلك ، سأحاول الآن وتشغيله مرة أخرى

Lauszus تم تثبيته بالفعل ، نفس المشكلات

Lauszus لقد حصلت على العمل! شكرا على كل مساعدتك يا صديقي!
%(name)s = hidinput,/dev/input/event0
أضفت هذا السطر إلى قسم [input] في kivy / config.ini
شكرا مرة أخرى يا صديقي!

lucasnzone من الرائع سماع ذلك :)

لأي شخص يقرأ هذا ؛ تم الآن دمج https://github.com/kivy/kivy/pull/6769 ، لذلك لم تعد هناك حاجة لإجراء تغييرات على Kivy ، ولكن لا تزال بحاجة إلى تجميع SDL2 من المصدر. يمكن العثور على التعليمات في المستندات الرسمية: https://kivy.org/doc/master/installation/installation-rpi.html.

Lauszus ،
لقد اتبعت تعليماتك باستخدام إصدار 1Gb Raspberry pi 4 مع نظام التشغيل 2020-02-13 Lite. ولكن لا يزال لا يمكن العثور على مزود نافذة قيمة. أي فكرة؟

أفضل،

@ somber02 سيكون من الأفضل أن تطلب المزيد من الدعم على قنوات الدعم الرسمية لدينا (مثل الخلاف). نحن نفضل استخدام مشكلات github بشكل أساسي للأخطاء الفعلية وليس الدعم.

matham المشكلة هي أن هناك مشكلة في سير عمل CI الذي ينشئ المستندات ، لذلك لم يتم تحديثه على موقع الويب: https://github.com/kivy/kivy/runs/506000991.

@ somber02 الآن يمكنك العثور على الوثائق هنا: https://github.com/Lauszus/kivy/blob/45f7ec3851e09220b2b5dc8f34523d6eebff17c2/doc/sources/installation/installation-rpi.rst حتى يتم تحديث الموقع.

حسنًا ، سيئتي ، لقد نسيت دمج https://github.com/kivy/kivy-server/pull/17. يجب إصلاحه الآن.

@ ماثام شكرا. يرجى الاطلاع على: https://github.com/kivy/kivy/pull/6775 ، لأن ذلك يمنع إنشاء المستندات.

تضمين التغريدة شكرا لك على التعليمات. لقد اتبعت الرابط بمعلومات محدثة لكنها ما زالت تفشل مع "تعذر العثور على أي مزود نافذة". و "sdl2-runtimeError" لا يمكن تهيئة شرط اختبار EGL:

  1. Raspberry pi 4 1Gb version 2020-02-13 Lite Raspberrian.
  2. بعد إعادة تجميع sdl2 ، أعد التشغيل
  3. تم اختباره بالتثبيت العالمي من أحدث إصدار من pypi ، من الفرع الرئيسي ، من أحدث عجلة ومن أحدث إصدار مطور.
  4. في حالات قليلة تظهر رسالة الخطأ أنه لا يمكن العثور على مزود نافذة x11 ، سأفعل KIVY_WINDOW = sdl2 لإجباره على استخدام sdl2 في هذه الحالة.

أفعل شيئا خاطئا؟

@ somber02 هل جمعت Kivy من الفرع الرئيسي؟ إذا لم يكن الأمر كذلك ، فيرجى القيام بذلك ، حيث لم يتم تحديث العجلات مسبقة الصنع حتى الآن.

لاحظ @ somber02 أيضًا أنه لا يجب عليك تثبيت هذه التبعيات باستخدام apt:

libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev

لأنك تريد استخدام الإصدار الذي جمعته بأنفسكم.

Lauszus شكرا لك. لقد قمت فقط بنسخ التبعيات بدون نظرة فاحصة .... شكرا لك هذا هو السبب. بعد أن قمت بتطهير هذه الحزمة وإعادة تثبيت حزمة sdl2 المترجمة ، فإنها تعمل.

شكرا جزيلا لكم على عملكم الشاق.

@ somber02 عظيم أن نسمع ذلك. أنا فقط أرسل علاقات عامة أخرى لتوضيح الأمر أكثر: https://github.com/kivy/kivy/pull/6780.

بالمناسبة ، هل واجهت هذه المشكلة أيضًا: https://github.com/kivy/kivy/pull/6778؟ أم أنه تم تسريع الأجهزة؟

Lauszus ، يمكنني أن أؤكد أنه يتم تسريع الأجهزة. شكرا لك

تضمين التغريدة

لاحظ أنه لا يجب عليك تثبيت هذه التبعيات باستخدام apt:

في حالة مثل هذه لإرشادات تثبيت Kivy ، قد تقترح حتى أن يقوم المستخدم بعمل sudo apt-get remove ... أو sudo apt-get purge ... لهذه القائمة المختصرة في البداية قبل ثم تجميع sdl2 . بالنسبة لمعظمنا ، من المحتمل أننا نحاول إصلاح محاولة سابقة ولذا فإننا سنقوم بتثبيت إصدار الحزمة الافتراضي.

Lauszus عمل مذهل - أدى هذا إلى حل جميع مشكلات تشغيل kivy على buster lite بالنسبة لي.

هل يمكنني أن أقترح فقط للتوضيح أن حالة الدليل التي تفيد بأن الخطوة 2 تمامًا قد تم تخطيها إذا كنت تقوم بإعداد buster lite على pi 4؟

بالإضافة إلى ذلك ، هل هناك عمل حول الحفاظ على تسريع الأجهزة التي من شأنها أن تمكنك من تدوير الاتجاه للتكوين؟ الطريقة الوحيدة التي يمكنني من خلالها رؤية أن هذا يعمل هو مع x11 أو عن طريق تعطيل برنامج تشغيل V3D.

https://github.com/pimoroni/hyperpixel4/issues/39

pwdavari يجب عدم تخطي الخطوة 2 إذا كنت تستخدم Buster lite ، حيث تحتاج إلى تجميع SDL2 من المصدر ما لم يتم تحديث حزمة SDL2؟

يمكنك تدوير العرض عن طريق إضافة أوامر kernel التالية في /boot/cmdline.txt :

video=HDMI-A-1:1920x1080M<strong i="9">@60</strong>,margin_left=0,margin_right=0,margin_top=0,margin_bottom=0,rotate=90,reflect_x

انظر: https://www.raspberrypi.org/documentation/configuration/cmdline-txt.md

إذا كنت تريد فقط تدوير الشاشة في Kivy:

from kivy.config import Config
Config.set('input', 'mtdev_%(name)s', 'probesysfs,provider=mtdev,param=rotation=90,param=invert_y=1')

Lauszus شكرا على الرد

كنت أشير للتو إلى هذه النقطة من الخطوة 3 من الوثائق:

3. Now simply follow the Raspberry Pi 1-4 installation instructions to install Kivy, but do NOT install the SDL2 packages using apt.

هل يجب ألا نتخطى الخطوة 2 من الإعداد العادي لـ Pi 1-4 إذا كنت قد قمت بالفعل بتثبيت حزم sdl من المصدر واتبعت الخطوات -> sudo قم بالتثبيت لكل منها؟

أم أنه يقول أنه يجب عليك اتباع الخطوات ولكن لا تقم بالتثبيت باستخدام apt ، ففعل ذلك:

install libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev

تضمين التغريدة

لم أكن أضع الفيديو = المعلمات على نفس السطر. لم يكن الأمر كذلك حتى قمت بإعادة توجيهي إلى الوثائق التي لاحظت أنها تنص صراحةً على أن جميع معلمات / تكوينات cmdline.txt يجب أن تكون في سطر واحد. خطأ الصاعد.

شكرا لمساعدتك!

pwdavari نعم ، أنت بحاجة إلى تخطي الخطوة 2 ضمن "تثبيت Raspberry Pi 1-4".

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات
يستخدم موقع bleepcoder.com معلومات GitHub المرخصة بشكل عام لتزويد المطورين حول العالم بحلول لمشاكلهم. نحن لسنا تابعين لشركة GitHub، Inc. أو مع أي مطورين يستخدمون GitHub لمشاريعهم. نحن لا نستضيف أيًا من مقاطع الفيديو أو الصور على خوادمنا. جميع الحقوق تنتمي إلى أصحابها.
مصدر هذه الصفحة: مصدر

لغات البرمجة الشعبية
مشاريع GitHub الشعبية
المزيد من مشاريع GitHub

© 2024 bleepcoder.com - Contact
Made with in the Dominican Republic.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.