Exit emulator with one button press vía gpio
-
@supernature2k where is your fringing script to kill emulators via GPIO ?
-
@Substring try this:
import RPi.GPIO as GPIO import time import os import thread import datetime import socket import sys from datetime import datetime from configgen import recalboxFiles # this last one retrieves emulators bin names IPADDR = "127.0.0.1" PORTNUM = 55355 # IP and port for retroarch network commands QUIT = 3 GPIO.setwarnings(False) # no warnings GPIO.setmode(GPIO.BCM) # set up BCM GPIO numbering GPIO.setup(QUIT, GPIO.IN, pull_up_down=GPIO.PUD_UP) # GPIO on pin 3 is the GPIO 2 in BCM mode #to Reset+ # Define a threaded callback function to run in another thread when events are detected def button_pressed(channel): nwcommand="QUIT" retroarch(nwcommand) killthats**t(channel) # on quit press, trying to kill all listed emus def killthats**t(channel): if channel == QUIT: for bin in recalboxFiles.recalboxBins: print bin proc = os.path.basename(bin) print proc os.system("killall -9 "+proc) # sending network command to retroarch (only exit and reset atm) def retroarch(nwcommand): try: s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) except socket.error: print 'Failed to create socket' sys.exit() s.sendto(nwcommand, (IPADDR, PORTNUM)) GPIO.add_event_detect(QUIT, GPIO.BOTH, callback=button_pressed, bouncetime=2) while True: time.sleep(0.2)
-
@supernature2k
Does this automaticly start ES again after killing the Emulator? -
@sevenx no as ES is not killed when you launch an emu
-
@supernature2k
Do you have some time, to talk about a new project from me? Over PM? -
@sevenx ok
-
@8bit_astronaut maybe this article I wrote some time ago can help. I use the script to reset the emulator. But with replacing the RESET with QUIT you should be able to quit it and return to ES.
https://github.com/recalbox/recalbox-os/wiki/Emulator-interactions-via-GPIO-mapping-(EN)
-
@lackyluuk that looks great! Ill check it in a moment, thank you so much!
-
@lackyluuk its necesary to have an internet conection for recalbox???
-
@8bit_astronaut No, I think it should also work without. But it is highly recommended
-
@8bit_astronaut Not at all. The internet connection is only useful for scraping directly with your recalbox or for accessing you share folder through your network.
-
maybe?
exit-emu-1b-installer:
http://webcache.googleusercontent.com/search?q=cache:https://gist.github.com/Phantiss/3e0cab70f7084431e1c389d633e53662rpi-exit-emu-1b .py
http://webcache.googleusercontent.com/search?q=cache:https://gist.github.com/Phantiss/b9248718a208e293d332feed0a9cbc27S98exit-emu-1b
http://webcache.googleusercontent.com/search?q=cache:https://gist.github.com/Phantiss/813037bfd7c9d22a3cd2887714463eda -
@sevenx Haha nice! I update the wiki page and links.
-
-
I think my script is betta (btw, I corrected this RESET instead of QUIT):
- sending network command to retroarch is better
- using sub's list of emulator bins is better (no need to modify script if new emus implemented)
-
@supernature2k Can you update the wiki this way?
-
@DjLeChuck We could include @supernature2k s script into the article i posted above. This article is in general about interacting with emulators through the retroarch network commands. Instead of having multiple articles spreaded around we could have all in the same place. What do you think?
-
@lackyluuk Obviously you're right! My intention was only to restore the deleted page, but if we can removed it and say "Go on this page it's better!" I'm OK.
-
@DjLeChuck I only try to keep the articles in a clean way to prevent confiusion so that many question can be answered ( I also want to write / change an article for the right image installation, because lot of people have problems with it )
If someone can confirm that @supernature2k s script is working like this above, then I can try to implement this in a proper way
-
@supernature2k's script still requires a "better integration" to work in recalbox (he knows what i expect from him). The idea i'd love is to have a confg file saying :
[GPIO26] action=stopEmulators [GPIO25] action=shutdownSystem
such a thing
I find it pointless to cumulate python scripts to handle GPIO when all should be gathered into 1 single place