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évision
Ré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/09 16:42] – [Code source] florianh
Ligne 107: Ligne 107:
  
 #Import des librairies nécessaires #Import des librairies nécessaires
 +import select
 +import sys, tty, termios
 import os import os
 +import pygame
 import subprocess, signal import subprocess, signal
 +from subprocess import Popen, PIPE
 +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)
 GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP)   GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP)  
 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.display.init()
  
-    print ("Lancement clip 1")+def accueil(): 
 +    ecran = pygame.display.set_mode((0, 0), pygame.FULLSCREEN) #Crée la fenêtre de tracé 
 +    image = pygame.image.load("./obc.jpg") #charge une image à partir d'un fichier 
 +    ecran.blit(image, (0,40)) #Colle l'image en haut à gauche de la fenêtre de tracé (ici, l'ecran) 
 +    pygame.display.flip() #L'affichage devient effectif : l'image est rendue visible. 
 + 
 +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 
 +def fct_movie(channel):   
 +    print ('Lancement clip', channel)
     #Lancement d'un sous process pour récuperer la liste des processes en cours     #Lancement d'un sous process pour récuperer la liste des processes en cours
     p = subprocess.Popen(['ps', '-A'], stdout=subprocess.PIPE)     p = subprocess.Popen(['ps', '-A'], stdout=subprocess.PIPE)
Ligne 127: Ligne 151:
     #Listing des process     #Listing des process
     for line in out.splitlines():     for line in out.splitlines():
- #On recherche si le lecteur video est en route +        #On recherche si le lecteur video est en route 
-       if 'omxplayer' in line:+        if 'omxplayer' in line:
                 pid = int(line.split(None, 1)[0])                 pid = int(line.split(None, 1)[0])
- #On Kill le process+                #On Kill le process
                 os.kill(pid, signal.SIGKILL)                 os.kill(pid, signal.SIGKILL)
     #Lencement d'un sous process pour lancer le clip     #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 +    p = subprocess.Popen(['xterm', '-fullscreen', '-fg', 'black', '-bg', 'black', '-e', 'omxplayer', '-r', '/home/pi/videos/'+str(channel)+' 
-ocess.PIPE,stderr=subprocess.PIPE,stdin=subprocess.PIPE)+.mp4'],stdout=subprocess.PIPE,stderr=subprocess.PIPE,stdin=subprocess.PIPE)
     #Vérifie si le process se termine naturellement     #Vérifie si le process se termine naturellement
     retcode = p.wait()     retcode = p.wait()
  
-    #Si le process c'est terminé naturellement, lancement d'une page web d'animation ou de présentation du diko geek 
     if retcode is not None:     if retcode is not None:
- print "Lancement navigateur" +        accueil()
- 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(): +#Configuration des deux ports GPIO, fonction de callback, debounce de 600ms + condo de 0,1nF sur l'inter 
-        if 'omxplayerin line: +GPIO.add_event_detect(17GPIO.FALLINGcallback=fct_movie, bouncetime=600  
-            pid = int(line.split(None1)[0]) +GPIO.add_event_detect(23GPIO.FALLINGcallback=fct_moviebouncetime=600 
-                   os.kill(pidsignal.SIGKILL+
-    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+done = False 
- print "Lancement navigateur+while not done
-        os.system("chromium --user-data-dir=/home/pi/dikogeek/ --app=http://google.fr") +   print ("line", getch()) 
-  +   if getch(== "a": 
- +       print("touche a") 
-#Configuration des deux ports GPIO, fonction de callback, debounce de 600ms + condo de 0,1nF sur l'inter +       fct_movie(17
-GPIO.add_event_detect(17, GPIO.FALLING, callback=my_callback, bouncetime=600  +   if getch() == "b": 
-GPIO.add_event_detect(23, GPIO.FALLING, callback=my_callback2, bouncetime=600 +       print("touche b"
 +       fct_movie(23)
  
-#Permet de bloquer le programme pour éviter qu'il se termine tout seul +  for event in pygame.event.get(): 
-raw_input("")+#       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