Bonjour,
je connecte 2 ESP8266 en wifi. Le client envoie la valeur d'une tension qui varie avec une résistance variable.
Le serveur reçoie les informations et les imprime dans la console.
j'utilise MicroPython v1.19.1 on 2022-06-18; ESP module (1M) with ESP8266
Voici le code du serveur qui fonctionne
Le problème que je rencontre c'est lorsque je veux mettre des Try Except
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 import socket import network import machine ip = '192.168.1.10' subnet = '255.255.255.0' gateway = '192.168.1.1' dns = '8.8.8.8' ssid = 'MicroPython-AP' password = '123456789' sta=network.WLAN(network.STA_IF) sta.active(True) sta.disconnect() # pour ESP8266 ap = network.WLAN(network.AP_IF) ap.active(True) ap.ifconfig((ip,subnet,gateway,dns)) ap.config(essid=ssid, password=password) while ap.active() == False: pass print('Connection successful') print(ap.ifconfig()) print(ap.ifconfig()[0]) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind((ip, 800)) s.listen(5) while True: conn, addr = s.accept() print('Connecte a %s' % str(addr)) reception_donnees=conn.read() print("Volts=",reception_donnees) conn.close()
J'ai ajouté un timer (s.settimeout(5.0)), si le client ne se connecte pas dans les 5 secondes, j'intercepte l'erreur
Et là j'ai le message suivant : File "<stdin>", line 40, in <module> (la ligne 40 c'est except socket.error as msg
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 while True: try: s.settimeout(5.0) conn, addr = s.accept() print('Connecte a %s' % str(addr)) reception_donnees=conn.read() print("Volts=",reception_donnees) conn.close() except socket.error as msg: print(msg) finally: conn.close()
AttributeError: 'module' object has no attribute 'error'
Deuxième problème : Si le client se connecte avant les 5 secondes, c'est ok, mais s'il s'arrête, j'ai alors les message suivant : File "<stdin>", line 43, in <module>
NameError: name 'conn' isn't defined
Le Finally ne reconnait pas la variable conn !
J'ai cherché sur les différents forums mais je suis bloqué.
Merci d'avance pour vos suggestions
Cordialement
Partager