Bonjour,
J' utilise python-3.1.3 et le module pyserial-py3k-2.5.win32 pour développer une appli qui doit me permettre de commander un analyseur de spectre par l'intermédiaire de la liaison série.
Dans un premier temps, je n'ai pas utilisé tkinter :
Ca marche très bien.
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 #1er jet concernant la prog de l'as avec des paramètres déjà injectés # -*- coding: utf-8 -*- import serial #importe le module serial pour communiquer avec la voie série se = serial.Serial() #définition de la variable -se- communiquant avec le port série se.baudrate = 115200 #sélection de la vitesse de transmission à 115200 bauds se.bytesize = 8 #Transmission des informations sur 8 bits se.parities = 0 #sans parité se.stopbits = 1 #bit de stop 1 se.xonxoff = 0 #pas de contrôle logiciel se.rtscts = 0 #pas de contrôle RTS/CTS se.timeout = 1 #timeout à la lecture se.port = 0 #le port com 1 se.writeTimeout = 1 #timeout à l écriture se.open() #ouverture du port a = 'CF X GHz;' #variable type string se.write(a.encode()) b = 'SP X MHz;' #variable type string se.write(b.encode()) c = 'RL X DBM;' #variable type string se.write(c.encode()) d = 'PCAL OFF;\r\n' #variable type string se.write(bytes(d, "utf-8")) se.close() #fermeture
Dans un deuxième temps, j'ai voulu aller plus loin en utilisant une interface graphique:
Lorsque je rentre les données dans chaque fenêtre et que les valide, rien ne se passe.
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 #1er jet concernant la prog de l'as avec des paramètres entres par interface # -*- coding: utf-8 -*- import serial #importe le module serial pour communiquer avec la voie série from tkinter import *#ajoute toutes les options du module graphique tkinter root = Tk() entr1 = StringVar() entr2 = StringVar() entr3 = StringVar() edit1 = Entry(root, textvariable = entr1).grid(row = 0, column = 1) edit2 = Entry(root, textvariable = entr2).grid(row = 1, column = 1) edit3 = Entry(root, textvariable = entr3).grid(row = 2, column = 1) def portserie(): global se se = serial.Serial() #définition de la variable -se- communiquant avec le port série se.baudrate = 115200 #sélection de la vitesse de transmission à 115200 bauds se.bytesize = 8 #Transmission des informations sur 8 bits se.parities = 0 #sans parité se.stopbits = 1 #bit de stop 1 se.xonxoff = 0 #pas de contrôle logiciel se.rtscts = 0 #pas de contrôle RTS/CTS se.timeout = 1 #timeout à la lecture se.port = 0 #le port com 1 se.writeTimeout = 1 #timeout à l écriture se.open() #ouverture du port def chxfreq(): a = StringVar() a = "CF " + entr1.get() + ";" se.write(a.encode()) print(a) print(a.encode()) def chxbp(): b = StringVar() b = "SP " + entr2.get() + ";" se.write(b.encode()) def chxniv(): c = StringVar() c = "RL " + entr3.get() + ";" se.write(c.encode()) def autocalabort(): d = StringVar() d = "PCAL OFF;\r\n" se.write(bytes(d, "utf-8")) def quitter(): se.close() root.quit() portserie() label1 = Label(root, text = "Frequence").grid(row = 0, column = 0) btn1 = Button(root, text = "validez", command = chxfreq).grid(row = 0, column = 2) label2 = Label(root, text = "Bande passante").grid(row = 1, column = 0) btn2 = Button(root, text = "validez", command = chxbp).grid(row= 1, column = 2) label3 = Label(root, text = "niveau").grid(row = 2, column = 0) btn3 = Button(root, text = "validez", command = chxniv).grid(row = 2, column = 2) label4 = Label(root, text = "Quitter").grid(row = 3, column = 0) btn4 = Button(root, text = "Bien sur", command = quitter).grid(row = 3, column = 2) autocalabort() root.mainloop() root.destroy()
Il faut que je quitte et que je redémarre le programme pour que les paramêtres soient pris en compte.
Est-ce que quelqu'un a une petite idée de l'endroit ou ça ne va pas, svp ?
Partager