2012-07-23 72 views
7

Estoy usando la biblioteca Arduino. Me gustaría registrar algunos datos de un sensor, marcarlo con fecha y hora y escribirlo en una tarjeta SD.convert Cadena para escribir const char * usando Arduino

Para construir el nombre del archivo de texto que he tratado

String dataFileName = String(String(sedClock.getTime().year(),DEC) + 
         String(sedClock.getTime().month(),DEC) + 
         String(sedClock.getTime().day(),DEC) + 
         String(sedClock.getTime().hour(),DEC) + 
         String(sedClock.getTime().minute(),DEC) + 
         String(sedClock.getTime().second(),DEC) + '_log.txt'); 

Después me gustaría que entrar a ese archivo usando

 pinMode(SD_PIN,OUTPUT); 
     dataFile = SD.open(dataFileName,FILE_WRITE); 

Pero consigo

no matching function call to SDClass::open(String&, int) 
    candidates are: File SDClass::open(const char*,uint_8) 

Pero parece esa cadena Arduino no tiene el equivalente de

(const char *) dataFileName.c_str() 

así que no puedo encontrar la manera de hacer la conversión correcta

Cualquier ayuda sería muy apreciada.

Respuesta

14

Gracias por su ayuda. La solución fue

char __dataFileName[sizeof(dataFileName)]; 
    dataFileName.toCharArray(__dataFileName, sizeof(__dataFileName)); 

    pinMode(SD_PIN,OUTPUT); 
    dataFile = SD.open(__dataFileName,FILE_WRITE); 
+4

use str.length() + 1 para obtener longitud Cadena. Por ejemplo: char __dataFileName [dataFileName.length() + 1]; dataFileName.toCharArray (__ dataFileName, sizeof (__ dataFileName)); – Guihgo

Cuestiones relacionadas