RaspberryDisplay 7 Zoll Touch mit Pygame nur unter X11 korrekt, mit Pygame alleine Position falsch

  • Hallo zusammen


    • Display: Original Raspberry 7" Touch
    • Pi: Raspberry 3B V1.2
    • Raspbian GNU/Linux 10 (buster)


    Ich zeige mit Pygame Icons an, und löse auf Touch Funktionen aus. Script funktioniert unter X11 hervorragend, Koordinaten von Touch oder Mouseklick passen 100%


    Starte ich das Script ohne X11 direkt, stimmen die Koordinaten nur noch bei Mausbenutzung. Touches stimmen von den Orientierungen (oben/unten/links/rechts), scheinen aber um einen Faktor und Offset falsch zu sein.


    Ich habe im Forum einige ähnliche Fragen gefunden, aber keine brauchbaren Antworten. Wie bekomme ich nur die perfekte Kalibration unter X11 auch ohne grafische Oberfläche zum laufen?


    Vielen Dank!

  • Hallo,

    was Du wissen mußt:

    Touchdisplays bestehen aus 2 Systemen

    • ein Ausgabesystem zur Anzeige (Display) und
    • ein Eingabesystem (Touch-Koordinaten)

    Für Touch gibt es resistive und kapazitive Systeme. Die resistiven muß man kalibrieren, die kapazitiven nicht.


    Zum Kalibrieren von resistiven Touch gibt es 2 Programme, jenachdem ob Du mit grafischer Oberfläche (=Desktop/GUI) oder ohne GUI mit Konsole arbeitest*1:

    *1 Info: boot to Console/CLI oder boot to Desktop/GUI.

    • Konsole/CLI - ts_calibrate
    • Desktop/GUI - xinput-calibrator

    Das Offizielle 7" Touchdisplay hat kapazitiven Touch, das mußt Du nicht kalibrieren.


    Probiere das:

    Display- und Touch-Orientierung stellst Du bei diesem Touchdisplay mit lcd_rotate in der Datei /boot/config.txt ein.

    lcd_rotate=2 bedeutet µUSB, HDMI ünd 3.5mm-Klinke sind oben.


    zeige bitte die Ausgabe von egrep -vn "^#|^$" /boot/config.txt in einem Codeblock (das ist das -Symbol im schwarzen Balken)

    Info: Das kryptische Kommando zeigt die Datei ohne Kommentar- und ohne Leerzeilen an.

    Schönen Gruß, kle

  • Danke für die schnelle Antwort!


    Das 7" Display ist kapazitiv, genau - deswegen wundert mich der Fehler.


    Das ist meine config.txt:


    Code
    19:lcd_rotate=2
    60:dtparam=audio=on
    62:[pi4]
    64:dtoverlay=vc4-fkms-v3d
    65:max_framebuffers=2
    67:[all]
    69:start_x=1
    70:gpu_mem=128
    71:enable_uart=1


    Hier ein kl. Video, in dem der Fehler sichtbar wird:


    External Content youtu.be
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.


    Danke für deine Hilfe!

    Edited once, last by snafu ().

  • Wenn ja, zeige es bitte im Codeblock.

    Sorry, dass ich mir alles aus der Nase ziehen lassen muss ;)

    Hier alles abgestrippt, was nicht für die Demo funktional ist:


  • 8. screen = pygame.display.set_mode((size), pygame.NOFRAME)

    ersetze NOFRAME mal durch SRCALPHA


    NOFRAME soll den Fensterrahmen unterdrücken, bei Konsol-Betrieb gibt es keine Fenster.

    Aber ich glaube nicht, daß das was ändert.

    Ich habe ein 7"-Touchscreen, aber den für einen Test zu demontieren ist umständlich.

  • Quote

    ersetze NOFRAME mal durch SRCALPHA

    Keine Änderung.


    Habe zwischenzeitlich auch mal die Stromversorgung durch Powerbank getestet, hatte den vagen Gedanken "EMV" ... aber war natürlich Quatsch.

    Bizarres Problem.