Pages: [1]   Go Down
Author Topic: Brauche Hilfe bei Server und Rückgabe  (Read 346 times)
0 Members and 1 Guest are viewing this topic.
Munich
Offline Offline
Newbie
*
Karma: 0
Posts: 37
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

ich möchte Daten an einen Webserver im Netz schicken was auch gut funktioniert.
Allerdings schaffe ich es nicht mir den Rückgabewert aus der PHP-Datei die das Sketch aufruft, ausgeben zu lassen.
Dabei möchte ich nicht die ganze Seite ausgeben sondern nur Werte die ich mit return("Fehler") oder echo "Wert1"; ausgebe.

Kann mir einer dabei helfen?

Danke
Logged

Offline Offline
Edison Member
*
Karma: 21
Posts: 1419
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Poste doch mal den Sketch den Du schon hast. Am Ende geht es nur darum, aus dem EthernetClient mittels read() die Ausgabe zu lesen und in etwas sinnvolles umzuwandeln.
Logged

Munich
Offline Offline
Newbie
*
Karma: 0
Posts: 37
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich habe jetzt das.
Das übertragen funktioniert nur bekomme ich eben keine Rückgabe obwohl diese durch die PHP-Datei generiert wird.


Code:
#include <SPI.h>
#include <Ethernet.h>


boolean connected = false;
String readString = String(30);


EthernetClient client;
byte mac[]       = { 0x5A, 0xA2, 0xDA, 0x0D, 0x56, 0x7A };    // MAC-Adresse des Ethernet-Shields
byte ip[]        = { 192,168,2,111 };                         // IP-Adresse über die der Arduino erreichbar sein soll
byte serverip[]  = { 95, 143, 172, 135 };                     // IP-Adresse des Servers auf dem das PHP-Script läuft




void setup()
{
  Serial.begin(9600);
  Ethernet.begin(mac, ip);
}




void loop(void)
{
  if(!connected)   
  {
    if(client.connect(serverip, 80))
    {
      connected = true;
     
      client.print("GET /ARDUINO/testdatei.php?t");
      client.print("TEST");
      client.print("=");
      client.print("123");
      client.println(" HTTP/1.1");
      client.println("Host: www.fluuux.de");
      client.println("User-Agent: Arduino");
      client.println("Accept: text/html");
      client.println("Connection: close");
      client.println();
      delay(10000);
   
      while (client.connected() && client.available())
      {
        char c = client.read();             
       
        if (readString.length() < 100)
        {
          readString += c;
        }
       
        if (c == '\n')
        {
          if (readString.indexOf("?") <0)
          {
            //skip everything
          }
          else
          {
            if(readString.indexOf("dataNotSaved") >0)
            {
              Serial.println("FEHLER");
            }
            else
            {
              Serial.println(readString);
            }
          }
        }
      }
      readString = "";
      client.stop();
      connected = false;
    }
    else
    {
      Serial.println("   Verbindung zum Server kann nicht hergestellt werden");
    }
  }
}
Logged

Offline Offline
Edison Member
*
Karma: 21
Posts: 1419
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Das erste was mir auffällt ist, das Du ein 10 Sekunden delay zwischen dem HTTP-Request und dem Auslesen der Rückgabe hast. das ist schon ziemlich lang.
Als nächstes würde ich zum Testen erstmal den gelesenen Character char c = client.read(); auf der Konsole ausgeben, um zu sehen was überhaupt zurück kommt.
Dann geht es mit dem String weiter.
Ich würde auch vermeiden die String-Klasse zu verwenden, sondern lieber einen festen Puffer (char buffer[100]) verwenden und mit den C-Lib String-Funktionen arbeiten.
Mario.
Logged

Pages: [1]   Go Up
Jump to: