Code HTML pas interprété par le navigateur client
Bonjour
http://oct1.oct2.oct3.oct4/arduino/digital/.../...:5555
J'envoie (pas représenté dans ce code minimaliste) sans problème des infos
depuis un navigateur distant vers mon petit serveur se trouvant
dans le YUN.
Le serveur renvoie sans problème des infos vers
le navigateur (ici on se contente de renvoyer <h1>TOTO</h1> ) mais...
le code HTML n'est jamais interprété par le navigateur !!
Je tiens à dire que j'ai fait pas mal de recherches à ce sujet avant de poster
mais je suis très très débutant et ça limite mes possibilités !
Je vous transmets donc ce code très SIMPLE qui ne traite que de la
partie du travail qui ne fonctionne pas :
Code:
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
|
#include <Bridge.h>
#include <BridgeServer.h>
#include <BridgeClient.h>
BridgeServer server; // le webserver écoute le port 5555 (par défaut)
void setup()
{
Serial.begin(9600);
while(!Serial)
{ }
Bridge.begin();
server.noListenOnLocalhost();
server.begin();
Serial.println("Prêt !!");
}
void loop()
{
BridgeClient client = server.accept();
if ( client )
{
Serial.println("new client");
String command = client.readStringUntil('/');
Serial.println(command);
client.println("HTTP/1.1 200 OK");
client.println("Transfer-Encoding: chunked");
client.println("Content-Type: text/html; charset=UTF-8");
client.println("Connection: close");
client.println();
client.println("<!DOCTYPE html>");
client.println("<html>");
client.println("<head><title>Arduino YUN</title></head>");
client.println("<body><h1>TOTO</h1></body></html>");
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
} |
windows 10 et Yun, port série COM7
J'imagine que c'est une question de cours mais je ne trouve pas !
Merci à tous
Pierregrenoble
Yun et échanges avec un navigateur distant
Bonjour,
Merci pour vos interventions, ça m'aide.
Toujours sur Arduino Y U N...
J'applique donc ce code qui m'a convaincu.
Pour l'instant , je n'envoie JAMAIS l'entête et la page web
car à la fin du fonctionnement (voir dernières lignes du moniteur série)
la boucle se termine AVANT de lire la séquence \r\n\r\n
C'est à se demander si cette séquence a jamais été envoyée !
Il y a bcp de Serial.println() dans mon code c'est pas indispensable pour vous
ça l'est pour moi:
Code:
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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
|
CODE ARDUINO YUN
--------------------------------------------------------------------------------
#include <Bridge.h>
#include <BridgeServer.h>
#include <BridgeClient.h>
BridgeServer server; // le webserver écoute le port 5555 (par défaut)
void setup()
{
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
Bridge.begin();
Serial.begin(9600);
while(!Serial)
{ }
server.noListenOnLocalhost();
server.begin();
Serial.println("Prêt !!");
}
void loop()
{
testRequeteWeb();
}
void testRequeteWeb()
{
boolean currentLineIsBlank = true;
Serial.println("valeur initiale : currentLineIsBlank == true");
BridgeClient client = server.accept();
if (!client) return; // pas de client connecté
while (client.connected())
{
Serial.println("client.connected()");
if (client.available())
{
Serial.println("client.available()");
// on lit toute la trame HTPP, ici sans se soucier de la requête
char c = client.read();
int ascii = (int)c;
Serial.print( "CAR : " );
Serial.print( c );
Serial.print( " code ASCII : " );
Serial.println( ascii );
if (c == '\n' && currentLineIsBlank)
{ // une requête HTTP se termine par une ligne vide
// ON GENERE LA PAGE WEB
// On envoie un en tête de réponse HTTP standard
Serial.println("ENVOI EN-TETE HTTP");
client.println( "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n" );
client.println();
client.println( "<!DOCTYPE html><html><head></head><body><h1>TOTO</h1></body></html>" );
// on sort du while et termine la requête
break;
}
if ( c == '\n' )
{
Serial.println("fin de boucle \\n : currentLineIsBlank == true");
currentLineIsBlank = true;
}
else
{
if ( c != '\r' )
{
Serial.println("fin de boucle : Ni \\n ni \\r : currentLineIsBlank == false");
currentLineIsBlank = false; //on lit un caractère
}
else
{
Serial.println("fin de boucle \\r");
}
}
} // end if available
} // end while
delay(1);
client.stop(); // termine la connexion
} |
REQUETE TAPEE
-------------------------------------------------------------------------
http://oct1.oct2.oct3.oct4/arduino/bonjour6:5555
VOICI LA SORTIE MONITEUR SERIE CORRESPONDANTE
-------------------------------------------------------------------------
Prêt !!
valeur initiale : currentLineIsBlank == true
valeur initiale : currentLineIsBlank == true
valeur initiale : currentLineIsBlank == true
etc...
valeur initiale : currentLineIsBlank == true
valeur initiale : currentLineIsBlank == true
client.connected()
client.available()
CAR : b code ASCII : 98
fin de boucle : Ni \n ni \r : currentLineIsBlank == false
client.connected()
client.available()
CAR : o code ASCII : 111
fin de boucle : Ni \n ni \r : currentLineIsBlank == false
client.connected()
client.available()
CAR : n code ASCII : 110
fin de boucle : Ni \n ni \r : currentLineIsBlank == false
client.connected()
client.available()
CAR : j code ASCII : 106
fin de boucle : Ni \n ni \r : currentLineIsBlank == false
client.connected()
client.available()
CAR : o code ASCII : 111
fin de boucle : Ni \n ni \r : currentLineIsBlank == false
client.connected()
client.available()
CAR : u code ASCII : 117
fin de boucle : Ni \n ni \r : currentLineIsBlank == false
client.connected()
client.available()
CAR : r code ASCII : 114
fin de boucle : Ni \n ni \r : currentLineIsBlank == false
client.connected()
client.available()
CAR : 6 code ASCII : 54
fin de boucle : Ni \n ni \r : currentLineIsBlank == false
client.connected()
client.available()
CAR : : code ASCII : 58
fin de boucle : Ni \n ni \r : currentLineIsBlank == false
client.connected()
client.available()
CAR : 5 code ASCII : 53
fin de boucle : Ni \n ni \r : currentLineIsBlank == false
client.connected()
client.available()
CAR : 5 code ASCII : 53
fin de boucle : Ni \n ni \r : currentLineIsBlank == false
client.connected()
client.available()
CAR : 5 code ASCII : 53
fin de boucle : Ni \n ni \r : currentLineIsBlank == false
client.connected()
client.available()
CAR : 5 code ASCII : 53
fin de boucle : Ni \n ni \r : currentLineIsBlank == false
client.connected()
client.available()
CAR :
code ASCII : 13
fin de boucle \r
client.connected()
client.available()
CAR :
code ASCII : 10
fin de boucle \n : currentLineIsBlank == true
client.connected()
client.connected()
client.connected()
client.connected()
client.connected()
client.connected()
client.connected()
client.connected()
Merci
pierre Grenoblois
Erreur d'adresse, c'est idiot...
Bonjour à tous,
il fallait envoyer
http://oct1.oct2.oct3.oct4:5555/arduino/toto/tata/tati/.../...
et non
http://oct1.oct2.oct3.oct4/arduino/toto/tata/tati/.../...:5555
quel rigolo ce Pierre !! :D
Merci
Pierre Grenoble