Pages: [1]   Go Down
Author Topic: Uno+Ethernet : problème requête GET avec des variables de plus de 12 caractères  (Read 307 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 40
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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:
#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();
  }
}
« Last Edit: March 18, 2013, 03:40:31 am by bigben99 » Logged

Pages: [1]   Go Up
Jump to: