[SOLUCIONADO] Transferir un archivo a la SD

Lucario448:
Provocar cuelgues... solo que hagas algo verdaderamente estúpido (perdona la palabra) en el código, o desconectes el USB durante una transferencia.

Cuando hablaba de cuelgues tampoco me refería a una catástrofe total, simplemente con quitarle el retardo al leer y copiar los datos ya me producía que el fichero se quedara bloqueado en un 93% y a los 5 minutos decidí abortarlo por si acaso.
Pero, bueno tampoco he tenido tiempo para probar cosas, porque en realidad todavía no he solucionado el problema totalmente.
Os cuento. El código que puse funciona perfectamente con una tarjeta Esplora (con procesador igual al que lleva la placa Leonardo) y usando la libreria SD y en principio debería funcionar igual con cualquier Arduino que use esta librería.
Pero,... yo en realidad lo quiero usar con una placa 4Duino (también basada en Leonardo) que lleva incorporada una pantalla táctil , tarjeta SD y módulo WIFI, y me he encontrado, al querer adaptar el código, con que la librería SD.h no funciona ya que tiene una librería específica ( PicasoSerialLib). He cambiado las funciones por las equivalentes:
'SD.open' por 'Display.File_Open', 'miArchivo.close' por 'Display.file_Close' y hasta aquí todo bien, pero cuando intento que me escriba en el archivo lo leido por Serial.read() (que en el caso de la libreria SD se traga lo que le eches sin importarle si es texto o binario), en la equivalente de esta librería , que tiene la siguiente declaración: Display.file_Write (sizeof(data), char *data, Handle) me da error ya que solo aceptaría un puntero a un char (p. ejemplo funciona bien si le pones algo del tipo : Display.file_Write(4,"Hola", handle).
¿Alguna idea sobre como podría conseguir que aceptara datos binarios ? Os pongo el pedazo del código en cuestión:

 if (!leido) {
     word handle;
  handle = Display.file_Open("42.jpg",'w');     //miArchivo = SD.open("42.jpg", O_CREAT | O_WRITE);
  while (millis() - ultimo < 1000 ||  contaje== 0)     
    {
      while(Serial.available() > 0)
      {    
Display.file_Write(1, Serial.read(),handle);     // miArchivo.write(Serial.read());
        ultimo= millis();
        contaje++;
     }
    }
      Display.file_Close(handle);      //  miArchivo.close();
    leido = 1;
  Display.putstr("Hecho!");
  }