使用Arduino将字符串转换为const char*类型

11
我正在使用Arduino库。我想要记录来自传感器的一些数据,带有日期时间戳,并将其写入SD卡中。
为了构建文本文件名,我尝试过:
    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()

所以我无法弄清如何进行正确的转换

任何帮助将不胜感激。

2个回答

19

谢谢你的帮助。解决方案是:

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

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

8
使用str.length()+1来获取字符串的长度。例如:char __dataFileName[dataFileName.length()+1]; dataFileName.toCharArray(__dataFileName, sizeof(__dataFileName)); - Guihgo

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接