如何在Arduino上为SD卡创建动态文件名

时间:2012-12-07 18:44:36

标签: c++ arduino

我想一次将我的数据记录在我的Arduino文件中。我希望文件名是传递的毫秒数+一些ID的组合。例如,GPS数据将是millis()+“GPS”。

我尝试了以下代码,但它不喜欢我使用String的事实。我可以使用char数组,但长度总是动态的。有没有办法用字符串以某种方式执行此操作?

static void writeToSD()
{
    String logEntry = " GPS: ";
    logEntry += GPSString;
    String filename = String(millis());
    filename += "GPS";
    Serial.println(logEntry);
    Serial.println(filename);

    File dataFile = SD.open(filename, FILE_WRITE);

    // If the file is available, write to it:
    if (dataFile) {
        dataFile.println(logEntry);
        dataFile.close();
        Serial.println("Closed");
    }
    // If the file isn't open, pop up an error:
    else {
        Serial.println("error opening file");
    }
}

2 个答案:

答案 0 :(得分:1)

您可以尝试以下

char fileNameCharArray[filename.length()];
filename.toCharArray(fileNameCharArray, filename.length())
File dataFile = SD.open(fileNameCharArray, FILE_WRITE);

答案 1 :(得分:0)

sprintf (filename, "%ld-GPS", millis());

请注意,不鼓励在Arduino上使用String because of the well documented memory leak/fragmentation problems