Go Down

Topic: Uno+Ethernet : problème requête GET avec des variables de plus de 12 caractères (Read 342 times) previous topic - next topic

bigben99

Bonsoir,

Après plusieurs heures à essayer de faire fonctionner mon montage, j'ai enfin une bonne piste concernant mon problème mais pas de solution.

J'ai un Uno + Ethernet Shield, ce montage a pour but de collecter des informations sous forme de trames et de les transmettre par requête GET vers un script PHP qui à pour rôle de traiter les trames.

Si la mécanique fonctionne, j'ai un problème avec certaines requêtes GET lorsque ma trame dépasse 12 caractères.

Ci-dessous ma requête :
Code: [Select]
GET http://www.aaaaa-bbbbbbb.cc/arduino.php?uid=a1e5f6&data=[message] HTTP/1.0
Lorsque ma chaine de caractères [message] fait plus de 12 caractères, ma requête semble ne pas être envoyée...

Coté PHP, il n'y a aucun problème, lorsque j'appelle mon script depuis mon navigateur, je peux mettre beaucoup plus de caractères !

Ci-dessous, mon code arduino :
Code: [Select]
#include <SPI.h>
#include <Ethernet.h>

// XX-XX-XX-XX-XX-XX
byte mac[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
// aaaaa-bbbbbbb.cc
IPAddress server(125,125,125,125);

EthernetClient client;

String message;
byte emptyBuffer;
char buffer[2];
char add;
boolean messageStarted;
boolean sendMessage;
boolean closeConnection;

void setup() {
 Serial.begin(9600);
 Serial.println("<<SERVEUR - SETUP>>");
 while(Ethernet.begin(mac) == 0) {
   Serial.println("Failed to configure Ethernet using DHCP");
   delay(60000);
 }
 Serial.println("Succeed to configure Ethernet using DHCP");
 delay(1000);
 message = "";
 buffer[0] = buffer[1] = '>';
 messageStarted = false;
 sendMessage = false;
 closeConnection = false;
}

void loop() {
 if(Serial.available()) {
   char c = Serial.read();
   add = buffer[0];
   buffer[0] = buffer[1];
   buffer[1] = c;
   if(messageStarted) {
     if(emptyBuffer == 0 ) {
       if(add == ' ') {
         message = message + "%20"; // pour remplacer les ' ' par %20 dans mon message pour ma requête GET
       } else {
         message = message + add;
       }
     } else if(emptyBuffer > 0) {
       emptyBuffer--;
     }
     if(buffer[0] == '>' && buffer[1] == '>') {
       messageStarted = false;
       sendMessage = true;
     }
   } else if(buffer[0] == '<' && buffer[1] == '<' ) {
     messageStarted = true;
     emptyBuffer = 2;
   }

   if(sendMessage) {
     Serial.println("Connecting...");
     sendMessage = false;
     if(client.connect(server, 80)) {
       Serial.println("connected");
       Serial.println(message);
       client.print("GET http://www.aaaaa-bbbbbbb.cc/arduino.php?uid=a1e5f6&data=");
       client.print(message);
       client.println(" HTTP/1.0");
       client.println();
//        client.stop();
       message = "";
     } else {
       Serial.println("connection failed");
       client.stop();
       Serial.println("Connecting... 2nd attempt");
       client.connect(server, 80);
       Serial.println("connected");
       Serial.println(message);
       client.print("GET http://www.aaaaa-bbbbbbb.cc/arduino.php?uid=a1e5f6&data=");
       client.print(message);
       client.println(" HTTP/1.0");
       client.println();
       message = "";
     }
   }
 }

 if (client.available()) {
   char c = client.read();
   Serial.print(c);
   if(c == '>') Serial.println();
 }
}

Go Up