Bonjour,

désolé le titre n'est pas très explicite. Alors voilà ce que je cherche à faire :
J'affiche une IHM sur laquelle je peux rentrer des données. Quand on appui sur un bouton "commencer messure", une trame est envoyé sur la broche Tx du GPIO puis on reçoit la réponse de l'appreil de mesure. Cet envoi/réception se fait tant que l'on a pas appuyé sur le bouton "valider".

Voilà dans les grandes lignes le but de mon projet. Le problème que je rencontre est que lorsque j'appui sur "Commencer mesure" l'envoi/réception ne se fait qu'une fois or je veux que ça se répète. Sauf qu'en ajoutant une boucle while() on reste dans la boucle et on ne peut pas la stopper.

Voici mon code pour la fonction mesure :

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
def mesure(*value) :
    ser = serial.Serial ("/dev/ttyS0", 9600)    #Open port with baud rate
    ser.write("23".encode())
    print(ser)
    received_data = ser.read()              #read serial port
    sleep(1.0)
    data_left = ser.inWaiting()             #check for remaining byte
    received_data += ser.read(data_left)
    print (received_data)                   #print received data
    ser.write(received_data)                #transmit data serially
    value = received_data.decode("utf-8")
    global a
    a = int(value)
    global labelresultat1
    if (listeCombocurseur.get()== "Lamelles"):
        if (a>=float_MiniLam):
            print("a")
            if (a<=float_MaxLam):
                labelresultat1 = tk.Label(root, background = 'green', text = a,width=19,height=1)
                labelresultat1.grid(row=12,column=2,rowspan =1, columnspan=1, pady=10)
            else :
                labelresultat1 = tk.Label(root, background = 'red', text = a,width=19,height=1)
                labelresultat1.grid(row=12,column=2,rowspan =1, columnspan=1, pady=10)
        else :
            labelresultat1 = tk.Label(root, background = 'red', text = a,width=19,height=1)
            labelresultat1.grid(row=12,column=2,rowspan =1, columnspan=1, pady=10)
    else :
        if (listeCombocurseur.get()== "Brin") :
            if (a>=float_minibrin):
                print("a")
                if (a<=float_maxibrin):
                    labelresultat1 = tk.Label(root, background = 'green', text = a,width=19,height=1)
                    labelresultat1.grid(row=12,column=2,rowspan =1, columnspan=1, pady=10)
                else :
                    labelresultat1 = tk.Label(root, background = 'red', text = a,width=19,height=1)
                    labelresultat1.grid(row=12,column=2,rowspan =1, columnspan=1, pady=10)
            else :
                labelresultat1 = tk.Label(root, background = 'red', text = a,width=19,height=1)
                labelresultat1.grid(row=12,column=2,rowspan =1, columnspan=1, pady=10)    
    return(value)

Merci de votre aide !