2012-07-23 13 views
7

का उपयोग करके मैं Arduino लाइब्रेरी का उपयोग कर रहा हूं। मैं एक सेंसर से कुछ डेटा लॉग करना चाहता हूं, डेट-टाइम स्टैंप करता हूं और इसे एसडी कार्ड में लिखता हूं।स्ट्रिंग टू टाइप कॉन्स्ट char * Arduino

पाठ फ़ाइल नाम मैं

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]; डेटाफाइलनाम .toCharArray (__ डेटाफाइलनाम, आकार (__ डेटाफाइलनाम)); – Guihgo