Recalbox Forum

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

    Emulstation/Autre - Script pour communiquer a Arduino le nom du jeu en cours

    Manettes/GPIO/Encodeurs
    script communiquer arduino nom cours
    4
    11
    1708
    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.
    • ian57
      ian57 Staff last edited by

      @aigleblanc tu dois pouvoir récupérer le nom de la rom à coup de  ps et de grep une fois le jeu lancé...

      "UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." Dennis Ritchie

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

        Effectivement sans doute, faut que je regarde du coup tiens...
        Mais comme il y a une belle api web, je me suis dit qu'il existait sans doute une belle api utilisable en systeme 🙂

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

           2154 root     sh -c python /usr/lib/python2.7/site-packages/configgen/emulatorlauncher.pyc -p1index 0 -p1guid 03000000790000001100000010010000 -p1name "USB Gamepad " -p1nbaxes 2 -p1devicepath /dev/input/event0  -system megadrive -rom /recalbox/share/roms/megadrive/Alien\ Soldier\ \(Europe\).zip -emulator default -core default -ratio auto  2> /recalbox/share/system/logs/es_launch_stderr.log | head -300 > /recalbox/share/system/logs/es_launch_stdout.log
           2155 root     python /usr/lib/python2.7/site-packages/configgen/emulatorlauncher.pyc -p1index 0 -p1guid 03000000790000001100000010010000 -p1name USB Gamepad  -p1nbaxes 2 -p1devicepath /dev/input/event0 -system megadrive -rom /recalbox/share/roms/megadrive/Alien Soldier (Europe).zip -emulator default -core default -ratio auto
           2156 root     head -300
           2217 root     [kworker/u8:1]
           2234 root     /usr/bin/retroarch -L /usr/lib/libretro/picodrive_libretro.so --config /recalbox/share/system/configs/retroarch/retroarchcustom.cfg --appendconfig /recalbox/share/system/configs/retroarch/megadrive.cfg /recalbox/share/roms/megadrive/Alien Soldier (Europe).zip
          

          Effectivement, dans le ps il y a moyen de trouver le nom du jeu.

          Bonjour pour l'extraire... on va sortir la doc python pour grep tout ça.

          Je suis un peu trop habituer a bosser en php avec du json 😛


          Bon, emulatorlauncher.pyc est pre-compile donc impossible de lui rajouter une instruction dedans, dommage...

          voljega 1 Reply Last reply Reply Quote 0
          • voljega
            voljega Banned @aigleblanc last edited by

            @aigleblanc a priori c'est pas comme ça qu'il faut procéder pour ce que tu veux faire mais il te suffit d'effacet le pyc, modifier le py et le pyc sera regénéré au premier lancement

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

              Ma logique de départ est sans doute mauvaise, developper h24 pour le web on prend des habitudes.

              Pour le coup, j'ai ecrit un code py pour choper la ligne qui charge le jeu et l'emulateur et j'en extrait les infos,

              Ensuite, me suffit de mettre ce script dans le .py qu'il faut, et rajouter mon code pour envoyer ca a l'arduino.

              import subprocess
              import re
              
              proc1 = subprocess.Popen(['ps', 'aux'], stdout=subprocess.PIPE)
              proc2 = subprocess.Popen(['grep', 'roms'], stdin=proc1.stdout,
                                       stdout=subprocess.PIPE, stderr=subprocess.PIPE)
              
              proc1.stdout.close() # Allow proc1 to receive a SIGPIPE if proc2 exits.
              out, err = proc2.communicate()
              
              a = out.split('\n')
              
              m = re.search('\/roms\/(.*)\/(.*)\.', a[1])
              
              print(m.group(1)); #emulateur
              print(m.group(2)); # jeux ( le nom du rom ... )
              

              A défaut de mieux, j'ai déjà ca 🙂

              1 Reply Last reply Reply Quote 1
              • aigleblanc
                aigleblanc @voljega last edited by aigleblanc

                @voljega said in Emulstation/Autre - Script pour communiquer a Arduino le nom du jeu en cours:

                @aigleblanc a priori c'est pas comme ça qu'il faut procéder pour ce que tu veux faire mais il te suffit d'effacet le pyc, modifier le py et le pyc sera regénéré au premier lancement

                Alors... humm, le pyc ne se régénère pas apres un reboot 🙂

                Ni meme apres une relance d'un jeu ... ecran de load, noir et retour a la liste. pas de .pyc ...

                Bon je le genere a la mano,

                Reste a trouver pourquoi il lance pas mon script que j'ai foutu avec os. dedans... la decouverte de python est brutal la lol

                nordicpower 1 Reply Last reply Reply Quote 0
                • nordicpower
                  nordicpower @aigleblanc last edited by

                  @aigleblanc je te propose une solution plus simple à mon sens: il faut modifier le fichier es_systems.cfg pour chacune des plateforme.

                  La commande de lancement est la suivante :
                  <command>python /usr/lib/python2.7/site-packages/configgen/emulatorlauncher.pyc %CONTROLLERSCONFIG% -system %SYSTEM% -rom %ROM% -emulator %EMULATOR% -core %CORE% -ratio %RATIO% %NETPLAY%</command>

                  tu pourrais ajouter une commande avant le python en lui passant la variable %ROM% pour afficher le titre puis une commande après pour effacer. un truc du style ...
                  affiche.py %ROM% && python .... && clean_affiche.py

                  A réaliser pour chaque système....

                  aigleblanc 2 Replies Last reply Reply Quote 0
                  • aigleblanc
                    aigleblanc @nordicpower last edited by

                    @nordicpower said in Emulstation/Autre - Script pour communiquer a Arduino le nom du jeu en cours:

                    @aigleblanc je te propose une solution plus simple à mon sens: il faut modifier le fichier es_systems.cfg pour chacune des plateforme.

                    La commande de lancement est la suivante :
                    <command>python /usr/lib/python2.7/site-packages/configgen/emulatorlauncher.pyc %CONTROLLERSCONFIG% -system %SYSTEM% -rom %ROM% -emulator %EMULATOR% -core %CORE% -ratio %RATIO% %NETPLAY%</command>

                    tu pourrais ajouter une commande avant le python en lui passant la variable %ROM% pour afficher le titre puis une commande après pour effacer. un truc du style ...
                    affiche.py %ROM% && python .... && clean_affiche.py

                    A réaliser pour chaque système....

                    En effet, cela éviterait de modifier les fichiers de l'os, je vais explorer la piste la après avoir fini mes testes quand meme !! 🙂

                    Merci.

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

                      Ahahahaha, ext4-fs error 🙂

                      Saloperie de carteSD

                      1 Reply Last reply Reply Quote 0
                      • aigleblanc
                        aigleblanc @nordicpower last edited by aigleblanc

                        @nordicpower said in Emulstation/Autre - Script pour communiquer a Arduino le nom du jeu en cours:

                        @aigleblanc je te propose une solution plus simple à mon sens: il faut modifier le fichier es_systems.cfg pour chacune des plateforme.

                        La commande de lancement est la suivante :
                        <command>python /usr/lib/python2.7/site-packages/configgen/emulatorlauncher.pyc %CONTROLLERSCONFIG% -system %SYSTEM% -rom %ROM% -emulator %EMULATOR% -core %CORE% -ratio %RATIO% %NETPLAY%</command>

                        tu pourrais ajouter une commande avant le python en lui passant la variable %ROM% pour afficher le titre puis une commande après pour effacer. un truc du style ...
                        affiche.py %ROM% && python .... && clean_affiche.py

                        A réaliser pour chaque système....

                        Je viens de tester... ca ne marche pas.

                            <command>python /usr/lib/python2.7/site-packages/configgen/emulatorlauncher.pyc %CONTROLLERSCONFIG% -system %SYSTEM% -rom %ROM% -emulator %EMULATOR% -core %CORE% -ratio %RATIO% && python /recalbox/share/scripts/game.py %ROM% %EMULATOR%</command>
                        

                        le jeu se lance, pas de log, et quand je quitte le jeu, j'ai un ecran vert, je pense qu'il n'est pas capable de lancer deux scripts...


                        Edit :

                        J'ai séparé les deux commandes par ; et c'est beaucoup mieux !

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

                        Want to support us ?

                        77
                        Online

                        99.6k
                        Users

                        28.1k
                        Topics

                        187.1k
                        Posts

                        Copyright © 2021 recalbox.com