Trasferimento file da SD a pc tramite seriale

Ragazzi, è possibile inviare un file dalla SD al PC a cui è collegato arduino tramite Seriale?Sto utilizzando la libreria SdFat.h per la gestione della SD.

Si, però sul lato pc ti serve un programma che potresti facilmente scrivere in processing che legga la seriale e ricomponga il file. Ps tieni conto però della limitata ram di arduino, se il file risulta troppo grosso non so se ce la possa fare o se si debba ricorrere a qualche piccolo escamotage tipo, mandare il file un pezzetto per volta..

È possibile ma leeeeentooooo Ciao Uwe

Avevo pensato di passare tutto tramite ftp ma lo sketch per l'ftp occupa tipo 22k e nel mio sketch che uso per il tutto sono gia pieni 30 k circa.Ne rimangono circa 2k.C'è qualche modo per trasferire questo file?

È possibile. Vedi quanta RAM hai per usare un buffer di lettura SD; leggi x byte dal file della SD e spedisci quei byte via seriale. ripeti tutto finche il file é stato trasmesso completamente. Ciao Uwe

Ho pensato di fare qualcosa del genere.Ora sono impossibilitato a provare ma secondo voi come andrebbe?

if (!dataFile.open(filename, O_READ)) {
  }

  // read from the file until there's nothing else in it:
  int data;
  while ((data = dataFile.read()) >= 0) Serial.write(data);
  // close the file:
  dataFile.close();
                }

Relativo programma in processing

import processing.serial.*;  
   
 Serial myPort;  
 OutputStream output;  
   
   
 void setup() {  
   
  size(320, 240);  
   
  //println( Serial.list() );  
  myPort = new Serial( this, Serial.list()[0], 115200);  
  myPort.clear();  
   
  output = createOutput("log.csv");  
 }  
   
   
 void draw() {  
   
  try {   
   while ( myPort.available () > 0 ) {  
    output.write(myPort.read());  
   }  
  }   
  catch (IOException e) {  
   e.printStackTrace();  
  }  
 }  
   
   
 void keyPressed() {  
   
  try {   
   output.flush(); // 
   output.close(); //  
  }   
   
  catch (IOException e) {  
   e.printStackTrace();  
  }  
 }

è lo stesso sketch che passa la pagina html al client, invece di client.print ci sarà serial.print

per quanto riguarda la parte in processing?In oltre Uwe parlava di RAM libera.Non è che con questo sistema si satura?

il codice che ho incollato non va...qualcuno sa perchè?

francescoprisco:
il codice che ho incollato non va…qualcuno sa perchè?

Esempi di oggetti che non sono descrittivi o inutili:

Sono nuovo, cerco aiuto
Cerco aiuto in fretta
Non funziona nulla
Errori
Ho un problema con un sensore/circuito/componente
Aiuto!
SCRIVO TUTTO IN MAIUSCOLO COSI’ SI LEGGE MEGLIO

Eppure non è il primo giorno che sei su questo forum… la sfera ce l’ha uwefed, solo lui può aiutarti XD

leggi qualche post più sopra... c'è il codice già incollato....(L'ho anche specificato)

sto facendo prove ripetute.Non avendo sotto mano l'ethernet shield sto facendo varie prove

void setup() {
  Serial.begin(9600); //Begin Serial Communication with a baud rate of 9600
    int Value1 = 200;
  int Value2 = 100;
    Serial.print(Value1, DEC); 
  Serial.print(";");
  Serial.print(Value2, DEC);
  Serial.print(";");
    Serial.print(Value1, DEC); 
  Serial.print(";");
  Serial.print(Value2, DEC);
  Serial.print(";");
    Serial.print(Value1, DEC); 
  Serial.print(";");
  Serial.print(Value2, DEC);
  Serial.print(";");
    Serial.print(Value1, DEC); 
  Serial.print(";");
  Serial.print(Value2, DEC);
  
}

void loop() {

}

Processing

import processing.serial.*;  
   import java.util.Date;
 Serial myPort;  
 OutputStream output;  
   
   String mydate(int offset)
{ 
Date d = new Date();
long timestamp = d.getTime() + (86400000 * offset); 
String date = new java.text.SimpleDateFormat("dd-MM-yyyy").format(timestamp) + ".csv"; 
return date;
}
 void setup() {  
   
  size(320, 240);  
   
 println( Serial.list() );  
  myPort = new Serial( this, Serial.list()[0], 115200);  
  myPort.clear();  
   output = createOutput(mydate(0)); 

 }  
   
   
 void draw() {  
  try {   
   while ( myPort.available () > 0 ) { 
      
    output.write(myPort.read());  
   }  
  }   
  catch (IOException e) {  
   e.printStackTrace();  
 }  
 }  
   
   
 void keyPressed() {  
   
  try {   
   output.flush(); // Writes the remaining data to the file  
   output.close(); // Finishes the file  
  }   
   
  catch (IOException e) {  
   e.printStackTrace();  
  }  
 }

Il file si crea e aumenta anche di dimensione.Quando lo apro è vuoto....

francescoprisco: leggi qualche post più sopra... c'è il codice già incollato....(L'ho anche specificato)

Lo so che l'hai messo sopra, per ora non sono ancora da ricovero :), mi riferivo a : "Non funziona nulla" .... cosa non funziona?

L'ho scritto

Il file si crea e aumenta anche di dimensione.Quando lo apro è vuoto....