Bonjour.
J'ai un problème avec un pointeur sur un programme dans un arduino.
Je me permet de le poster ici car sur le forum arduino il n'y à pas beaucoup de réponses...
J'ai un objet nommé Wifi que je ne comprends pas trop...
J'ai écris ce code (simplifié) qui fonctionne :
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 #include <Wire.h> #include <UnoWiFiDevEd.h> void setup() { Wifi.begin(); // Initialise le serveur wifi. Wifi.println(F("Web Server is up")); // Préviens le serveur que tout est ok et prêt à etre utilisé. } void loop() { while(Wifi.available()) { process(Wifi); } delay(50); } void process(WifiData client) { String command = client.readStringUntil('/'); if (command == "webserver") { WebServer(&client); } } void WebServer(WifiData *client) { int index = -1; index = client->parseInt(); if (index == 10) { page_etat(client); } } void page_etat(WifiData *client) { client->println(F("HTTP/1.1 200 OK")); client->println(F("Content-Type: text/html")); client->println(); client->println(F("<!DOCTYPE html>")); client->println(F("<html>")); client->println(F("<head>")); client->println(F("<meta charset=\"utf-8\">")); client->print(F("<meta http-equiv=\"refresh\" content=\"0.1; URL=http://adresseweb.html">")); client->println(F("</head>")); client->println(F("<body/>")); client->println(F("</html>")); client->print(DELIMITER); // very important to end the communication !!!
J'ai voulu éclaircir un peut la chose et j'ai écris le même code mais de cette façon :
Mon objet pageWeb fait partit d'une classe présente dans le fichier "Pages_Web.h" (d'ou l'include en haut du fichier main)
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 #include <Wire.h> #include "Pages_Web.h" #include <UnoWiFiDevEd.h> Pages_Web pageWeb(); void setup() { Wifi.begin(); // Initialise le serveur wifi. Wifi.println(F("Web Server is up")); // Préviens le serveur que tout est ok et prêt à etre utilisé. } void loop() { while(Wifi.available()) { process(Wifi); } delay(50); } void process(WifiData client) { String command = client.readStringUntil('/'); if (command == "webserver") { WebServer(&client); } } void WebServer(WifiData *client) { short int index = -1; index = client->parseInt(); if (index == 10) { pageWeb.page_etat(client); }
Mon fichier Pages_Web.cpp contient ce code :
Mais ce code ne fonctionne pas : le navigateur internet pédale sans rien afficher.
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 void Pages_Web::page_etat(WifiData *client) { client->println(F("HTTP/1.1 200 OK")); client->println(F("Content-Type: text/html")); client->println(); client->println(F("<!DOCTYPE html>")); client->println(F("<html>")); client->println(F("<head>")); client->println(F("<meta charset=\"utf-8\">")); client->print(F("<meta http-equiv=\"refresh\" content=\"0.1; URL=http://adresseweb.html">")); client->println(F("</head>")); client->println(F("<body/>")); client->println(F("</html>")); client->print(DELIMITER); // very important to end the communication !!! }
Si quelqu'un sait pourquoi et par la même occasion m'expiquer ce qu'est l'objet Wifi qui devient WifiData avec un ... je ne sais quoi qui deviens client ??
Bref je suis un peut perdu.
Je précise que le site qui contenais les informations (arduino.org) est plus entretenu donc je ne trouve plus les docs pour l'arduino.
Je précise également que c'est un arduino uno Wifi (avec wifi intégré dans la carte donc pas de shield).
Merci.
Partager