Bouton gpio quitter émulateur
-
@Substring
Bonsoir
Il me semble que le bouton du script rpi-pin356-power.py demande au pi de redémarrer.
Sur mon projet je voudrais quitter l'emulateur et retourner sous ES.
Y a t'il un moyen simple de faire cela?
J'ai pensé à nouveau à faire un script avec un ps puis chercher le nom d'un émulateur lancé dans le résultat et le killer.
Si c'est une solution, existe t'il une liste établie de tous les processus d'emulateur.
Si je me trompe de direction peux tu me rediriger ?
Par avance merci. -
@godhunter74 facile :
@supernature2k GO !
-
Dois je attendre un retour de @supernature2k ?
-
@godhunter74 oui, parce qu'il l'a fait
-
Trop bien mon bouton éject va bien porter son nom
-
@godhunter74 Hi guys, how may I help you?
-
Hi @supernature2k
I need some help to kill all system with one gpio button, like reset but without reset, emulationstation always running and won't restart.
I would like to make a script to do that.
@Substring says me you already do that.
Can you share your work Please? -
@godhunter74 non mais il est FR
-
@supernature2k
Bon ben la même chose mais en français ou voir le post n•1 dans ces cas là -
@godhunter74 try this:
import RPi.GPIO as GPIO import time import os import thread import datetime import socket import sys import argpa**e from datetime import datetime from configgen import recalboxFiles # this last one retrieves emulators bin names NUMGPIO = 3 GPIO.setwarnings(False) # no warnings GPIO.setmode(GPIO.BCM) # set up BCM GPIO numbering GPIO.setup(NUMGPIO, GPIO.IN, pull_up_down=GPIO.PUD_UP) # GPIO on pin 3 is the GPIO 2 in BCM mode #to button # Define a threaded callback function to run in another thread when events are detected def button_pressed(channel): timer = 0 flag = True while flag: if GPIO.input(channel) == False: timer += 1 elif GPIO.input(channel) == True: #timer adds 1 each 0.1 seconds if timer = 10, button is pressed for 1s if (timer >1): killthats**t(channel) timer = 0 flag = False time.sleep(0.1) # on power short press, trying to kill all listed emus def killthats**t(channel): if channel == NUMGPIO: for bin in recalboxFiles.recalboxBins: print bin proc = os.path.basename(bin) print proc os.system("killall -9 "+proc) GPIO.add_event_detect(NUMGPIO, GPIO.BOTH, callback=button_pressed, bouncetime=2) while True: time.sleep(0.2)
-
@supernature2k
Merci beaucoup j'essaye ça ASAP -
@godhunter74 je précise : faut recalbox 4.1 pour que ca marche
-
Je vois que ca détecté l'appui court, que se passe t'il en appuis long ?
Dois je remplacer le contenu de rpi-pin356-power.py par le script cité plus haut ?
Par avance merci. -
There is no short/long press in this version, the timer is here to avoid ghost signals on GPIO when pluging/unpluging USB or RJ45.
-
sommes nous dans la section international du forum ?
-
C'est pour s'améliorer
-
Je suis le topic, ça m’intéresse ! merci pour le script je test ça quand j'ai le temps
@supernature2k tu as une version short / long press dans les tuyaux ?
-
@idarius Oui j'ai une version short long qui fait les choses suivantes:
-
short press reset--> reset des émulateurs retroarch
-
long presse reset--> reset propre (fermeture de ES ok) de Recalbox
-
short press power--> quit émulateur (tous grâce à la liste du configgen créé par Subs)
-
long press power--> power off propre de Recalbox
-
-
@supernature2k quand tu dis reset des émulateurs, tu veux dire reset du jeu lancé ?
et le long press correspond à combien de seconde?Hâte de tester ça si tu veux des retours
-
@idarius quand je dis reset, c'est la commande RESET de retroarch donc oui, du jeu lancé.
Long press je l'ai mis à >1 seconde