ESP8266 – Gebufferd binair SPIFFS lezen.

Deze routine word gebruikt in de Aquacontroller.
Haalt ongeveer 14kB/s. Maar kan wel 1.3MB grote bestanden aan.

void fileSend(String fileName) {
 SPIFFS.begin();
 File thisFile = SPIFFS.open(fileName, "r");
 if (!thisFile) {
   webClient.println("HTTP/1.1 404 Not found\r\n");
   webClient.println("ERROR 404 - '" + fileName + "' was not found.");
   return;
 }
 //check the file's extention and tailor the header for that
 String httpHeader;
 if ( fileName.substring( fileName.length() - 4 ) == ".css" ) {
   httpHeader = "HTTP/1.1 200 \r\nContent-Type: text/css\r\n";
 } 
 else {
   httpHeader = "HTTP/1.1 200 \r\nContent-Type: text/html\r\n";
 }
 httpHeader += "Content-Length: " + (String)thisFile.size() + "\r\n" ;
 webClient.println(httpHeader);

 int bufferSize = 512;
 char rwBuffer[bufferSize];
 while ( thisFile.available() > bufferSize ) {
   for ( int bufferPos = 0; bufferPos < bufferSize; bufferPos++ ) {
     rwBuffer[bufferPos] = thisFile.read();
   }
   webClient.write(rwBuffer, bufferSize);
 }
 //send last chunk
 int leftOver = thisFile.available();
 for ( int bufferPos = 0; bufferPos < leftOver; bufferPos++ ) {
   rwBuffer[bufferPos] = thisFile.read();
 }
 webClient.write(rwBuffer, leftOver);
 thisFile.close();
}

FLOATs in Arduino.

Zijn een echte pita. sprintf werkt niet. Maar er gloort een sprankje hoop aan de horizon.
dtostrf() is de manier om floats te formatten op een Arduino.

dtostrf(floatvar, totaleStringLen, cijfersachterdekomma, charbuf);

EDIT 23-1-2016: Ook dtostrf() is een vrouwelijke hond in de omgang.
Bovenstaand advies negeren!