Per la lista dei file da mostrare in web ho usato lo sketch in esempio modificato in modo che le serial.print diventino client.print.Arduino stampa perfettamente il nome del file in web però avrei bisogno che il file si possa cliccare e scaricare/visualizzare.Come faccio?
Per la lista dei file da mostrare in web ho usato lo sketch in esempio modificato in modo che le serial.print diventino client.print.Arduino stampa perfettamente il nome del file in web però avrei bisogno che il file si possa cliccare e scaricare/visualizzare.Come faccio?
Devi fare un webserver serio e una paginetta html seria, i nomi dei file devono diventare dei link cliccandoci sopra vengono inviati su richiesta GET o POST, lo sketch dovrebbe riconoscere il file e l'estensione per poi inviartelo in formato adeguato
Qui non si tratta più di scrivere "se readstring == 'nomefile.csv' ..." i file ogni volta cambiano in base alla data, ti convine usare una libreria apposita webserver che fa caricamento file da SD
Penso, ma non ne sono sicuro, che quando usi la client.print non basta il nome del file.
Prima e dopo il nome del file ci deve essere un tag html che faccia diventare quel file un link
Qualcosa del tipo: file.txt
non sò se Arduino (linguaggio c) accetta questo "<A HREF=""" devi "stampare" nella stringa anche il carattere " (34)
altrimenti:
client.print(""); client.print(nomefile); client.print("");
NON provato e non sono sicuro, di html sò poco.
Tutto questo SOLO per avere i nomi dei file cliccabili, ma di sicuro devi aggiungere qualcosa per il discorso che faceva @pablos sul GET/POST
Poi il web server arduino deve capire quando viene richiesto il file, quale è il suo nome e spararlo indietro.
... ragazzi, non scherziamo, come dice esattamente pablos, per fare seriamente certe cose serve un VERO Web Server, in gradi di ricevere le richieste dai link HTML nel browser, elaborarle, creare i giusti pacchetti per l'invio del file, ecc. ecc.
Per questo gli suggerivo quel link dove, se ho letto bene, hanno messo in piedi una specie di piccolo FTP server proprio perché c'era la necessità di recuperare un file da SD ...
Se poi invece parliamo di un qualche cosa di piccolo (poche righe di testo) allora può andare anche bene una HTTP/GET a cui Arduino risponde ritornando indietro le poche righe (... sul forum ci sono infiniti esempi in tal senso)
Se usi una SD in fat16 i nomi dei file non devono superare gli 8 caratteri e l'estensione 3 (abcdefgh.123)
SD.open("ArduinoIO.zip"); il tuo file è già di 9 char
Così funziona
void loop()
{
EthernetClient client = server.available();
if (client) {
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (c == '\n' && currentLineIsBlank) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
htmlFile = SD.open("index.htm");
if (htmlFile) {
while (htmlFile.available()) {
client.write(htmlFile.read());
}
// close the file:
htmlFile.close();
}
break;
}
if (c == '\n') {
currentLineIsBlank = true;
}
else if (c != '\r') {
currentLineIsBlank = false;
}
}
}
delay(1);
client.stop();
}
}
("Content-Type: text/html"); qui devi specificare il tipo di file che stai mandando un file ZIP non è html
queste 3 linee devono rimanere così senza nulla in mezzo, è la negoziazione col client, dice al browser il tipo di connessione, il tipo di dati e infine ci vuole un 'a capo' ... println() o uno /n
"Content-Type: text/csv")
è un formato non riconosciuto al massimo un csv per visualizzarlo puoi trattarlo come testo ... immagino siano tanti numeri separati da virgole
"Content-Type: text/plain"
Secondo me drovesti farti qualche prova con una paginetta ben funzionante, te la studi e cerchi di capirne il funzionamento, poi vai a modificarla fino ad ottenere quello che vuoi, una riga alla volta e se c'è un errore torni indietro.
poi quando posti le cose che non funzionano dovresti essere più completo
ad esempio qui if(readString.indexOf("?download") >0)
quel readstring da dove arriva, se non metti tutte le parti è difficile per tutti noi dare un aiuto