Go Down

Topic: Uno+Ethernet : problème requête GET avec des variables de plus de 12 caractères (Read 363 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();
 }
}
"...Quand vous avez un problème, essayez de donner le maximum d'informations..."
"...Vous indiquerez dans le contenu, la description précise de votre problème..."
(http://forum.arduino.cc/index.php?topic=102175.0)

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy