Go Down

Topic: Wie kann ich meinen Code vereinfachen? (Read 1 time) previous topic - next topic

SvenM

Hallo zusammen,

ich bestele jetzt 3 Wochen mit dem Arduino an einem kleinen Webserver.

Langsam kann ich mir auch vorstellen wie alles funktioniert. Jetzt möchte ich von der SD-Karte verschiedene Dateien übergeben.
Jetzt habe ich nur das Problem mit der Dateideklaration. Ich kann kein Dateinamen als Varible übergeben. Wie bekomme ich nun meinen einzelnen Fileaufrufe einfacher?

Aktuell sieht es so aus (funktiniert auch):

Quote

         if (Filenummer == 1) {
           client.println("HTTP/1.1 200 OK"); //send new page
           client.println("Content-Type: text/html");
           client.println();
           Serial.println("Laden startp.txt");
           File myFile = SD.open("startp.txt");
           if (myFile) {
             while (myFile.available()) {
               client.write(myFile.read());
             }
           myFile.close();}
         }
         else if (Filenummer == 2){
           client.println("HTTP/1.1 200 OK"); //send new page
           client.println("Content-Type: text/html");
           client.println();
           Serial.println("Laden zsperr.txt");
           File myFile = SD.open("zsperr.txt");
           if (myFile) {
             while (myFile.available()) {
               client.write(myFile.read());
             }
           myFile.close();}
         }
         else if (Filenummer == 3){
           client.println("HTTP/1.1 200 OK"); //send new page
           client.println("Content-Type: text/html");
           client.println();
           Serial.println("Laden 0101fr.txt");
           File myFile = SD.open("0101fr.txt");
           if (myFile) {
             while (myFile.available()) {
               client.write(myFile.read());
             }
           myFile.close();}
         }
         else {
           File myFile = SD.open("startp.txt");
           if (myFile) {
             while (myFile.available()) {
               client.write(myFile.read());
             }
           myFile.close();}
         }
           delay(1);
           //stopping client
           client.stop();
           readString="";
         }



Danke.
Sven

jurs


Wie bekomme ich nun meinen einzelnen Fileaufrufe einfacher?


Weißt Du, was eine "selbstgeschriebene Funktion" ist?
Schon mal eine programmiert?

SvenM

Ne nicht direkt.

Aber mein Problem ist das ich wenn ich meinen Dateinamen gegen eine Varible (sting) autauschen möchte die Anzeige bekomme das nur eine Char-Array passt. Die bekomme ich aber noch nicht mit passendem Inhalt befüllt auf aufgerufen.

Sven

jurs


Aber mein Problem ist das ich wenn ich meinen Dateinamen gegen eine Varible (sting) autauschen möchte die Anzeige bekomme das nur eine Char-Array passt.


Den Datentyp "String" als Objekt vergisst Du am besten ganz schnell. Für die Programmierung von Mikrocontrolllern völlig ungeeignet. Am besten nur char-Arrrays verwenden.


Die bekomme ich aber noch nicht mit passendem Inhalt befüllt auf aufgerufen.


???

An ein char-Array kannst Du mit der Funktion strcpy einen anderen String zuweisen. Und wenn Du einen char-Pointer als Variable einer Funktion deklarierst, kannst Du auch Konstanten als Parameter übergeben, und Funktionen aufrufen mit:
printMyFile("Datei.txt");

Wobei die Deklaration des Funktionsrumpfes dann lauten würde:

void printMyFile(char* fn)
{
// hier der auszuführende Code der Funktion
}



SvenM

#4
Jan 01, 2013, 11:07 pm Last Edit: Jan 01, 2013, 11:21 pm by SvenM Reason: 1
Ich probiere es grade.

Wie kann ich denn auf diese Client aufrufe aus dem Ethentaufruf im loop zurückgreifen?

Quote
EthernetClient client = server.available();
 if (client) {.....


Die hat er ja in der neuen Funktion nicht mehr.

Go Up