我有以下代码
全球
File logFile
和内部循环()
DateTime now = rtc.now();
String stringFilename = "";
stringFilename = String(now.year())+"_"+String(now.month())+"_"+String(now.day());
stringFilename += ".csv";
Serial.println(stringFilename);
char filename[stringFilename.length() + 1];
stringFilename.toCharArray(filename, sizeof(filename));
String dataString = "";
dataString += String(now.year());
Serial.print("Filename: ");
Serial.println(filename);
if (!SD.exists(filename)){
Serial.println("File does not exist");
logFile = SD.open(filename, FILE_WRITE);
}
if (logFile){
logFile.println(dataString);
}else{
Serial.println("Could not open file");
}
文件名类似于2014_5_26.csv。 SD空了。上面的代码不会打开文件进行写入。如果我用像“datalog.txt”这样的文字替换filename,它就可以了。我做错了什么?
编辑:我得到了我的问题。这个名字很长。它最多只能包含8个字符。我能问一些不同的东西吗?我可以在循环中调用SD.begin(chipSelect)来确定SD是否存在或是否始终在设置时调用?答案 0 :(得分:0)
您可以在循环中使用它,但程序速度会降低。
不要忘记关闭文件(SD.close()
),以确保您的数据正确写入SD卡
答案 1 :(得分:0)
8.3文件名规则可能适用。您的日期派生(“2014_5_26”)文件名似乎有9个字符。当你使用“数据记录”时,它有8个字符,它可以工作。