Aide programation carte Arduino uno + Ethernet Shields

Goldorak78:

<?xml version="1.0" encoding="ISO-8859-1"?>

ouvrir




ou



<?xml version="1.0" encoding="ISO-8859-1"?>

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 :wink: