Arduino + HTML + Maximal Anzahl <Form> ???

Hi Leute,

ich bin grad dabei mir eine Bedienoberfläche zu machen und hab dafür mehrere Buttons. Sobald ich eine bestimmte Anzahl an 's dazu füge kann ich meinen Webserver nicht mehr erreichen.

Es ist ein Arduino Uno und der Code hat 10432 bytes also nichtmal die Hälfte des verfügbaren.

Frage: sollte ich es einfach ins Progmem schreiben ??

client.println("<form method=get><input type=submit name=date value='Date'></form>");
client.println("<form method=get><input type=submit name=time value='Time'></form>");
client.println("<form method=get><input type=submit name=user value='User'></form>");

sobald ich en vierten button hinzufüge kann ich den Arduino nicht mehr erreichen, kriege aber im Wireshark ein nicht komplettes HTTP Paket zu sehen. :confused:

Hi,

bleibt es nur hängen, wenn Du ein Formular einfügst, oder auch wenn du einen Text von der gleichen Länge schreibst?

Gruß

Sebastian

also es bleibt auch hängen wenn ich an anderer stelle etwas ändere. ich bin grad ziemlich verwirrt da ich mir ein basis programm genommen habe und dann daran mein eigenes entwickelt habe.
syntaktisch ist alles ok und der compiler erkennt auch alles. das verwirrt mich grad als 32 Bit programmierer :smiley:

diese doofen mcu ^^

:stuck_out_tongue_closed_eyes:

Ich vermute der Speicher ist am Ende... Da wirst Du wohl schlanker programmieren müssen :wink:

Sebastian

Hallo,
ich hatte auch schonmal das Problem. War einfach zuviel Text drin und der wird ja nur im 1 k Speicher abgelegt.

Habe es dann auf Anregung so gelöst :

[quote]
[color=#7E7E7E]/*[/color]
[color=#7E7E7E]Kostenlose, frei konfigurierbare Homepage-Uhr von www.schnelle-online.info/Homepage/Tools.html. Ohne Gewähr, ohne Haftung.[/color]
[color=#7E7E7E]Nutzungsbedingung: Dieser Kommentar und der Link unten dürfen nicht entfernt oder (nofollow) modifiziert werden.[/color]
[color=#7E7E7E]*/[/color]
prog_char string_0[] PROGMEM = [color=#006699]"<a style='text-decoration:none;border-style:none;color:black;' target='_blank'"[/color];   [color=#7E7E7E]// "String 0" etc are strings to store - change to suit.[/color]
prog_char string_1[] PROGMEM =[color=#006699]"href='http://www.schnelle-online.info/Atomuhr-Uhrzeit.html'"[/color];
prog_char string_2[] PROGMEM =[color=#006699]"id='soitime20850727171' title='Atomuhr genaue Uhrzeit'>Genaue Uhrzeit</a>
"[/color];
prog_char string_3[] PROGMEM =[color=#006699]"<a style='text-decoration:none;border-style:none;color:black;' target='_blank'"[/color];
prog_char string_4[] PROGMEM =[color=#006699]"href='http://www.schnelle-online.info/Kalender.html' id='soidate20850727171'"[/color];
prog_char string_5[] PROGMEM =[color=#006699]"title='Kalender mit deutschen Feiertagen'>Kalender</a>"[/color]; 
prog_char string_6[] PROGMEM =[color=#006699]"<script type='text/javascript'>"[/color];
prog_char string_7[] PROGMEM =[color=#006699]"SOI = (typeof(SOI) != 'undefined') ? SOI : {};(SOI.ac21fs = SOI.ac21fs || []).push(function()"[/color];
prog_char string_8[] PROGMEM =[color=#006699]"{(new SOI.DateTimeService('20850727171', 'DE')).start();"[/color];
prog_char string_9[] PROGMEM =[color=#006699]"}); (function() {if (typeof(SOI.scrAc21) == 'undefined')"[/color];
prog_char string_10[] PROGMEM =[color=#006699]"{ SOI.scrAc21=document.createElement('script');SOI.scrAc21.type='text/javascript';"[/color];
prog_char string_11[] PROGMEM =[color=#006699]"SOI.scrAc21.async=true;SOI.scrAc21.src=((document.location.protocol == 'https:') ? 'https//' : 'http://')"[/color];
prog_char string_12[] PROGMEM =[color=#006699]" + 'homepage-tools.schnelle-online.info/Homepage/atomicclock2_1.js';"[/color];
prog_char string_13[] PROGMEM =[color=#006699]" (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0])"[/color];
prog_char string_14[] PROGMEM =[color=#006699]" .appendChild(SOI.scrAc21);}})();"[/color];
prog_char string_15[] PROGMEM =[color=#006699]"</script>"[/color];

[/quote]

Dann hatte ich genügend Platz

Gruss Kalli

wieviel kann ich in den progmem schreiben ??
und wie könte ich die datenmenge berechnen ? ich will nicht alle byte werten von den zeichen raussuchen und zusammenrechnen :wink:

Danke für deine Antwort, wenigstens weiss ich das ich auf dem richtigen Weg war.

Kannst du vielleicht dein Programm mal irgendwo posten ?? ich würde gerne die Menge an Text sehen.Danke.

An alle die es vielleicht interessiert, ich habe erfolgreich GET requests mit meinem Arduino + Ethernet Shield hergestellt.

Wen der Code interessiert, fragt mich dann poste ich ihn.
Ich bin aktuell dabei ein grösseres Projekt zu machen das ich natürlich sobald ich es fertig habe präsentieren werde.

Cia.

Wen der Code interessiert, fragt mich dann poste ich ihn.

Hi,

im Moment habe ich leider zu viele Baustellen, aber ich stand schon einmal vor dem Problem. Würde mich also über den Code freuen :slight_smile: Hier gibts auch schon funktionierenden Code.

Gruß

Sebatsian

Hi Leute hier wie versprochen meine Funktion:

byte mac[] = { 0x54, 0x55, 0x58, 0x10, 0x00, 0x24 };  //mac
byte ip[]  = { 192, 168, 2, 111 };                  // IP-Adresse
byte gway[] = { 192, 168, 2, 1 };                // Gateway
byte subnet[]  = { 255, 255, 255, 0 };
byte server[] = { 192,168,2,102 }; // IP of your web server
String buf = String(100); 

Client client(server, 80);

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


String fetchParam(int count){
  String getHTTP = "GET /twitter/twitter.php?value=";  //http get request line
  String req; //requested command
  
   switch(count){
        case 1: req = _DATE; break;
        case 2: req = _TIME; break;    
        case 3: req = _USER; break;        
        case 4: req = _COMM; break;        
        case 5: req = _MESS; break;        
        default: Serial.print("no default");
        break;
      }
      getHTTP = getHTTP + req;  // concatenate the parts of the get request

    Serial.println("establishing Server connection...");
    if (client.connect()) { //connect to server
      Serial.println("Server connection established...");
      // Make a HTTP request:
      client.print(getHTTP); //location of my TwitPHP script
      
     // Serial.print(comm);
      client.println();
    }
    else {
      Serial.println("connection failed");
    }
    delay(1000);
    Serial.print("Response from server: ");
    while (client.available()) {
      char c = client.read();
      Serial.print(c);
      buf = buf + c;

    }    
    return buf;
  
}

Ich habe auch noch meine alten Skripte mit dem funktionierenden verglichen und konnte eigentlich keine Unterschiede erkennen. Jedoch funktioniert es so und mein Arduino kann jetzt ohne Probleme seine Befehle von Twitter abholen um Dinge auszuführen :slight_smile:

stundenblume:
:stuck_out_tongue_closed_eyes:

Ich vermute der Speicher ist am Ende... Da wirst Du wohl schlanker programmieren müssen :wink:

Sebastian

Hi Sebastian, ja mein Speicher war am Ende da ich alles HTML bedingte nich in den Flash Speicher geschrieben hab und somit mein SRAM komplett voll war und nix mehr ging, hab mich jetzt mal ein wenig mehr eingelesen bezüglich progmem etc. und was es bedeutet bzw. bewirkt.

Ich habe eher den falschen Überhaupt Ansatz an die Geschichte genommen, ich hab einfach einen Mikrocontroller gekauft und nicht drüber nachgedacht das man nicht einfach xy software auf so ein Teil spielen kann, sondern das man sich auch mit der Materie befassen muss (Speicher etc.).

^^

Hallo,

irgendwas fehlt in dem Sketch. Die #include vielleicht ?

Gruss Kalli

ich habe nicht das komplette sketch gepostet. sondern nur die dinge die wichtig sind das die funktion sinn macht :wink:
Ich denke includes werdet ihr hinkriegen.
Ich möchte das ganze Sketch noch nich posten da es noch nicht fertig is und ich nicht vorher alle details meines Projektes darlegen möchte.