2012-07-23 281 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