Mira por donde, esta tarde al final he encontrado una solución indirecta en una página de Internet. Aunque en principio solo está pensada para archivos de texto y con un delimitador de EOF (final de archivo). El código es el siguiente:
#include <SPI.h>
#include <SD.h>
char EOF_MARKER = '
Luego hay que abrir un terminal serie (he usado el Teraterm, seleccionar el COM del Arduino, configurar el envio y recepción, como CR+LF y con la opción Send File, enviar el archivo. De momento, como digo el archivo tiene que ser de texto, poniéndole un $ al final del mismo.
Ahora tengo que ir haciendo pruebas con un archivo de texto normal (sin modificar) y luego con un archivo binario.
Si alguien sabe alguna forma más elegante de hacerlo, sería más cómodo. Yo, de momento sigo haciendo pruebas y os informo de los avances.; //Marca de EOF en archivo
File miArchivo;
char ch;
boolean okEOF = false;
void setup() {
Serial.begin(9600);
SD.begin(8);
Serial.print("\nInicializando SD...");
if ( miArchivo = SD.open("ejemplo4.txt", O_CREAT | O_TRUNC | O_WRITE))
{
Serial.print("OK");
}
else {
Serial.print("MIAU");
}
}
void creaStr() {
okEOF = false;
while (1) {
if (Serial.available()) {
ch = (char)Serial.read();
Serial.print (ch);
if (ch == '
Luego hay que abrir un terminal serie (he usado el Teraterm, seleccionar el COM del Arduino, configurar el envio y recepción, como CR+LF y con la opción Send File, enviar el archivo. De momento, como digo el archivo tiene que ser de texto, poniéndole un $ al final del mismo.
Ahora tengo que ir haciendo pruebas con un archivo de texto normal (sin modificar) y luego con un archivo binario.
Si alguien sabe alguna forma más elegante de hacerlo, sería más cómodo. Yo, de momento sigo haciendo pruebas y os informo de los avances.) {
Serial.flush();
if (miArchivo) miArchivo.close();
okEOF = true;
break;
}
if (miArchivo) {
Serial.print (ch);
miArchivo.print((char)ch);
}
}
}
if (okEOF) {
Serial.println("Encontrado EOF y escrito en tarjeta SD ");
}
else {
Serial.println("No se puede encontrar EOF !!");
}
Serial.flush();
}
void loop() {
if (Serial.available()) {
creaStr();
}
}
Luego hay que abrir un terminal serie (he usado el Teraterm, seleccionar el COM del Arduino, configurar el envio y recepción, como CR+LF y con la opción Send File, enviar el archivo. De momento, como digo el archivo tiene que ser de texto, poniéndole un $ al final del mismo.
Ahora tengo que ir haciendo pruebas con un archivo de texto normal (sin modificar) y luego con un archivo binario.
Si alguien sabe alguna forma más elegante de hacerlo, sería más cómodo. Yo, de momento sigo haciendo pruebas y os informo de los avances.