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

get length string에 대해 1을 사용합니다. 예를 들면 다음과 같습니다. char __dataFileName [dataFileName.length() + 1]; dataFileName.toCharArray (__ dataFileName, sizeof (__ dataFileName)); – Guihgo

관련 문제