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/08 14:02] – [Code source] florianhobc2012:dikogeek [2013/05/09 16:42] – [Code source] florianh
Ligne 107: Ligne 107:
  
 #Import des librairies nécessaires #Import des librairies nécessaires
-import sys+import select 
 +import sys, tty, termios
 import os import os
 import pygame import pygame
 +import subprocess, signal
 +from subprocess import Popen, PIPE
 from pygame.locals import * from pygame.locals import *
 import RPi.GPIO as GPIO   import RPi.GPIO as GPIO  
 GPIO.setmode(GPIO.BCM)   GPIO.setmode(GPIO.BCM)  
 + 
 #Configuration de deux ports du GPIO (inter) #Configuration de deux ports du GPIO (inter)
 GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP)   GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP)  
Ligne 119: Ligne 122:
  
 pygame.init() pygame.init()
-pygame.mixer.quit() 
 pygame.display.init() pygame.display.init()
- 
-played = 0 
  
 def accueil(): def accueil():
Ligne 130: Ligne 130:
     pygame.display.flip() #L'affichage devient effectif : l'image est rendue visible.     pygame.display.flip() #L'affichage devient effectif : l'image est rendue visible.
  
-accueil()+def getch(): 
 +    fd = sys.stdin.fileno() 
 +    old_settings = termios.tcgetattr(fd) 
 +    try: 
 +        tty.setraw(sys.stdin.fileno()) 
 +        ch = sys.stdin.read(1) 
 +    finally: 
 +        termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) 
 +    return ch 
 + 
 +#accueil()
  
 #Fonction appelé lors d'un appuie bouton #Fonction appelé lors d'un appuie bouton
 def fct_movie(channel):   def fct_movie(channel):  
     print ('Lancement clip', channel)     print ('Lancement clip', channel)
-    global played+    #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()
  
-    if played == 1: +    #Listing des process 
- global movie +    for line in out.splitlines(): 
- movie.stop() +        #On recherche si le lecteur video est en route 
-        pygame.time.delay(2000) +        if 'omxplayer' in line: 
-  +                pid int(line.split(None, 1)[0]
-    played +                #On Kill le process 
-    fchannel = "videos/"+str(channel)+".mpg" +                os.kill(pidsignal.SIGKILL
-    movie = pygame.movie.Movie(fchannel+    #Lencement d'un sous process pour lancer le clip 
-    screen = pygame.display.set_mode((00), FULLSCREEN+    p = subprocess.Popen(['xterm', '-fullscreen', '-fg', 'black', '-bg', 'black', '-e', 'omxplayer', '-r', '/home/pi/videos/'+str(channel)+' 
-    movie.set_display(screen) +.mp4'],stdout=subprocess.PIPE,stderr=subprocess.PIPE,stdin=subprocess.PIPE
-    pygame.event.set_allowed((QUIT, KEYDOWN)+    #Vérifie si le process se termine naturellement 
-    pygame.time.set_timer(USEREVENT1000) +    retcode p.wait() 
-    pygame.display.flip(+ 
-    movie.play() +    if retcode is not None
-    while movie.get_busy(): +        accueil()
-        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
Ligne 166: Ligne 169:
 GPIO.add_event_detect(23, GPIO.FALLING, callback=fct_movie, 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 +done = False 
-raw_input("")+while not done: 
 +   print ("line", getch()) 
 +   if getch() == "a": 
 +       print("touche a") 
 +       fct_movie(17) 
 +   if getch() == "b": 
 +       print("touche b") 
 +       fct_movie(23) 
 + 
 +  for event in pygame.event.get(): 
 +#       if event.type == KEYDOWN: 
 +#             keys = pygame.key.get_pressed() 
 +
 +#             if (keys[K_a]): 
 +# print("touche a"
 +# fct_movie(17) 
 +#             if (keys[K_b]): 
 +# print("touche b") 
 +# fct_movie(23) 
 +#       if (event.key == K_ESCAPE): 
 +#          done = True 
 +        
 + 
 +pygame.display.quit() 
 +pygame.quit()
 </code> </code>
  
evenements/obc2012/dikogeek.txt · Dernière modification : 2024/04/26 14:48 de 127.0.0.1