Outils pour utilisateurs

Outils du site


evenements:obc2012:dikogeek

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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] florianhobc2012: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 subprocess, signal+import pygame 
 +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 
  
 #Configuration de deux ports du GPIO (inter) #Configuration de deux ports du GPIO (inter)
Ligne 117: Ligne 118:
 GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)   GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP)  
  
-#Création d'une fonction de rappel (gestion des execptions+pygame.init() 
-def my_callback(channel):  +pygame.mixer.quit() 
 +pygame.display.init()
  
-    print ("Lancement clip 1") +played 0
-    #Lancement d'un sous process pour récuperer la liste des processes en cours +
-    p subprocess.Popen(['ps', '-A'], stdout=subprocess.PIPE) +
-    out, err = p.communicate()+
  
-    #Listing des process +def accueil(): 
-    for line in out.splitlines(): +    ecran pygame.display.set_mode((0, 0), pygame.FULLSCREEN) #Crée la fenêtre de tracé 
- #On recherche si le lecteur video est en route +    image = pygame.image.load("./obc.jpg") #charge une image à partir d'un fichier 
-        if 'omxplayer' in line: +    ecran.blit(image(0,40)) #Colle l'image en haut à gauche de la fenêtre de tracé (icil'ecran) 
-                pid int(line.split(None1)[0]) +    pygame.display.flip() #L'affichage devient effectif : l'image est rendue visible.
- #On Kill le process +
-                os.kill(pid, signal.SIGKILL) +
-    #Lencement d'un sous process pour lancer le clip +
-    p = subprocess.Popen(['xterm''-fullscreen', '-fg', 'black', '-bg', 'black', '-e', 'omxplayer', '-r', '/home/pi/clip.avi'],stdout=subpr +
-ocess.PIPE,stderr=subprocess.PIPE,stdin=subprocess.PIPE) +
-    #Vérifie si le process se termine naturellement +
-    retcode = p.wait()+
  
-    #Si le process c'est terminé naturellement, lancement d'une page web d'animation ou de présentation du diko geek +accueil()
-    if retcode is not None: +
- print "Lancement navigateur" +
- os.system("chromium --user-data-dir=/home/pi/dikogeek/ --app=http://google.fr"+
-   +
-def my_callback2(channel):   +
-    print ("Lancement clip 2") +
-    p = subprocess.Popen(['ps', '-A'], stdout=subprocess.PIPE) +
-    out, err = p.communicate()+
  
-    for line in out.splitlines(): +#Fonction appelé lors d'un appuie bouton 
-        if 'omxplayer' in line: +def fct_movie(channel):   
-            pid = int(line.split(None, 1)[0]) +    print ('Lancement clip', channel
-                   os.kill(pid, signal.SIGKILL+    global played
-    p = subprocess.Popen(['xterm', '-fullscreen', '-fg', 'black', '-bg', 'black', '-e', 'omxplayer', '-r', '/home/pi/clip2.avi'],stdout=subp +
-rocess.PIPE,stderr=subprocess.PIPE,stdin=subprocess.PIPE+
-    retcode = p.wait()+
  
-    if retcode is not None+    if played == 1
- print "Lancement navigateur" + global movie 
-        os.system("chromium --user-data-dir=/home/pi/dikogeek/ --app=http://google.fr")+ movie.stop(
 +        pygame.time.delay(2000)
   
 +    played = 1
 +    fchannel = "videos/"+str(channel)+".mpg"
 +    movie = pygame.movie.Movie(fchannel)
 +    screen = pygame.display.set_mode((0, 0), FULLSCREEN)
 +    movie.set_display(screen)
 +    pygame.event.set_allowed((QUIT, KEYDOWN))
 +    pygame.time.set_timer(USEREVENT, 1000)
 +    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, 0)
  
 #Configuration des deux ports GPIO, fonction de callback, debounce de 600ms + condo de 0,1nF sur l'inter #Configuration des deux ports GPIO, fonction de callback, debounce de 600ms + condo de 0,1nF sur l'inter
-GPIO.add_event_detect(17, GPIO.FALLING, callback=my_callback, bouncetime=600)   +GPIO.add_event_detect(17, GPIO.FALLING, callback=fct_movie, bouncetime=600)   
-GPIO.add_event_detect(23, GPIO.FALLING, callback=my_callback2, bouncetime=600)  +GPIO.add_event_detect(23, GPIO.FALLING, callback=fct_movie, bouncetime=600)  
  
 #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("> ")
- 
 </code> </code>
  
evenements/obc2012/dikogeek.txt · Dernière modification : 2024/04/26 14:48 de 127.0.0.1