come passo i valori di un puntatore ad un array di char

Salve a tutti avrei bisogno di un'aiuto.
Sto utilizzando arduino mega e ethernet shield con sd card inclusa per un progetto.
Sto cercando di scrivere uno sketch che mi permette di collegarmi alla rete e tramite un servizio di time server ntp ,che mi restituisce data e ora,mi permetta di scrivere un file.txt che ha come nome data e ora (ad esempio 26jun20121610.txt).
Il servizio ntp mi restituisce un puntatore char e il mio problema sta nel riuscire a mettere i valori puntati in un array di char in modo da poterlo passare alla scrittura su SD come titolo.Ho provato in vari modi ma niente! se qualcuno mi può aiutare gliene sarei grato.

void loop()
{
  for (int a=0; a <= 50; a++){
    if (!clientTime.connect(time_server,DAYTIME_PORT)) { 
      Serial.print("X");
    }
    else {
      delay(500);
      while (clientTime.available()) {
       char filename1[30];
       char c = clientTime.read(); //restituisce un puntatore
       filename[]=&c;
       mioFile = SD.open(filename, FILE_WRITE); //bisogna passare ad SD.open un array di char
       Serial.println(c);
       a++;
      }
    }
  }
}

A parte l'esempio specifico allegato alla libreria Ethernet, se cerchi nel forum datalogger o NTP ti appariranno un sacco di risultati.
L'argomento è stato discusso tantissime volte.

In ogni caso, visto il titolo del thread, questo link può essere utile:
http://www.science.unitn.it/~fiorella/guidac/guidac027.html
N.

Grazie per le risposte.
Il mio problema è che non riesco a capire cosa sbaglio nel passare alla funzione sd.open!?
così come scritto il codice viene compilato.
Serial.println(filename); // mi mostra il valore esatto che mi aspetto tipo 29jun1743.txt
mentre:
mioFile = SD.open(filename, FILE_WRITE); //Non scrive il file su SD

se su filename scrivo ad esempio:
filename="prova.txt";
non ho problemi invece.

void loop()
{

  File mioFile;
  char c;
  char filename[18];
  delay(1000);
  Serial.print("Connecting...");
  if (!clientTime.connect(time_server,DAYTIME_PORT)) { 
    Serial.println("connection failed");
  }
  else {
    Serial.println("connected.");
    delay(1000);
    int jj = 0;

    while (clientTime.available()) {
      char c=clientTime.read();
      if((c!=' ') && (c!=':'))
      { 
        filename[jj] = c;
        jj++;
      }
    }

      filename[13]='.';
      filename[14]='t';
      filename[15]='x';
      filename[16]='t';
      filename[17]='\0';

    delay(1000);

    Serial.println("Disconnecting.");
    clientTime.stop();
  }

  delay(500);
  mioFile = SD.open(filename, FILE_WRITE);
  Serial.println(filename);
  delay(2000);
  if (mioFile) {
    Serial.print("scritto!");
    Serial.print(c);
    mioFile.write(c);
    // close the file:
    mioFile.flush();
    mioFile.close();
  } 
  else {
    // if the file didn't open, print an error:
    Serial.println("error opening file");
  }

}

Ciao,
il nome del file è troppo lungo. Il formato accettato è 8+3

File Naming

FAT file systems have a limitation when it comes to naming conventions. You must use the 8.3 format, so that file names look like “NAME001.EXT”, where “NAME001” is an 8 character or fewer string, and “EXT” is a 3 character extension. People commonly use the extensions .TXT and .LOG. It is possible to have a shorter file name (for example, mydata.txt, or time.log), but you cannot use longer file names.

N.

Vero!!grazie!:slight_smile: