Bonjour,
Je suis un débutant avec Python 3 et Raspberry 3 B+ et j’ai quelques difficultés avec ce petit programme.
Je voudrais que la boucle while s’arrête lorsque j’appuie sur CTRL+C.
Les deux fonctions suivantes ne servent que pour les essais.
La fonction Afficheur(Thread) comme son nom l’indique n’affiche que 10 fois le caractère ‘A’.
La fonction Essais_1(Thread) fait clignoter une led .
L’ensemble me permet d’essayer les threads.
Dans ce programme l’exception ne fonctionne pas et je ne vois pas pourquoi.
Si quelqu'un voit pourquoi je suis preneur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81 # -*- coding: utf-8 -*- """ Created on Mar Mai 22 10:30:36 2018 @author: mandrin """ import os import random import sys from threading import Thread import datetime import time import RPi.GPIO as GPIO #++ # broches GPIO GPIO.setmode(GPIO.BCM) #++ GPIO21= broche 40 GPIO.setup(20, GPIO.OUT, initial=GPIO.LOW)# broche 38 LED #++ class Afficheur(Thread): """Thread chargé simplement d'afficher une lettre dans la console.""" def __init__(self, lettre): Thread.__init__(self) self.lettre = lettre def run(self): """Code à exécuter pendant l'exécution du thread.""" i = 0 while i < 20: sys.stdout.write(self.lettre) sys.stdout.flush() # affichage immediat attente = 0.2 attente += random.randint(1, 60) / 100 # attente aleatoire de 0.2 a 0.8 s time.sleep(attente) i += 1 # fin de Afficheur # allumage d'une LED ========================================================== class Essais_1(Thread): def __init__(self): Thread.__init__(self) def run(self): date=datetime.datetime.now() #*-* second_old=date.second+1 #*-* while 1: try: date=datetime.datetime.now() #*-* secs=int(date.second) #*-*< Led=date.microsecond/1e6 # commande de la LED toute les secondes (0.5s allumee, 0.5s eteinte) if Led<=0.5: GPIO.output(20,GPIO.LOW)# LED allumee #++ pass # equiv a nop else: GPIO.output(20,GPIO.HIGH)# LED eteinte #++ pass # equiv a nop if secs==second_old: print('secs->',secs) #*/* second_old+=1 if second_old==60: second_old=0 except KeyboardInterrupt: GPIO.cleanup() thread_2.join() break # fin de while 1 ============================================================= thread_2 = Essais_1() thread_3 = Afficheur("A") # Lancement des threads thread_2.start() thread_3.start() # Attend que les threads se terminent thread_2.join() thread_3.join()
Merci d’avance
Cordialement
Partager