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
obc2012:dikogeek [2013/05/08 14:02] – [Code source] florianhevenements:obc2012:dikogeek [2024/04/26 14:48] (Version actuelle) – modification externe 127.0.0.1
Ligne 107: Ligne 107:
  
 #Import des librairies nécessaires #Import des librairies nécessaires
-import sys+import select, time 
 +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)   
 +from evdev import InputDevice, categorize, ecodes 
 +dev = InputDevice('/dev/input/event1')
  
 +fpid = os.fork()
 +if fpid!=0:
 +   #Running as daemon now. PID is fpid
 +  sys.exit(0)
 + 
 #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)  
  
 pygame.init() pygame.init()
-pygame.mixer.quit() 
 pygame.display.init() pygame.display.init()
- 
-played = 0 
  
 def accueil(): def accueil():
     ecran = pygame.display.set_mode((0, 0), pygame.FULLSCREEN) #Crée la fenêtre de tracé     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+    image = pygame.image.load("/home/pi/dikogeek/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)     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.     pygame.display.flip() #L'affichage devient effectif : l'image est rendue visible.
- 
-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) +    ecran = pygame.display.set_mode((0, 0), pygame.FULLSCREEN) #Crée la fenêtre de tracé 
-    global played +    image = pygame.image.load("/home/pi/dikogeek/chargement.jpg"#charge une image à partir d'un fichier 
- +    ecran.blit(image, (10,40)) #Colle l'image en haut à gauche de la fenêtre de tracé (icil'ecran
-    if played == 1: +    pygame.display.flip() #L'affichage devient effectif : l'image est rendue visible. 
- global movie +    #Lancement d'un sous process pour récuperer la liste des processes en cours 
- movie.stop() +    p = subprocess.Popen(['omxplayer', '-r', '/home/pi/dikogeek/videos/'+str(channel)+'.mp4'],stdout=subprocess.PIPE,stderr=subprocess.PIPE,stdin=subprocess.PIPE,preexec_fn=os.setpgrp) 
-        pygame.time.delay(2000) +    #Vérifie si le process se termine naturellement 
-  +    while (p.poll() is None): 
-    played = 1 + if dev.read_one() is not None
-    fchannel = "videos/"+str(channel)+".mpg" + os.killpg(p.pid, signal.SIGKILL) 
-    movie = pygame.movie.Movie(fchannel) + break 
-    screen = pygame.display.set_mode((0, 0), FULLSCREEN) +    if p.poll() is not None:
-    movie.set_display(screen+
-    pygame.event.set_allowed((QUITKEYDOWN)) +
-    pygame.time.set_timer(USEREVENT1000+
-    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()  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=fct_movie, bouncetime=600)   +#GPIO.add_event_detect(17, GPIO.FALLING, callback=fct_movie, bouncetime=600)   
-GPIO.add_event_detect(23, GPIO.FALLING, callback=fct_movie, bouncetime=600)  +#GPIO.add_event_detect(23, GPIO.FALLING, callback=fct_movie, bouncetime=600)   
 +accueil() 
 +for event in dev.read_loop(): 
 + if (event.code == ecodes.KEY_A and event.value == 0): 
 + fct_movie('fablab'
 + if (event.code == ecodes.KEY_B and event.value == 0): 
 + fct_movie(2) 
 + if (event.code == ecodes.KEY_C and event.value == 0): 
 + fct_movie(3) 
 + if (event.code == ecodes.KEY_D and event.value == 0): 
 + fct_movie('Arduino-encoded')
  
-#Permet de bloquer le programme pour éviter qu'il se termine tout seul +pygame.display.quit() 
-raw_input("> ")+pygame.quit()
 </code> </code>
- 
- 
  
  
evenements/obc2012/dikogeek.1368014539.txt.gz · Dernière modification : 2024/04/26 14:48 (modification externe)