Goldorak78:
<?xml version="1.0" encoding="ISO-8859-1"?>
ouvrir
<?xml version="1.0" encoding="ISO-8859-1"?>ou
fermé
rien d'autre donc je pense que niveau RAM ça peut passer ?
Si se trouve toujours sur une même ligne c'est jouable.
Tu récupère chaque ligne une par une et tu regarde si elle contient , si oui tu la découpe en morceau avec String.
(Je te prépare un petit exemple ;))
Edit :
#include <SPI.h> // Librairie SPI pour la communication hardware
#include <Ethernet.h> // Librairie Ethernet
byte mac[] = { // Adresse MAC (n'importe quelle adresse fait l'affaire)
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress server(10, 0, 0, 19); // Adresse IP du serveur distant (ici mon serveur web local)
EthernetClient client; // Objet EthernetClient
// setup()
void setup() {
Serial.begin(9600); // Initialisation du port série
if (!Ethernet.begin(mac)) { // Opbtention d'une adresse IP par DHCP
Serial.println("Erreur DHCP");
for(;;); // En cas d'erreur on bloque le programme dans une boucle infini
}
Serial.println("DHCP OK");
}
// loop()
void loop()
{
String str; // Chaine de char contenant une ligne de la réponse HTTP
char c;
delay(10000); // Delai entre deux requétes
if (client.connect(server, 80)) { // Connexion au serveur web
client.println("GET /flux.xml HTTP/1.0"); // Demande de flux.xml en HTTP 1.0
client.println();
}
else {
Serial.println("Erreur TCP"); // Si erreur lors de la connexion
return; // quitte loop()
}
for(;;) { // Boucle infini
if(client.available()) { // Si des données son disponible sur l'objet EthernetClient
c = client.read(); // Lecture d'un octet
if(c == '\n') { // Si fin de ligne atteinte
// (Pensez à mettre une ligne vide à la fin de flux.xml)
if(str.startsWith("<action>")) { // Si la ligne commence par <action>
str.replace("<action>", ""); // Enléve les balises XML
str.replace("</action>", "");
Serial.println(str); // Affiche la valeur du noeud XML
// ... TODO
break; // Sort de la boucle infini
}
str = ""; // Vidage de la ligne
}
else
str += c; // Concaténation de l'octet recu dans la chaine de char
}
if(!client.connected()) // Si la connexion a été perdu
break; // Sorti de la boucle infini
}
client.stop(); // Fermeture de la connexion avec le serveur
}
Il te reste deux if(...) et quelques pinMode / digitalWrite à ajouter tu devrais t'en sortir ![]()