Loading...
  Show Posts
Pages: [1]
1  International / Deutsch / Re: Arduino Mega - Download Dateien von SD-Card via Browser on: December 19, 2012, 03:41:25 am
Hallo Thombo84,

du musst eine Unterscheidung machen was für eine Anfrage  an den Webserver gestellt wird und dann die Datei anstelle der Webseite zurückliefern.

Wenn ein GET ankommt ohne dass ein weiterer Befehl angehängt ist, so gebe ich die Dateiliste aus.
Klicke ich eine Datei an, so bekomme ich eine neuen Anfrage mit dem Dateinamen. Diesen kann ich abprüfen und sofern diese Datei existiert zurückgeben.
Dann habe ich noch einen Fall mehr eingebaut, der ist natürlich nicht unbedingt nötig. Und zwar kann ich auch eine Steuerung vornehmen in dem ich Befehle mitsende. Die werden mit einem GET? angekündigt.

Code:
// Look for substring such as a request to get the root file
        if (strstr(clientline, "GET / ") != 0)
        {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("<html><body bgcolor='#444444' text='#c0c0c0'>");
          client.println();
         
          // print all the files, use a helper to keep it clean
          client.println("<h2>Files:</h2>");
          ListFiles(client, LS_SIZE);
          client.println("<p><a href='INDEX.HTM'>zur&uuml;ck</a></p></body></html>");
        }
        else if (strstr(clientline, "GET /") != 0)
        {
          // this time no space after the /, so a sub-file!
          char *filename;
         
          filename = clientline + 5; // look after the "GET /" (5 chars)
          // a little trick, look for the " HTTP/1.1" string and
          // turn the first character of the substring into a 0 to clear it out.
          (strstr(clientline, " HTTP"))[0] = 0;
         
          // print the file we want
//          Serial.println(filename);
          // File couldn´t be opened
          if (! file.open(&root, filename, O_READ))
          {           
            //If it is an command, work with it
            if(filename[0] == '?')
            {
              //Function to control Pins, ect.
              ProcessInput(client, filename);
              break;
            }             
            else
            {
            // Print 404
            client.println("HTTP/1.1 404 Not Found");
            client.println("Content-Type: text/html");
            client.println();
            client.println("<h2>File Not Found!</h2>");
            }
            break;           
          }
         
          //It really is a File
//          PgmPrint("Opened!");                   
          client.println("HTTP/1.1 200 OK");
         
          if(strstr(clientline, "HTM") != 0 || strstr(clientline, "TML") != 0)
            client.println("Content-Type: text/html");         
          else
            client.println("Content-Type: text/plain");
          client.println();
         
          int16_t c;
          while ((c = file.read()) > 0)
          {
              // uncomment the serial to debug (slow!)
              //Serial.print((char)c);
              client.print((char)c);
          }
          file.close();
        }
        else
        {
          // everything else is a 404
          client.println("HTTP/1.1 404 Not Found");
          client.println("Content-Type: text/html");
          client.println();
          client.println("<h2>File Not Found!</h2>");
        }

Was ich darüber hinaus noch gemacht habe ist, dass ich unterscheide ob die Datei eine richtige Datei ist oder eine HTML-Seite. Dann kann man im Header den Content-Type setzen und die Seite wird direkt ausgegeben. Ansonsten sieht man nur den Quelltext. Funktioniert mit Bildern hervorragend!

Gruß,
trib

Danke für den Hinweis :-)
Kleine Frage am Rande: Als was hast du "file" deklariert?
Ich versuche das gerade an meinen Sketch anzubinden, bekomme bei
Code:
file.open(&root, entry.name(), O_READ))
aber "file was not declared in this scope"
2  International / Deutsch / Re: Arduino Mega - Download Dateien von SD-Card via Browser on: December 19, 2012, 02:07:01 am
Hier mein HTML Code:

Code:
EthernetClient client = server.available();
  if (client) {
    Serial.println("Neuer HTTP Client");
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
         if (readString.length() < 100) {
                   readString = readString + c;
         }
       if (c == '\n' && currentLineIsBlank) {
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connnection: close");
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html><head>");
          client.print("<title>File Download</title>");
          client.println("</head>");
          client.println("<body>");

client.println("<p>");
          client.println("<p>");
          /// Bilder anzeigen
           root = SD.open("/");
              while(true) {
                   File entry =  root.openNextFile();
                   if (! entry) {
                   // no more files
                   //Serial.println("**nomorefiles**");
                   break;
                   }
                   Serial.println(entry.name());
                   client.println();
                   client.print("<a href=");
                   client.print(entry.name());
                   client.print(">");
                   client.print(entry.name());
                   client.print("</a>");
                   client.println("<br>");
             }
           client.print("<br></font>");   
          client.print("</body>");
          client.print("</html>");

DAuf der SD-Card befinden nur Dateien "IMAGE00.jpg", "IMAGE01.jpg", "IMAGE02.jpg"
3  International / Deutsch / Arduino Mega - Download Dateien von SD-Card via Browser on: December 18, 2012, 12:22:44 pm
Hallo zusammen,

ich habe einen Arduino Mega mit Ethernet-Shield. In dem Ethernet-Shield ist eine SD-Karte gesteckt.
Ich möchte erreichen dass ich die Dateien auf der SD-Card via Browser herunterladen kann.

Die Dateien auf der SD werden mir im Browser schon angezeigt, aber ein einfaches
Code:
client.println "<a href=/IMAGE01.jpg>IMAGE01.jpg</a>";
reicht irgendwie nicht. Die Datei wird zwar als Link angezeigt, aber das
einzige was heruntergeladen wird ist eine Datei "IMAGE01.jpg" welche den HTML-Quellcode der Seite enthält, die mein Arduino mir anzeigt....

Hat jemand einen Lösungsvorschlag?
4  International / Deutsch / Re: Zusätzliche Pins an Seeduino PE7, PE6, .... -> LED glimmt nur anstatt zuleuchten on: November 16, 2012, 03:07:50 pm
Hallo,

der Code ist recht ... übersichtlich...  smiley-mr-green

Code:
int rel = 8;


void setup() {               
pinMode(rel, OUTPUT);

}

void loop() {
  digitalWrite(rel, HIGH);
  delay(3000);
  digitalWrite(rel, LOW); 
  delay(3000);   
}
5  International / Deutsch / Re: Zusätzliche Pins an Seeduino PE7, PE6, .... -> LED glimmt nur anstatt zuleuchten on: November 16, 2012, 01:43:23 pm
ich habe den Arduino nun mit USB und einem Netzteil 9V, 1A angeschlossen, keine Besserung.

Danach habe ich die 9V über VIN abgegriffen und direkt an Pin 10 des 2803L gelegt, keine Besserung.
6  International / Deutsch / Re: Zusätzliche Pins an Seeduino PE7, PE6, .... -> LED glimmt nur anstatt zuleuchten on: November 16, 2012, 01:30:43 pm
Also ein Netzteil für den Arduino?
Oder könntest Du mir andere Treiber (selbe Bauform) für solche Relais empfehlen?
7  International / Deutsch / Re: Zusätzliche Pins an Seeduino PE7, PE6, .... -> LED glimmt nur anstatt zuleuchten on: November 16, 2012, 12:55:08 pm
Ein Finder 40.52S - 5V DC.
8  International / Deutsch / Re: Zusätzliche Pins an Seeduino PE7, PE6, .... -> LED glimmt nur anstatt zuleuchten on: November 16, 2012, 12:17:56 pm
Hallo,

es ist ein ULN2803L - aber der Aufbau oben funktioniert nicht :-(
9  International / Deutsch / Re: Zusätzliche Pins an Seeduino PE7, PE6, .... -> LED glimmt nur anstatt zuleuchten on: November 16, 2012, 07:01:36 am
Hallo Manawyrm,

Danke für die Antwort, also sollte ich das Schema ao abändern?
10  International / Deutsch / Probleme ansteuerung Relais. ex Re: Zusätzliche Pins an Seeduino PE7, PE6, .... on: November 16, 2012, 06:24:13 am
ich habe da ein ähnliches Problem, möchte gerne ein 5V Relais mittels eines ULN2803 steuern, an PIN1 (Input) liegen 5V an, aber an Output1 des ULN2803 kommen nur 0,3V raus? Was habe ich falsch gemacht?
Pages: [1]