Ben ritrovati,
ho la necessità di implementare in uno sketch il download di un file che risiede sulla SD nell'arduino (UNO)
con l'aiuto di messaggi nel forum e della rete ho raggiunto il risultato di uno sketch basilare per farlo.
il problema è che il file (htm o txt indifferente) viene scaricato in codifica ascii.
nel file di prova inserito nella SD il testo è 1,1,1,1,1,1 risultato 4944494449444944494449
allego lo schetch:
#include <SPI.h>
#include <Ethernet.h>
#include <SD.h>
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress ip(192, 168, 5, 171);
EthernetServer server(80);
File htmlFile;
void setup()
{
Ethernet.begin(mac, ip);
server.begin();
if (!SD.begin(4)) { return; }
}
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("Content-Type: application/octet-stream");
client.println("Content-Description: File Transfer");
client.println("Content-Disposition: attachment; filename=dati.htm");
client.println("Content-Transfer-Encoding: binary");
client.println("Cache-Control: must-revalidate, post-check=0, pre-check=0");
client.println("Connection: close");
client.println();
htmlFile = SD.open("dati.htm");
if (htmlFile) {
while (htmlFile.available()) {
client.print(htmlFile.read());
}
// close the file:
htmlFile.close();
}
break;
}
if (c == '\n') {
currentLineIsBlank = true;
}
else if (c != '\r') {
currentLineIsBlank = false;
}
}
}
delay(1);
client.stop();
}
}
la domanda è ovvia, sperando che anche la risposta sia banale...
esiste la possibilità di scaricare l'originale così com'è?
grazie mille