2012-07-23 285 views
7

我正在使用Arduino库。我想从传感器记录一些数据,日期时间戳记它并将其写入SD卡。将字符串转换为使用Arduino类型的const char *

要建立我已经试过

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

话,我想用

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

,但我得到

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

登录到该文件中的文本文件名,但似乎该Arduino字符串不具有相当于

(const char *) dataFileName.c_str() 

所以我无法弄清楚如何做正确的转换

任何帮助将不胜感激。

回答

14

感谢您的帮助。解决方案是

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

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

使用str.length()+ 1获取长度字符串。例如:char __dataFileName [dataFileName.length()+ 1]; dataFileName.toCharArray(__ dataFileName,sizeof(__ dataFileName)); – Guihgo 2015-07-16 18:18:44