2012-07-23 21 views
7

zu schreiben Ich verwende die Arduino-Bibliothek. Ich möchte einige Daten von einem Sensor protokollieren, Datum-Zeit-Stempel es und schreibe es auf eine SD-Karte.konvertieren String, um const char * mit Arduino

die Textdatei Namen bauen Ich

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'); 

versucht haben, würde ich dann auf diese Datei

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

mit loggt sein mögen, aber ich

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

Aber es scheint, Diese Arduino-Zeichenfolge hat nicht das Äquivalent von

(const char *) dataFileName.c_str() 

So kann ich nicht herausfinden, wie die korrekte Umsetzung zu tun

Jede Hilfe wäre sehr dankbar.

Antwort

14

Danke für Ihre Hilfe. Die Lösung war

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

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

Verwenden Sie str.length() + 1 für get Länge String. Beispiel: char __dataFileName [dataFileName.length() + 1]; dataFileName.toCharArray (__ dataFileName, sizeof (__ dataFileName)); – Guihgo

Verwandte Themen