Pages: [1]   Go Down
Author Topic: String will nicht so wie ich  (Read 936 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi,

also mein Vorhaben Einlesen einer RFID Karte dann abfrage einer webseite

z.b. http://192.168.12.100/abfrage.php?rfid=12345678

Die Webseite will ich einfach auslesen das geht auch aber nur mit einer fester URL.

auszug:
geht
    String location = "/abfrage.php";   
    client.println(location);

Jedoch bekomme ich es einfach nicht hin den String neu zu setzen

geht nicht:
    String location = '/abfrage.php';   
    client.println(location);


eigentlich muss die RFID noch mit übergeben werden deshalb will ich auch den String verändern :-(
Ich hoffe es kann mir jemand helfen



Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

    char location = '/abfrage.html';   
    client.println(location);
    client.println();

geht auch nicht und ich weiß nicht wieso. Es sieht so aus als ist die Variable leer
Logged

Hamburg, Germany
Offline Offline
Full Member
***
Karma: 2
Posts: 191
Hello world!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Stringfunktionen sind ziemlich lästig auf dem Arduino, du kannst Deinen Request aber stattdessen auch häppchenweise senden:

Code:
    char rfid[] = "123456";

    client.print("GET /abfrage.php?rfid=");   // ohne Zeilenumbruch, also print statt println
    client.print( rfid );
    client.println("HTTP/1.0");  // hier ist die 1. Zeile des Request Headers zuende, also println
    client.println();
Logged


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

Nicht vergessen, wenn der Webserver als "virtual named host" konfiguriet ist, noch den Hostnamen mitzusenden:

Code:
char rfid[] = "123456";
char host[] = "www.myrfidservice.com";

    client.print("GET /abfrage.php?rfid=");   // ohne Zeilenumbruch, also print statt println
    client.print( rfid );
    client.println("HTTP/1.0");  // hier ist die 1. Zeile des Request Headers zuende, also println
    client.println(host);
    client.println();

Logged

Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 2
Posts: 770
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Vor dem HTTP fehlt ein Leerzeichen.  smiley-roll-blue
Logged

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

stimmt. war mir gar nicht aufgefallen.
Logged

Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 2
Posts: 770
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich könnte mich irren, aber soweit ich weiß ist die Übermittlung eines Hosts erst ab HTTP/1.1 mit drin...?

Da wäre der Code dann ungefähr:
Code:
   char rfid[] = "123456";
    char host[] = "www.myrfidservice.com";

    client.print("GET /abfrage.php?rfid=");   // ohne Zeilenumbruch, also print statt println
    client.print( rfid );
    client.println(" HTTP/1.1");  // hier ist die 1. Zeile des Request Headers zuende, also println
    client.print("Host: ");
    client.println(host);
    client.println(); // Wichtig ist die leere Zeile, die das Ende des Requests mitteilt

Habs aber nicht getestet, daher ohne Gewähr. smiley-wink
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich bin begeistert Dankeschön das geht nun sogar :-)

Nun noch eine andere kurze Frage

Ich erhalte bei folgender Ausgabe der RFID ID seriell stück für Stück einwahnfrei

Code:
    for (i=0; i<5; i++)
    {
      Serial.print(rfidTagCurrent[i], BIN);
    }
    // ETX


jedoch brauche ich die Werte in einer Variable zur übergabe in die funktion jedoch irgendwie macht er das nicht

Code:
    for (i=0; i<5; i++)
    {
      Serial.print(rfidTagCurrent[i], BIN);
    }
    // ETX

    byte Test;
    Test += rfidTagCurrent[0];
    Test += rfidTagCurrent[1];
    Test += rfidTagCurrent[2];
    Test += rfidTagCurrent[3];   
    Test += rfidTagCurrent[4];   
    Serial.print(Test, BIN);
eigentlich sollte ich noch nun eine saubere ausgabe erhalten? Jedoch leider sieht das nur ein wie ein Teil
« Last Edit: November 26, 2011, 06:49:38 am by ckerndl » Logged

Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 2
Posts: 770
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Probier
Code:
    unsigned long test = (rfidTagCurrent[0]-'0')*10000 + (rfidTagCurrent[1]-'0')*1000 + (rfidTagCurrent[2]-'0')*100 + (rfidTagCurrent[3]-'0')*10 + rfidTagCurrent[4]-'0';
    Serial.print(test, BIN);
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Also so gnaz verstehe ich den Code wenn ich ehrlich bin eigentlich nicht :-(
Mal anders gefragt wie siehts den aus wenn ich das als HEX stat bin haben will.
vielleicht verstehe ich es dann
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Und so ganz funktionieren tut der code leider auch nicht.
Logged

Weinsberg, Germany
Offline Offline
God Member
*****
Karma: 2
Posts: 770
A Coder's Tale
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ah, sorry, nicht BIN sondern DEC...  smiley-red
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hm irgendwie kommt da trotzdem was anderes raus als es sollte :-(
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ahhh nun gehts das Program war es gibt ja auch Werte mit 255 deshalb hat das mit dem *100 net ganz geklappt. :-) Dankegeschön :-)
Logged

Pages: [1]   Go Up
Jump to: