Go Down

Topic: String will nicht so wie ich (Read 1 time) previous topic - next topic

ckerndl

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




ckerndl

    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

sui

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

Code: [Select]

    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();

mkl0815

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

Code: [Select]

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();



Joghurt

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

mkl0815

stimmt. war mir gar nicht aufgefallen.

Joghurt

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: [Select]

   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. ;)

ckerndl

#7
Nov 26, 2011, 12:15 pm Last Edit: Nov 26, 2011, 12:49 pm by ckerndl Reason: 1
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: [Select]
    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: [Select]
    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

Joghurt

Probier
Code: [Select]

    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);

ckerndl

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

ckerndl

Und so ganz funktionieren tut der code leider auch nicht.

Joghurt

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

ckerndl

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

ckerndl

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

Go Up
 

Quick Reply

With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post.

Warning: this topic has not been posted in for at least 120 days.
Unless you're sure you want to reply, please consider starting a new topic.

Note: this post will not display until it's been approved by a moderator.
Name:
Email:

shortcuts: alt+s submit/post or alt+p preview