Ich habe einen Arduino Mega und ein Wifi-Shield. Ich möchte die SD Karte vom Wifi-Shield über WLAN auslesen. Das funktioniert prinzipiell auch ist aber leider sehr langsam und damit für mich ziemlich unbrauchbar.
Ich habe eine Textdatei mit Messwerten (2000 Werte) die ich übertragen möchte.
Über WLAN kommen so ca. 10 Zeichen pro Sekunde an. Es macht hinsichtlich Geschwindigkeit keinen Unterschied ob ich die Daten mit dem Browser oder über die Kommandozeile (get) anfordere.
Momentan verwende ich die Library: SdFat.h. Library SD.h habe ich auch schon ausprobiert. Ergebnis ist immer das gleiche.
Wenn Du es blockweise Machst wirds schneller. Ich weiß jetzt nicht wie umfangreich Dein Sketch ist (wieviel RAM frei ist). Fang mal mir 32 Byte an und versuch's dann mit größeren Blöcken.
Grüße Uwe
Hallo, das gleiche habe ich auch vor und bei mir ist die Übertragung auch sehr langsam, vor allem weil ich bilder übertragen will. Allerdings bekomme ich es überhaupt nicht hin hier die Daten Blockweise zu übertragen. Hat hier jemand zufällig ein kleines Beispiel wie man Blockweise die SD Daten auslesen kann?
Definiere Dir einfach einen Puffer, setze das letzte byte auf "0" (Wert Null, nicht das Zeichen 0) und lese byteweise von der SD-Karte (gibt leider kein Blockread). Am Ende dann den Puffer mittels client.print() abschicken.
z.B.
#define BUFFERSIZE 32
//BUFFERSIZE bytes plus null-byte
char buffer[BUFFERSIZE +1];
//zähler für puffer
int i =0;
//solange noch daten vorhanden sind
while( file.available()) {
buffer[i++] = file.read();
//wenn BUFFERSIZE zeichen gelesen, dann puffer abschicken
if(i == BUFFERSIZE ) {
//nullterminierung
buffer[i] = 0
//puffer abschicken
clientprint(buffer);
//zähler auf 0 setzen
i=0;
}
}
//letzen rest auch noch abschicken, weniger als BUFFERSIZE bytes im puffer nach file-ende
if(i > 0) {
//nullterminierung
buffer[i] = 0
//puffer abschicken
clientprint(buffer);
}
Achtung!! Code ist aus der Hüfte geschossen und ungetestet.