Bonjour à tous,
je suis actuellement en train de me faire une Game Gear Recalbox. Pour cela j'utilise un Raspberry Zero W couplé à un écran MPI3508 HDMI, intégré dans une Game Gear le tout alimenté avec une pile lithium 18650.
La contrainte principale de ce projet est de garder l'esthétique de la console entièrement d'origine sans rajouter aucun bouton supplémentaire. Je dois donc mettre le nez dans les scripts afin de palier au manque de boutons. Le but étant de faire tourner uniquement les émulateurs GameBoy, GG, NES et Master Sytsem.
À ce titre, j'ai installé le script rpi-exit-emu-1b.py afin de quitter l'émulateur en cours rapidement. J'ai modifié le script en question afin de pouvoir faire un "safe shutdown" de la console.
Ma question est donc : dans le cadre d'un safe shutdown , vaut-il mieux utiliser la commande 'poweroff' ou bien la commande 'shutdown -h now', je ne saisie pas bien la différence entre les deux. Les deux solutions ont l'air de fonctionner quoique la méthode 'poweroff' semble plus brutale!
Voici mon script modifié (je n'ai que quelques notions de Python, désolé pour les puristes...) :
import RPi.GPIO as GPIO
import os
import time
#Set Environment
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(10, GPIO.IN, pull_up_down=GPIO.PUD_UP) # START button
GPIO.setup(25, GPIO.IN, pull_up_down=GPIO.PUD_UP) # A button
GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP) # DOWN button
#Code
try:
while True:
GPIO.wait_for_edge(10, GPIO.FALLING)
if GPIO.input(25) == GPIO.LOW and GPIO.input(17) == GPIO.LOW:
pressedat = time.clock()
while GPIO.input(10) == GPIO.LOW and GPIO.input(25) == GPIO.LOW and GPIO.input(17) == GPIO.LOW:
releasedat = time.clock()
if (releasedat - pressedat) >= 1:
os.system("shutdown -h now")
break
else :
pressedat = time.clock()
while GPIO.input(10) == GPIO.LOW:
releasedat = time.clock()
if (releasedat - pressedat) >= 1:
os.system("killall -9 retroarch mupen64plus fba2x scummvm &> /dev/null")
#Reset Control Vars
releasedat = pressedat = 0
#Cleaning Gpio ports on Error or Exit
finally:
GPIO.cleanup()