Probleme lorsque je taper la condition d'arrèt après 10 second
Fermé
sekmani52
Messages postés
4
Date d'inscription
mercredi 8 juin 2016
Statut
Membre
Dernière intervention
5 juillet 2017
-
Modifié le 28 août 2017 à 16:10
mamiemando Messages postés 33268 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 septembre 2024 - 28 août 2017 à 16:36
mamiemando Messages postés 33268 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 septembre 2024 - 28 août 2017 à 16:36
A voir également:
- Probleme lorsque je taper la condition d'arrèt après 10 second
- Comment taper / sur clavier - Guide
- Clé windows 10 gratuit - Guide
- Excel cellule couleur si condition texte - Guide
- Windows 10 gratuit - Guide
- Winrar 64 bits windows 10 - Télécharger - Compression & Décompression
1 réponse
mamiemando
Messages postés
33268
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
18 septembre 2024
7 780
Modifié le 28 août 2017 à 16:38
Modifié le 28 août 2017 à 16:38
Bonjour,
Dans ton cas le plus simple est de créer un booléen qui va indiquer à la fin du programme si la diode doit rester allumée ou pas.
Dans l'esprit la boucle serait par exemple dans cet esprit si l'on continue dans ta logique.
Note qu'en plus dans ton code tu n'as pas besoin de refaire des
Le problème c'est que
Pour implémenter correctement ton programme, il faut partir sur de la programmation asynchrone, par exemple en utilisant
https://stackoverflow.com/questions/3471461/raw-input-and-timeout
Bonne chance
Dans ton cas le plus simple est de créer un booléen qui va indiquer à la fin du programme si la diode doit rester allumée ou pas.
Dans l'esprit la boucle serait par exemple dans cet esprit si l'on continue dans ta logique.
stay_high = True while True: if time.time() - now > 10: break b = raw_input("enter f char") stay_high = (b == 'f') if stay_high: break if not stay_high: SetLow(l1)
Note qu'en plus dans ton code tu n'as pas besoin de refaire des
SetHigh(l1), car
l1est déjà allumée avant de rentrer dans le
while.
Le problème c'est que
raw_inputest a priori bloquant ce qui signifie que tu ne parviendra pas de cette manière à faire expirer ton timer. De plus tu noteras que pendant les 10s imparties, 100% du CPU est utilisé à faire des tours de boucle
while. Ce n'est donc pas la bonne manière de faire.
Pour implémenter correctement ton programme, il faut partir sur de la programmation asynchrone, par exemple en utilisant
select.
https://stackoverflow.com/questions/3471461/raw-input-and-timeout
Bonne chance