Hi ,
I need to read SD card on website , i get the exemple "printDirectory" from Arduino and i replace 'Serial' by 'webserver' like that :
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 :
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);
}
}
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 :
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 .