Go Down

Topic: read SD card on website with webduino (Read 596 times) previous topic - next topic

Roxas77

Mar 22, 2013, 12:11 pm Last Edit: Mar 22, 2013, 02:53 pm by Roxas77 Reason: 1
Hi ,
I need to read SD card on website  , i get the exemple "printDirectory" from Arduino and i replace 'Serial' by 'webserver' like that :

Code: [Select]
void printDirectory(WebServer &server, File dir, int numTabs) { // la fonctin reçoit le rép et le décalage tab
  while(true) { // tant que vrai = crée une "loop" qui séxécute tant que contenu
  // la sortie se fait par break;
    File entry =  dir.openNextFile(); // ouvre le fichier ou repertoire suivant
    if (! entry) { // si aucun nouveau fichier /repertoire
      //Serial.println("** pas d'autre fichier ou repertoires**");
      break; // sort de la fonction
    } // fin si aucun nouveau fichier / répertoire
    // affiche le nombre de tab voulu - 0 si racine, 1 si sous Rép, 2 si sous-sous rép, etc..
    for (int i=0; i<numTabs; i++) {
      server.print('\t');
    }
    Serial.print(entry.name()); // affiche le nom du fichier/repertoire
    Serial.println();
    if (entry.isDirectory()) { // si le fichier est un répertoire
      server.println("/"); // affiche un slash
      printDirectory(server,entry, numTabs+1); // affiche le contenu en décalant d'un tab
    } // fin si le fichier est un répertoire
    else { // sinon affiche la taille - les fichiers ont une taille, pas les répertoires
      // files have sizes, directories do not
      server.print("\t\t"); // affiche de Tab de décalé
      server.print(entry.size(), DEC); // affiche la taille
      server.println(" octets"); // affiche la taille
    } // fin sinon = si pas un rép
  } // fin while(true)
} // fin fonction


And i print like that :

Code: [Select]
void defaultCmd(WebServer &server, WebServer::ConnectionType type, char *url_tail, bool tail_complete)
{
 
 if (type == WebServer::POST)
 {
   // ignore POST data
   server.httpFail();
   return;
 }

 /* for a GET or HEAD, send the standard "it's all OK headers" */
 server.httpSuccess();
 /* we don't output the body for a HEAD request */
 if (type == WebServer::GET)
 {
   /* store the HTML in program memory using the P macro */
   P(message1) =
     "<html><head><title >Simulateur </title></head>"
     "<body style=\"text-align:left;\">"    
     "<div style=\"font-size:200%;font-weight:bold; border: 2px black solid;\">";
   P(message2) =    
     "<span style=\"text-indent:50%;margin-left:150px;margin-top:25px; \">Simulation thermique</span></div>"
     "<center><h2>Historique des campagnes<h2></center>"
     "<center><aside style=\"width : 20%; height: 80%;border:2px black solid;\">";
   P(message3) =
     "</aside></center>"
     "</body></html>";
   
   server.printP(message1);
   loadImage(server, "toto.jpg");
   server.printP(message2);
   printDirectory(webserver,myDir, 0); // affiche contenu d'un répertoire avec 0 tab
   server.printP(message3);  
   
 }
}


Code: [Select]
void setup()
{
 Serial.begin(115200);
 // setup the Ehternet library to talk to the Wiznet board
 Ethernet.begin(mac, serverIP , passerelle , masque );
 /* start the server to wait for connections */
 webserver.begin();
 Serial.println("Initialisation de la SD card...");
 pinMode(53, OUTPUT);
 if (!SD.begin(4)) {
   Serial.println("Erreur à l'init!");
   return;
 }
 else {
   Serial.println("Initialisation reussie !");
 }
 
 myDir = SD.open("/");// ouvre la carte SD a la racine
 /* register our default command (activated with the request of * http://x.x.x.x/ */
 webserver.setDefaultCommand(&defaultCmd);
 myDir.close();
 
}


And it's doesn't work .

I find the error , it's here :
Code: [Select]
File entry =  dir.openNextFile(); // open the next file or directory
    if (! entry) { // if no file/directory
      Serial.println("** no other file/directory**");
      break; // sort de la fonction
    } // end if

But i don't know how resolve it . Because when i start in "Serial" , it's works ....

Sorry for my english ^^' if you don't understand say it me thanks :) .

Go Up