RESET Taste an GPIO, wohin das Script?
-
Hallo,
ich möchte gerne einen Hardware-Push-Button dazu nutzen ein Spiel zu beenden (QUIT). Dazu gibt es auch ein wunderbares Script in der Wiki:
http://recalbox-wiki-rtfd.readthedocs.io/en/4.0/DE/Emulator-Interaktionen-mit-GPIO-(DE)/Nur leider haben sie vergessen zu erwähnen wo das Script hin soll?
Weiß das jemand? Danke
Grüße,
Fruechtchen -
@Fruechtchen Das Wiki ist von mir & ja, ich habe tatsächlich nicht erwähnt wohin damit
Das Script legst du am besten unter recalbox/scripts ab (Zuerst ausführbar machen).
In etc/init.d startest du dann das Script als Backgroundtask.
-
Danke für Deine schnelle Antwort!
Leider ist das Verzeichnis /recalbox/scripts readonly:
[ Error writing gpio-reset-button.py: Read-only file system ]Ich versuche es mal woanders reinzuschmeissen
LG,
Fruechtchen -
@Fruechtchen du musst die Partition, welche du bearbeiten willst beschreibbar machen, sonst ist alles read-only.
https://github.com/recalbox/recalbox-os/wiki/Eine-Partition-beschreibbar-machen-(DE)
-
Dankeschön
Sorry, ich noch viel lerne müsseKannst Du mir das mit init.d nochmal erklären? Reicht es wenn ich den Pfad mit Dateinamen in eine init.d Datei schmeisse, oder muss ich eine extra Datei anlegen? Wird alles in init.d autmatisch ausgeführt?
Ich kannte init.d eigentlich nur als einzige Datei, nicht als OrdnerLG,
Fruechtchen -
@Fruechtchen Ich bin gerade unterwegs, kann dir aber eine detaillierte Beschreibung geben am Abend, ok? (Es gibt natürlich mehrere Wege das zu tun, aber ich kann dir dann sagen wie ich es gemacht habe).
Bis dann kannst du evtl. noch ein bisschen im Wiki stöbern: https://github.com/recalbox/recalbox-os/wiki
-
@lackyluuk Das wäre super! Danke schonmal im voraus!
Ich bin mir ja im moment noch nicht mal sicher ob das ein Phyton-Script ist (glaube ja), weil beim manuellen Aufruf (mit Endung .py) kommen folgende Fehler:./gpio-reset-button.py
./gpio-reset-button.py: line 1: import: command not found
./gpio-reset-button.py: line 2: import: command not found
./gpio-reset-button.py: line 3: import: command not found
./gpio-reset-button.py: line 5: IPADDR: command not found
./gpio-reset-button.py: line 6: PORTNUM: command not found
./gpio-reset-button.py: line 8: COMMAND: command not found
./gpio-reset-button.py: line 11: try:: command not found
./gpio-reset-button.py: line 12: syntax error near unexpected token(' ./gpio-reset-button.py: line 12:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)'Bis dann!
LG,
Fruechtchen -
@Fruechtchen In der ersten Zeile des scripts muss das stehen: #!/usr/bin/python
Dann das script ausführbar machen mit diesem Befehl: chmod +x myFile.py
-
Kannst Du mir nachher noch schreiben, ob es richtig ist, das wenn man den GPIO-Port wechseln möchte, einfach statt "3" einen anderen Port angibt? Port 3 (Stecker 5+6) ist mit Start/Herunterfahren belegt Ich würde gerne Port 4 nehmen.
Also in diesen beiden Zeilen statt 3 jeweils 4 reinzuschreiben?
GPIO.add_event_detect(3, GPIO.FALLING, callback=exitEmulator, bouncetime=500)
GPIO.setup(3, GPIO.IN, pull_up_down=GPIO.PUD_UP)LG,
Fruechtchen -
Ist es nicht einfacher sich an diese Anleitung zu halten?
https://github.com/recalbox/recalbox-os/wiki/Add-a-start-stop-button-to-your-recalbox-(EN) -
@TeKo Darum geht es nicht. Es geht um das Beenden von Emulatoren, nicht um das Starten / Herunterfahren von recalbox.
@Fruechtchen
Zuerst solltest du am Anfang deines Scripts die Zeile #!/usr/bin/python drin haben (Wiki-Artikel habe ich angepasst). Danach machst du wie gesagt dein Script ausführbar mit: chmod +x myFile.pyDas Script speicherst du dann ab in cd /recalbox/scripts mit einem Namen deiner Wahl.
Danach gehst du in das Verzeichnis cd /etc/init.d
Alle Scripts in diesem Verzeichnis werden beim Systemstart nacheinander ausgeführt. Deshalb erzeugst du hier ein neues Python-File welches du z.B. S99call-reset-game-script.py nennst (oder wie auch immer :D)Der Inhalt könnte folgendermassen aussehen:
#!/usr/bin/python import subprocess try: subprocess.Popen(["python","/recalbox/scripts/DEIN-SCRIPT.py"]) except KeyboardInterrupt: print "Quit"
Damit startest du nun dein Script, welches in /recalbox/scripts liegt in einem Hintergrundprozess.
Du kannst natürlich jeden freien GPIO-Pin verwenden wenn du Pin 3 schon belegt hast.
-
vielen dank!
Ich denke alles hat geklappt. Funktionieren tut es dennoch nicht. Mag aber auch daran liegen, das sich retroarch im Menü die Einstellung "network commands -> on" nicht merkt.
Weißt Du zufällig wo sich die Config-Datei von retroarch befindet? Dann würde ich es direkt darin ändern.Vielleicht habe ich ja Glück und es geht dann
@TeKo Das ist genau der Grund weshalb ich diesen Hardwarebutton auf einen anderen GPIO-Port legen möchte, da ein anderer Button für Deine genannte Anleitung herhält (und im übrigen super funktioniert).
Grüße,
Fruechtchen -
@Fruechtchen
Du kannst das retroArch-Menü z.B. aus einem Spiel heraus mit Hotkey + B öffnen und dann dort findest du irgendwo die Option. Dann noch abspeichern und los gehts. -
Wie bereits geschrieben klappt das leider nicht. Ich kann zwar das retroarch Menü öffnen, und auch unter network "network commands" anschalten, aber nach dem speichern "save current config" aber auch "save new config" ist nach dem rausgehen wieder alles beim alten und network commands deaktiviert.
Und die Anleitungen die ich gefunden habe, beziehen sich auf Pfade und Dateinamen die bei mir nicht existieren. Evtl hat sich seit 4.0 was geändert?
Daher die frage ob Du weißt wo die Config-Datei ist, damit ich sie manuell ändern kann.Grüße,
Fruechtchen -
@Fruechtchen Dann machst du etwas mit dem Abspeichern der Config falsch
Ich hatte dasselbe Problem zuerst und dann hat es dann irgendwann geklappt.Du kannst über den Windows-Explorer über \DeineRecalbox\share\system\configs\retroarch auf die retroarch config zugreifen.
Probiere einfach ein paar mal und lösche die vielen überzähligen configs, die es dir jenachdem erzeugt hat
-
@Fruechtchen Hats geklappt?
-
Hallo lackyluuk,
leider hatte es nicht funktioniert, was ich auch machte. Ich weiß auch nicht so richtig warum es nicht ging. Die Einstellungen habe ich manuell geändert (auch wenn im retroarch-Menü die Option nach wie vor als deaktiviert angezeigt wird). Und verkabelt ist auch alles richtig.
Ich halte das Projekt jetzt erst mal auf Eis, bis mir was einfällt oder ich mehr Zeit habe.
Dennoch danke ich Dir sehr für Deine geduldige Hilfe!Grüße,
Fruechtchen -
Hi Leute,
ich bin neu hier im Forum. Durch etwas Recherche bin ich auf Recalbox gestoßen, auf Nintendos Classic Mini sind ja leider nur 30 Spiele installiert. Jetzt habe ich das gleiche Problem wie viele anderen User vor mir, ich nutze einen Nachbau des NES Controllers und muss momentan über meine Tastatur (ESC Taste) in das Hauptmenü zurückkehren.
Jetzt habe ich gesehen, dass man den Quit- Befehl durch ein Script selbst auf einen Taster legen kann.
Ich verzweifle aber schon bei den Basics.
Hab nirgendwo gesehen, wie das Script heißen muss. Oder ist das frei wählbar?
Und wo finde ich den Ordner recalbox/scripts? Hat sich da von Version zu Version vielleicht was geändert? Ich finde den weder auf der SD Karte über Kartenleser, noch über Samba Freigabe. -
@b3ast dein Controller hat SELECT und START Knöpfe? Dann kannst du beide gleichzeitig drucken, um aus den Emulatoren zurück zum EmulationStation (ES) zu kommen (Stichwort HOTKEY).
Pflichtlektüre: https://forum.recalbox.com/category/45/wichtig-bitte-erst-lesen -
Danke paradadf. Für mich ist das am Anfang noch nicht so einfach die Zusammenhänge zu verstehen. Aber ist ja schonmal gut, dass es hier User gibt, die Tutorials und so verfassen für solche Leute für mich.
Problem war, ich hab meinen Controller konfiguriert und Select natürlich auf Select gelegt, der hätte wahrscheinlich out-of-the-box optimal funktioniert und wäre richtig konfiguriert gewesen.
Hoffe jetzt nur, ich brauche nie die Select Taste, da diese nun natürlich als Hotkey definiert ist.Gruß
Stefan