mirror of
https://forge.apps.education.fr/blender-edutech/blender-edutech-ressources-pedagogiques.git
synced 2024-01-27 08:26:31 +01:00
maj des corrections avec la nouvelle gestion des threads
This commit is contained in:
parent
80c8c34f27
commit
5ddf339ebf
@ -1,41 +1,37 @@
|
||||
import bge # Bibliothèque Blender Game Engine (UPBGE)
|
||||
import threading # Multithreading
|
||||
from porcou_lib import * # Bibliothèque portail coulissant
|
||||
|
||||
###############################################################################
|
||||
# porcou_cmd.pyg
|
||||
# porcou_cmd.py
|
||||
# @title: Commandes du portail coulissant
|
||||
###############################################################################
|
||||
|
||||
###############################################################################
|
||||
# Gestion des tâches (threads) << NE PAS MODIFIER CETTE SECTION >>
|
||||
###############################################################################
|
||||
|
||||
threads=[]
|
||||
scene = bge.logic.getCurrentScene()
|
||||
|
||||
###############################################################################
|
||||
# Execution des commandes utilisateurs dans une tâche séparée (thread) de UPBGE << NE PAS MODIFIER CETTE SECTION >>
|
||||
###############################################################################
|
||||
|
||||
threads=[]
|
||||
|
||||
def start():
|
||||
threads.append(threading.Thread(target=commandes))
|
||||
print ("Thread start() ...")
|
||||
threads[len(threads)-1].start()
|
||||
|
||||
def stop():
|
||||
print ("Thread join() ...")
|
||||
threads[len(threads)-1].join(0.1)
|
||||
thread_start(threads, commandes)
|
||||
|
||||
###############################################################################
|
||||
def stop():
|
||||
thread_stop(threads)
|
||||
|
||||
###############################################################################
|
||||
# Instructions élémentaires pour le portail coulissant
|
||||
#
|
||||
# Actions (ordre = True ou False) : :
|
||||
# Actions (ordre = True ou False) :
|
||||
# - Gyrophare : gyr (True|False)
|
||||
# - Ouvrir le portail (moteur sens trigo) : mot_o (True|False)
|
||||
# - Fermer le portail (moteur sens horaire) : mot_f (True|False)
|
||||
# - Fermer le portail (moteur sens horaire) : mot_f (True|False)
|
||||
# - Emetteur pour le capteur barrage IR : ir_emet(True|False)
|
||||
#
|
||||
# Capteurs (valeur retournée = True ou False) :
|
||||
# - Capteur fin de course portail ouvert : fc_o()
|
||||
# - Capteur fin de course portail fermé : fc_f()
|
||||
# - Capteur barrage IR : ir_recep()
|
||||
# - Capteur barrage IR (absence d'obstacle) : ir_recep()
|
||||
#
|
||||
# Pupitre (valeur retournée = True ou False) :
|
||||
# - Bouton poussoir coté rue : bp_ext()
|
||||
@ -46,50 +42,38 @@ def stop():
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Fonctions
|
||||
###############################################################################
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Commandes
|
||||
###############################################################################
|
||||
|
||||
def commandes():
|
||||
scene.objects['Systeme']['thread_alive']=True # Tâche vivante (thread) << NE PAS MODIFIER CETTE LIGNE >>
|
||||
|
||||
###############################################################################
|
||||
# Allee-retour
|
||||
###############################################################################
|
||||
###############################################################################
|
||||
# Allée-retour simple (sans la sécurité anti-écrasement lors de la fermeture)
|
||||
###############################################################################
|
||||
|
||||
# Mise en place : Fermeture
|
||||
while (fc_f() ==False) :
|
||||
gyr(True)
|
||||
mot_f(True)
|
||||
mot_f(False)
|
||||
gyr(False)
|
||||
# Mise en place : Fermeture
|
||||
while (fc_f() ==False) :
|
||||
gyr(True)
|
||||
mot_f(True)
|
||||
mot_f(False)
|
||||
gyr(False)
|
||||
|
||||
# Fonctionnement normal
|
||||
while True :
|
||||
# Fonctionnement normal
|
||||
while True :
|
||||
|
||||
# Ouverture
|
||||
if bp_int() or bp_ext() :
|
||||
while fc_o() ==False:
|
||||
gyr(True)
|
||||
mot_o(True)
|
||||
gyr(False)
|
||||
mot_o(False)
|
||||
# Ouverture
|
||||
if bp_int() or bp_ext() :
|
||||
while fc_o() ==False:
|
||||
gyr(True)
|
||||
mot_o(True)
|
||||
gyr(False)
|
||||
mot_o(False)
|
||||
|
||||
tempo(2) # Temporisation
|
||||
tempo(2) # Temporisation
|
||||
|
||||
# Fermeture
|
||||
while fc_f() ==False:
|
||||
gyr(True)
|
||||
mot_f(True)
|
||||
gyr(False)
|
||||
mot_f(False)
|
||||
# Fermeture
|
||||
while fc_f() ==False:
|
||||
gyr(True)
|
||||
mot_f(True)
|
||||
gyr(False)
|
||||
mot_f(False)
|
||||
|
||||
|
||||
scene.objects['Systeme']['thread_alive']=False # Tâche morte (thread) << NE PAS MODIFIER CETTE LIGNE >>
|
||||
print ("Thread fermé")
|
||||
print ("Thread #", len(threads)-1, "arrivé au bout -> fermeture.") # Tâche close (thread) << NE PAS MODIFIER CETTE LIGNE >>
|
||||
scene.objects['Systeme']['thread_run']=False # Fin du cycle << NE PAS MODIFIER CETTE LIGNE >>
|
||||
|
@ -1,5 +1,4 @@
|
||||
import bge # Bibliothèque Blender Game Engine (UPBGE)
|
||||
import threading # Multithreading
|
||||
from porcou_lib import * # Bibliothèque portail coulissant
|
||||
|
||||
###############################################################################
|
||||
@ -7,24 +6,20 @@ from porcou_lib import * # Bibliothèque portail coulissant
|
||||
# @title: Commandes du portail coulissant
|
||||
###############################################################################
|
||||
|
||||
###############################################################################
|
||||
# Gestion des tâches (threads) << NE PAS MODIFIER CETTE SECTION >>
|
||||
###############################################################################
|
||||
|
||||
threads=[]
|
||||
scene = bge.logic.getCurrentScene()
|
||||
|
||||
###############################################################################
|
||||
# Execution des commandes utilisateurs dans une tâche séparée (thread) de UPBGE << NE PAS MODIFIER CETTE SECTION >>
|
||||
###############################################################################
|
||||
|
||||
threads=[]
|
||||
|
||||
def start():
|
||||
threads.append(threading.Thread(target=commandes))
|
||||
print ("Thread start() ...")
|
||||
threads[len(threads)-1].start()
|
||||
|
||||
def stop():
|
||||
print ("Thread join() ...")
|
||||
threads[len(threads)-1].join(0.1)
|
||||
thread_start(threads, commandes)
|
||||
|
||||
###############################################################################
|
||||
def stop():
|
||||
thread_stop(threads)
|
||||
|
||||
###############################################################################
|
||||
# Instructions élémentaires pour le portail coulissant
|
||||
#
|
||||
# Actions (ordre = True ou False) :
|
||||
@ -49,49 +44,48 @@ def stop():
|
||||
|
||||
# Fermer le portail
|
||||
def fermer():
|
||||
ir_emet(True)
|
||||
while fc_f() ==False:
|
||||
gyr(True)
|
||||
mot_o(False)
|
||||
mot_f(True)
|
||||
if ir_recep()==False or bp_int() or bp_ext() : # Ouverture en cas présence d'obstacle ou boutons
|
||||
ouvrir()
|
||||
tempo(2) # Temporisation 2s
|
||||
gyr(False)
|
||||
mot_f(False)
|
||||
ir_emet(False)
|
||||
ir_emet(True)
|
||||
while fc_f() ==False:
|
||||
gyr(True)
|
||||
mot_o(False)
|
||||
mot_f(True)
|
||||
if ir_recep()==False or bp_int() or bp_ext() : # Ouverture en cas présence d'obstacle ou boutons
|
||||
ouvrir()
|
||||
tempo(2) # Temporisation 2s
|
||||
gyr(False)
|
||||
mot_f(False)
|
||||
ir_emet(False)
|
||||
|
||||
# Ouvrir le portail
|
||||
def ouvrir():
|
||||
while fc_o() ==False:
|
||||
gyr(True)
|
||||
mot_f(False)
|
||||
mot_o(True)
|
||||
gyr(False)
|
||||
mot_o(False)
|
||||
while fc_o() ==False:
|
||||
gyr(True)
|
||||
mot_f(False)
|
||||
mot_o(True)
|
||||
gyr(False)
|
||||
mot_o(False)
|
||||
|
||||
|
||||
def commandes():
|
||||
scene.objects['Systeme']['thread_alive']=True # Tâche vivante (thread) << NE PAS MODIFIER CETTE LIGNE >>
|
||||
|
||||
###############################################################################
|
||||
# Allée-retour avec la sécurité anti-écrasement lors de la fermeture
|
||||
###############################################################################
|
||||
###############################################################################
|
||||
# Allée-retour avec la sécurité anti-écrasement lors de la fermeture
|
||||
###############################################################################
|
||||
|
||||
# Mise en place : Fermeture
|
||||
fermer()
|
||||
# Mise en place : Fermeture
|
||||
fermer()
|
||||
|
||||
# Fonctionnement normal
|
||||
while True :
|
||||
# Fonctionnement normal
|
||||
while True :
|
||||
|
||||
# Ouverture
|
||||
if bp_int() or bp_ext() :
|
||||
ouvrir()
|
||||
# Ouverture
|
||||
if bp_int() or bp_ext() :
|
||||
ouvrir()
|
||||
|
||||
tempo(2) # Temporisation 2s
|
||||
tempo(2) # Temporisation 2s
|
||||
|
||||
# Fermeture
|
||||
fermer()
|
||||
# Fermeture
|
||||
fermer()
|
||||
|
||||
scene.objects['Systeme']['thread_alive']=False # Tâche morte (thread) << NE PAS MODIFIER CETTE LIGNE >>
|
||||
print ("Thread fermé")
|
||||
print ("Thread #", len(threads)-1, "arrivé au bout -> fermeture.") # Tâche close (thread) << NE PAS MODIFIER CETTE LIGNE >>
|
||||
scene.objects['Systeme']['thread_run']=False # Fin du cycle << NE PAS MODIFIER CETTE LIGNE >>
|
||||
|
Loading…
Reference in New Issue
Block a user