evenements:obc2012:dikogeek
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédente | Prochaine révisionLes deux révisions suivantes | ||
obc2012:dikogeek [2013/05/03 16:40] – [Interaction homme/machine] florianh | obc2012:dikogeek [2013/05/08 14:02] – [Code source] florianh | ||
---|---|---|---|
Ligne 107: | Ligne 107: | ||
#Import des librairies nécessaires | #Import des librairies nécessaires | ||
+ | import sys | ||
import os | import os | ||
- | import | + | import |
+ | from pygame.locals import * | ||
import RPi.GPIO as GPIO | import RPi.GPIO as GPIO | ||
GPIO.setmode(GPIO.BCM) | GPIO.setmode(GPIO.BCM) | ||
- | from subprocess import Popen, PIPE | ||
# | # | ||
Ligne 117: | Ligne 118: | ||
GPIO.setup(17, | GPIO.setup(17, | ||
- | #Création d'une fonction de rappel | + | pygame.init() |
- | def my_callback(channel): | + | pygame.mixer.quit() |
+ | pygame.display.init() | ||
- | print (" | + | played |
- | #Lancement d'un sous process pour récuperer la liste des processes en cours | + | |
- | p = subprocess.Popen([' | + | |
- | out, err = p.communicate() | + | |
- | #Listing des process | + | def accueil(): |
- | for line in out.splitlines(): | + | |
- | #On recherche si le lecteur video est en route | + | image = pygame.image.load("./ |
- | if ' | + | |
- | pid = int(line.split(None, 1)[0]) | + | |
- | #On Kill le process | + | |
- | os.kill(pid, signal.SIGKILL) | + | |
- | | + | |
- | | + | |
- | ocess.PIPE, | + | |
- | | + | |
- | retcode = p.wait() | + | |
- | #Si le process c'est terminé naturellement, | + | accueil() |
- | if retcode is not None: | + | |
- | print " | + | |
- | os.system(" | + | |
- | + | ||
- | def my_callback2(channel): | + | |
- | print (" | + | |
- | p = subprocess.Popen([' | + | |
- | out, err = p.communicate() | + | |
- | for line in out.splitlines(): | + | #Fonction appelé lors d'un appuie bouton |
- | | + | def fct_movie(channel): |
- | | + | |
- | | + | |
- | | + | |
- | rocess.PIPE, | + | |
- | | + | |
- | if retcode is not None: | + | if played == 1: |
- | print " | + | global movie |
- | os.system(" | + | movie.stop() |
+ | pygame.time.delay(2000) | ||
+ | played = 1 | ||
+ | fchannel = " | ||
+ | movie = pygame.movie.Movie(fchannel) | ||
+ | screen = pygame.display.set_mode((0, | ||
+ | movie.set_display(screen) | ||
+ | pygame.event.set_allowed((QUIT, | ||
+ | pygame.time.set_timer(USEREVENT, | ||
+ | pygame.display.flip() | ||
+ | movie.play() | ||
+ | while movie.get_busy(): | ||
+ | evt = pygame.event.wait() | ||
+ | if evt.type == QUIT: | ||
+ | break | ||
+ | if evt.type == KEYDOWN and evt.unicode == QUIT_CHAR: | ||
+ | break | ||
+ | if movie.get_busy() == 0: | ||
+ | movie.stop() | ||
+ | accueil() | ||
+ | pygame.time.set_timer(USEREVENT, | ||
# | # | ||
- | GPIO.add_event_detect(17, | + | GPIO.add_event_detect(17, |
- | GPIO.add_event_detect(23, | + | GPIO.add_event_detect(23, |
#Permet de bloquer le programme pour éviter qu'il se termine tout seul | #Permet de bloquer le programme pour éviter qu'il se termine tout seul | ||
raw_input("> | raw_input("> | ||
- | |||
</ | </ | ||
evenements/obc2012/dikogeek.txt · Dernière modification : 2024/04/26 14:48 de 127.0.0.1