Recalbox Forum

    • Register
    • Login
    • Search
    • Recent
    • Tags
    • recalbox.com
    • Gitlab repository
    • Documentation
    • Discord

    Bouton gpio quitter émulateur

    Manettes/GPIO/Encodeurs
    gpio quitter
    13
    71
    30239
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Substring
      Substring @godhunter74 last edited by

      @godhunter74 Quel formalisme ! tu as oublié "Veuilles agréer l'expression de mes rétro salutations" 😄

      Former dev - Please reply with @substring so that i am notified when you answer me
      Ex dev - Merci de me répondre en utilisant @substring pour que je sois notifé

      1 Reply Last reply Reply Quote 0
      • godhunter74
        godhunter74 last edited by

        @Substring merci du conseil 😂

        Relier un écran I2C et afficher des informations sur les roms

        supernature2k 1 Reply Last reply Reply Quote 0
        • supernature2k
          supernature2k @godhunter74 last edited by

          @godhunter74

          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
          
          pa**er = argpa**e.ArgumentPa**er(description='power manager')
          pa**er.add_argument("-m", help="mode onoff or push", type=str, required=True)
          args = pa**er.pa**e_args()
          
          mode = args.m
          
          IPADDR = "127.0.0.1"
          PORTNUM = 55355
          # IP and port for retroarch network commands
          
          POWERPLUS = 3
          RESETPLUS = 2
          LED = 14
          
          GPIO.setwarnings(False)		# no warnings
          GPIO.setmode(GPIO.BCM)		# set up BCM GPIO numbering 
           
          GPIO.setup(RESETPLUS, GPIO.IN, pull_up_down=GPIO.PUD_UP)
          # GPIO on pin 3 is the GPIO 2 in BCM mode
          #to Reset+
          
          GPIO.setup(POWERPLUS, GPIO.IN, pull_up_down=GPIO.PUD_UP)
          # GPIO on pin 5 is the GPIO 3 in BCM mode
          #to Power+
          
          GPIO.setup(LED, GPIO.OUT)
          GPIO.output(LED, True)
          # GPIO on pin 8 is the GPIO 14 in BCM mode
          #to LED+
          
            
          # Define a threaded callback function to run in another thread when events are detected  
          def button_pressed(channel):
          	if channel == POWERPLUS:
          		speed=0.15
          		shutdownstring="shutdown -h now"
          		nwcommand="QUIT"
          		
          	elif channel == RESETPLUS:
          		speed=0.05
          		shutdownstring="shutdown -r now"
          		nwcommand="RESET"
          		
          	timer = 0
          	flag = True
          	while flag:
          		if GPIO.input(channel) == False:
          			timer += 1
          			print "Button pressed"
          		elif GPIO.input(channel) == True:
          		
          			print "Button released"
          			print timer
          		
          			#timer adds 1 each 0.1 seconds if timer = 10, button is pressed for 1s
          			if (timer > 10):
          				offreset(speed, shutdownstring)
          				print "shutdown"
          			elif (timer >1):
          				retroarch(nwcommand)
          				print "retroarch"
          				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 == POWERPLUS:
          		for bin in recalboxFiles.recalboxBins:
          				print bin
          				proc = os.path.basename(bin)
          				print proc
          				os.system("killall -9 "+proc)
          
          # 	on long button press clean stop	of ES then shutdown -h or -r		
          def offreset(speed, shutdownstring):
          	thread.start_new_thread( blink, (speed, ))
          	flag=True
          	pids = [pid for pid in os.listdir('/proc') if pid.isdigit()]
          	os.system("/etc/init.d/S31emulationstation stop")
          	while flag:
          		flag = False
          		for pid in pids:
          				try:
          					print pid
          					commandpath = open(os.path.join('/proc', pid, 'cmdline'), 'rb').read()
          					if "emulationstation" in commandpath:
          						flag = True
          				except IOError:
          					continue
          	os.system(shutdownstring)
          
          # threaded blinking function for LED	
          def blink(speed):
          	while True:  
          			GPIO.output(LED, False)
          			time.sleep(speed)
          			GPIO.output(LED, True)
          			time.sleep(speed)
          
          
          # 	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(RESETPLUS, GPIO.BOTH, callback=button_pressed, bouncetime=2)
          GPIO.add_event_detect(POWERPLUS, GPIO.BOTH, callback=button_pressed, bouncetime=2)
          while True:
          	time.sleep(0.2)
          

          Pi powered NES | Gameboy HD | RecalStation | RecalDrive
          Upvote messages if it has been useful ;)

          godhunter74 johnDoe_1 2 Replies Last reply Reply Quote 2
          • godhunter74
            godhunter74 @supernature2k last edited by

            @supernature2k
            Merci beaucoup
            @Substring
            Ca a marché 😂

            Relier un écran I2C et afficher des informations sur les roms

            1 Reply Last reply Reply Quote 0
            • babastorm
              babastorm last edited by babastorm

              @godhunter74 @substring @supernature2k Bonjour à tous,
              J'essaie de suivre la manip pour avoir moi aussi la possibilité de sortir des émulateurs avec un bref appui sur Power off.
              J'ai télécharger putty, connexion SSH ok,
              modif des droits en écriture ok...
              mais ou diable rpi-pin356-power.py se cache t'il ? j'ai parcouru les fichiers accéssible via mon réseau, nada...
              j'ai retirer la micro SD, fourré dans mon ordi, exploré les dossiers...mais pas mieux. Je suis persuadé que vous allez me tirer dessus en me lisant tellement la réponse doit être bête...mais par pitié, sortez-moi de là 😄 !

              Substring 1 Reply Last reply Reply Quote 0
              • Substring
                Substring @babastorm last edited by

                @babastorm dans /recalbox/scripts de mémoire

                Former dev - Please reply with @substring so that i am notified when you answer me
                Ex dev - Merci de me répondre en utilisant @substring pour que je sois notifé

                1 Reply Last reply Reply Quote 0
                • babastorm
                  babastorm last edited by

                  @Substring
                  J'ai trouvé entre temps, la bonne question aurait dû être "comment accède t'on à rpi-pin356-power.py ?"
                  Ce qui aurait conduit à une réponse du genre "par winSCP, banane !!"

                  En comparant les fichiers rpi-pin56-power.py et rpi-pin356-power.py, je vois que sur le second, on peut ajouter une LED.

                  • Puis-je ajouter la LED au code du rpi-pin56-power.py ? (j'utilise déjà le pin 3 pour autre chose et ne souhaite donc pas la fonction RESET)

                  • Quel est le principe de fonctionnement de la LED (sous quelle condition est-elle allumé, sous quelle condition s'éteint-elle ?

                  Merci par avance pour vos réponses 😉

                  Substring 1 Reply Last reply Reply Quote 0
                  • Substring
                    Substring @babastorm last edited by

                    @babastorm said in Bouton gpio quitter émulateur:

                    Puis-je ajouter la LED au code du rpi-pin56-power.py ? (j'utilise déjà le pin 3 pour autre chose et ne souhaite donc pas la fonction RESET)

                    Oh oui sûrement, je doute que ca pose problème. Par contre le script va sauter à chaque mise à jour

                    Quel est le principe de fonctionnement de la LED (sous quelle condition est-elle allumé, sous quelle condition s'éteint-elle ?

                    là faut demander à @supernature2k ou que je lise le script mais j'aurais tendance à dire "s'allume quand le script est lancé"

                    Former dev - Please reply with @substring so that i am notified when you answer me
                    Ex dev - Merci de me répondre en utilisant @substring pour que je sois notifé

                    1 Reply Last reply Reply Quote 0
                    • babastorm
                      babastorm last edited by

                      @Substring
                      Ha mince, et je suppose que le problème (raz maj) reste identique si je touche à rpi-pin356-power.py ? Dommage, le script d'éjection des émulateurs de @supernature2k étais vraiment top !
                      Une implémentation de prévus à court, moyen ou long terme ?

                      Si je pige bien tout au code :

                      • Au démarrage de Recalbox (ou ES, parfois du mal à faire la distinction tant la fusion est parfaite) la LED est allumée.
                      • Lors de L'appui sur Power ou reset, la LED clignote (de deux façon différente pour distinguer sur quel bouton on à appuyé)
                      • Je ne vois aucune déclaration pour éteindre la LED, je suppose que la fermeture d'ES ou Recalbox provoque l’extinction.

                      Mon idée serait de modifier le comportement de la led, car je pense exploiter la pin pour monter dessus un relais de puissance pour allumer mon marquee...

                      Substring 1 Reply Last reply Reply Quote 0
                      • Substring
                        Substring @babastorm last edited by

                        @babastorm said in Bouton gpio quitter émulateur:

                        Ha mince, et je suppose que le problème (raz maj) reste identique si je touche à rpi-pin356-power.py ?
                        Dommage, le script d'éjection des émulateurs de @supernature2k étais vraiment top !

                        et oui !

                        Une implémentation de prévus à court, moyen ou long terme ?

                        yep ! pas en 4.1, mais sûrement après. L'idée de base est de faire un escript plus général de gerstion/configuration des GPIO. Mais comme tout, ca prend du temps (beaucoup parfois même)

                        Former dev - Please reply with @substring so that i am notified when you answer me
                        Ex dev - Merci de me répondre en utilisant @substring pour que je sois notifé

                        1 Reply Last reply Reply Quote 0
                        • babastorm
                          babastorm last edited by babastorm

                          @Substring
                          Ho super ! Je me doute qu'il est sûrement trop tôt pour en parler, mais ce système de gestion permettra t'il de définir le type de données attendu/envoyé sur un pin (je rêve de connecter un arduino en esclave au raspberry, pour pouvoir illuminé uniquement les boutons nécessaires suivant les émulateurs lancés (et dans la bonne couleur, tant qu'à faire) 🙂

                          Substring supernature2k 2 Replies Last reply Reply Quote 0
                          • Substring
                            Substring @babastorm last edited by

                            @babastorm C'est une éventualité, mais ca restera TRES limité ... On essaierait au moins d'intégrer les qq trucs qu'on à vu à droite à gauche (genre un encodeur rotatif pour le volume, pour ne parler que de lui). Après, si on goupille bien le truc, ca reste ouvert à des scripts côté user, donc la balle serait dans "votre" camps.

                            Former dev - Please reply with @substring so that i am notified when you answer me
                            Ex dev - Merci de me répondre en utilisant @substring pour que je sois notifé

                            1 Reply Last reply Reply Quote 0
                            • supernature2k
                              supernature2k @babastorm last edited by

                              @babastorm

                              Désolé j'arrive un peu tard. Donc oui pour l'instant le script saute à chaque fois mais les mises à jour c'est pas tout le temps donc tu mets ton script modifié au chaud et à chaque update, tu écrases le script et le tour est joué.

                              Pour la LED, avant elle s'allumait dès la mise sous tension, maintenant elle s'allume, s'éteint puis se rallume à peu près au moment ou ES se lance (et je ne sais pas pourquoi 😄 )

                              Ensuite elle s'éteint en même temps que le rpi.

                              Pi powered NES | Gameboy HD | RecalStation | RecalDrive
                              Upvote messages if it has been useful ;)

                              Treize 1 Reply Last reply Reply Quote 0
                              • Treize
                                Treize @supernature2k last edited by

                                @supernature2k
                                Salut,

                                As-tu régler ton problème de Led qui s'allume/s'éteint/s'allume/s'éteint.
                                J'ai exactement le même soucis et je sèche.

                                Merci bien et désolé du déterrage mais le problème étant exactement le même 😃

                                1 Reply Last reply Reply Quote 0
                                • Treize
                                  Treize last edited by

                                  Bon au cas où ça puisse intéresser quelqu'un, juste un petit changement sûrement dû à la 4.1.
                                  La solution est de passer du "system.power.switch=PIN56ONOFF" au "system.power.switch=PIN356ONOFFRESET".

                                  1 Reply Last reply Reply Quote 0
                                  • Treize
                                    Treize last edited by

                                    @Substring @supernature2k
                                    Bon bah de nouveau moi, depuis l'installation du script recalbox ne se lance plus.
                                    Ma tv reconnait bien l'alimentation de l'hdmi, la led rouge s'allume et la verte clignote 7 fois (si j'ai bien compté :D)

                                    En cherchant j'ai pu voir que led verte clignotant 7 fois = kernel.img introuvable, or je n'y ai pas touché.
                                    Une solution Docteurs ? ( Sans tout réinstaller si possible ).

                                    Merci à vous et bon Weekend.

                                    Substring 1 Reply Last reply Reply Quote 0
                                    • Substring
                                      Substring @Treize last edited by

                                      @treize le kernel qui manque ? Si tu l'as viré, champion ... Tu as installé à partir de NOOBS j'imagine ? tu as touché à /boot ou au config.txt ?

                                      Former dev - Please reply with @substring so that i am notified when you answer me
                                      Ex dev - Merci de me répondre en utilisant @substring pour que je sois notifé

                                      1 Reply Last reply Reply Quote 0
                                      • Treize
                                        Treize last edited by

                                        @Substring
                                        J'ai seulement modifié le script "rpi-pin356-power.py" avec celui de @supernature2k , en passant par WinSCP.

                                        Tout fonctionner avant, au redémarrage rien ne fonctionne après. A part ça j'ai acheté hier un bouton poussoir, fait le branchant sur le gpio et uncomment le "system.power.switch=PIN356ONOFFRESET".

                                        Absolument rien de plus.

                                        Treize 1 Reply Last reply Reply Quote 0
                                        • Treize
                                          Treize @Treize last edited by

                                          @Substring Je précise mais je pense que tu l'as compris, j'ai dû effectivement toucher au config.txt pour pouvoir modifié le script.

                                          J'ai suivi à la lettre cette combinaison https://forum.recalbox.com/topic/2162/résolu-read-only-sur-nightly-4-0-0/7

                                          1 Reply Last reply Reply Quote 0
                                          • Treize
                                            Treize last edited by

                                            Problème réglé grâce au log Paragon Extfs, j'ai récupéré le dossier "share" puis réinstallé recalbox.
                                            Il n'y a plus qu'à faire la màj et remettre le dossier "share" en place. Je suppose que je peux utiliser Paragon Extfs pour mettre à jour le script en toute sécurité, à voir.

                                            Merci de ton retour @Substring .

                                            Substring 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Want to support us ?

                                            90
                                            Online

                                            99.6k
                                            Users

                                            28.1k
                                            Topics

                                            187.1k
                                            Posts

                                            Copyright © 2021 recalbox.com