Pygame Joystick debug-message abschalten

  • Einen schönen guten Tag zusammen!

    Ich arbeite mich grade in Python bzw. Pygame ein und habe nun ein kleines Problem.

    Bei der Abfrage der Joysticks erscheint jedes mal eine Debugmessage im Terminal:

    Code
    SDL_JoystickGetButton value:0:

    Dies ist mir beim Starten mit IDLE nie aufgefallen, erst als ich einen Testlauf über das Terminal gestartet habe.
    Da der Joystick ständig abgefragt wird, spammt das mein komplettes Terminal voll.
    Eigene Debug-Nachrichten sind daher kaum noch zu finden.
    Nach kurzer Suche bin ich sehr schnell auf die Information gestoßen, dass das wohl ein bereits bekannter Bug sein soll.
    Lösungsansätze sind wohl auch dort beschrieben, allerdings fehlt es mir an Erfahrung, diese umzusetzen.

    Hier mal ein Beispiel, um den Bug zu produzieren (Joystick angeschlossen)

    Code
    import pygame as PG
    
    
    print "Pygame version",PG.ver
    PG.init()
    Js = PG.joystick.Joystick(0)
    Js.init()
    for i in range(10):
     Dummy = Js.get_axis(0)


    Jetzt habe ich diese Lösung gefunden.
    Es brauchen also eigentlich wohl nur wenige Zeilen geändert werden, um diese Debug Info abzuschalten.

    Nur.... Wie stelle ich das an???
    Oder habe ich vllt. sogar etwas übersehen???

    Ich nutze Python 2.7.3 mit Pygame 1.9.1
    Ein Update bringt keine Änderungen.
    Unter dem Suchbegriff "SDL_JoystickGetButton value:0:" lässt sich das Problem zwar oft finden,
    eine Lösung erschließt sich mir aber noch nicht.

    Vielen Dank schonmal für Eure Zeit!

    ...and write down with pencil&paper...
    Where can i download "pencil&paper" ?

    Einmal editiert, zuletzt von LieberScholli (5. März 2014 um 15:58)

  • Durch folgendes wird pygame 1.9.2pre installiert


    So wie ich das verstehe müsstest du den pygame Source bearbeiten und die Debugzeile auskommentieren

    pygame ist (zumindest bei mir) hier installiert: /usr/lib/python2.7/dist-packages/pygame/
    Da befindet sich auch eine joystick.so aber die Datei ist eben bereits kompiliert..
    Also müsstest du dir den Source runterladen, vor dem setup die Datei modifizieren und erst dann setup.py ausführen:
    (jenachdem welche Python Version du hast is folgendes unterschiedlich. Normal solltest du aber Python v2.x haben, findest du mit dem Befehl python --version heraus)


    Benötigte Pakete installieren:

    Python 2.x

    Code
    apt-get update
    apt-get install build-essential mercurial python-dev python-numpy ffmpeg libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsmpeg-dev libsdl1.2-dev  libportmidi-dev libswscale-dev libavformat-dev libavcodec-dev

    Python 3.x

    Code
    apt-get update
    apt-get install build-essential mercurial python3-dev python3-numpy ffmpeg libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsmpeg-dev libsdl1.2-dev  libportmidi-dev libswscale-dev libavformat-dev libavcodec-dev

    Source laden:

    Code
    hg clone https://bitbucket.org/pygame/pygame

    In das neue Verzeichnis wechseln und die src/joystick.c bearbeiten:

    Code
    cd pygame
    nano src/joystick.c

    STRG + w drücken und nach DEBUG suchen (fängt in Zeile 204 an. Aktuelle Zeile kannst du durch STRG + c anzeigen)

    Und dann sorgst du eben dafür das Zeile 205 wie folgt aussieht:

    Code
    /*printf("SDL_JoystickGetAxis value:%d:\n", value);*/

    Also auskommentieren indem du an den Anfang der Zeile ein /* und am Ende der Zeile ein */ einfügst

    Dann drückst du erneut STRG + w und dann die Taste Enter (da das Suchwort noch das selbe ist) und kontrollierst das so lange bis du wieder in zeile 204 landest ;)
    Anschließend Datei speichern und folgenden Befehl zum kompilieren und installieren ausführen:

    Python 2.x

    Code
    python setup.py build
    sudo python setup.py install

    Python 3.x

    Code
    python3 setup.py build
    sudo python3 setup.py install
  • Okay, auf eine ähnliche Lösung bin ich auch schon gestoßen,
    hab das aber um Verwirrung zu vermeiden erstmal nicht erwähnt.

    Der Unterschied zu beiden Lösungen besteht am Anfang:
    Deine Lösung:

    Code
    apt-get install build-essential mercurial python-dev ....

    Andere Lösung:

    Code
    apt-get install mercurial python-dev ....

    Der rest ist absolut identisch.
    Was macht "build-essential" für einen Unterschied?

    Danke für diese wirklich ausführliche Anleitung. :thumbs1:

    ...and write down with pencil&paper...
    Where can i download "pencil&paper" ?

  • Alles klaro! (und danke für den Link)

    Das Kompilieren hat zwar gut ne Stunde gedauert, hat aber zum gewünschtem Ergebniss geführt.
    Einzig die Module libsdl1.2-dev und libportmidi-dev konnten nicht in einem Rutsch geladen werden.
    Einzeln ging es aber.

    Die geladene joystick.c war auch schon bereits editiert, brauchte ich also nur zu überprüfen und dann kompilen.

    Danke nochmal für die schnelle und kompetente Hilfe! :thumbs1:

    ...and write down with pencil&paper...
    Where can i download "pencil&paper" ?

    Einmal editiert, zuletzt von LieberScholli (5. März 2014 um 18:27)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!