C++ 写入SD卡arduino
我的Arduino有些问题。我正在尝试为我的文件创建一个动态名称,并将其转换为char数组,就像我在本网站的一些帖子中看到的那样 下面是我如何编写函数的:C++ 写入SD卡arduino,c++,c,arduino,sd-card,C++,C,Arduino,Sd Card,我的Arduino有些问题。我正在尝试为我的文件创建一个动态名称,并将其转换为char数组,就像我在本网站的一些帖子中看到的那样 下面是我如何编写函数的: void writeSD() { DateTime dt = RTC.now(); String temp = "DIVE"; temp += dt.day(); temp += dt.month(); temp += dt.year(); temp += ".txt"; Serial.println(tem
void writeSD()
{
DateTime dt = RTC.now();
String temp = "DIVE";
temp += dt.day();
temp += dt.month();
temp += dt.year();
temp += ".txt";
Serial.println(temp);
char filename[temp.length()+1];
temp.toCharArray(filename, sizeof(filename));
myFile = SD.open(filename, FILE_WRITE);
if (myFile) {
Serial.print("Writing to txt file...");
myFile.print(dt.day(), DEC);
myFile.print('-');
myFile.print(dt.month(), DEC);
myFile.print('-');
myFile.print(dt.year(), DEC);
myFile.print(' ');
myFile.print(dt.hour(), DEC);
myFile.print(':');
myFile.print(dt.minute(), DEC);
myFile.print(':');
myFile.print(dt.second(), DEC);
myFile.println();
myFile.close();
Serial.println("done.");
} else {
Serial.println("error opening txt file");
}
}
我只有
“打开txt文件时出错”
,我不知道为什么。我的文件名是正确的,在控制台上打印时显示如下:dive65214.TXT
当我从Adafruit更准确地阅读有关SD断接板的文档时,我明白了为什么这不起作用:
SD卡库不支持像我们这样的“长文件名”
曾经相反,它使用8.3格式作为文件名,所以保留文件名
名字短!例如IMAGE.JPG很好,而datalog.txt很好
“我的GPS日志文件.text”不是
所以我有10个字符,但它只接受文件名中的8个字符
谢谢你试着帮助我!:) 我不确定这是否是问题的原因,但您从未真正NUL terminate
filename
。如果编译器没有自动将数组初始化为全零,那么SD.open()
调用将看到文件名,后面是内存中出现的任何垃圾。您可以打印temp
,而不是filename
。请尝试打印filename
,以检查字符串的字符数组表示形式是否符合预期。您还应该按照Andrew的建议执行:filename[temp.length()]='\0'代码>当我打印文件名时,我得到与临时值完全相同的内容。我尝试了文件名[temp.length()]='\0'代码>但我得到一个错误错误:可变大小的对象“filename”可能未初始化