我以前使用过SdFat
,但是它似乎已经改变了,我找不到我理解的文档,而且示例更少。
我有一个Arduino项目,我试图根据SD卡上的文件给它分配任务。
例:
对于每个* .hex文件,请验证是否存在* _out.hex
{如果没有,那就干活创造一个}
我在SdFile.getFilename();
上找到了文档,但是编译器告诉我没有成员...
我当前的代码像这样编译,并将信息打印到&Serial;中。但是,我需要在变量中添加文件名。
SdFile file;
char *chArray;
while (file.openNext(sd.vwd(), O_READ))
{
file.printFileSize(&Serial);
Serial.write(' ');
file.printModifyDateTime(&Serial);
Serial.write(' ');
file.printName(&Serial);//->I need this output in char*
if (file.isDir()) {
// Indicate a directory.
Serial.write('/');
}
Serial.println();
file.close();
}
预先感谢大家的支持...
答案 0 :(得分:0)
感谢您将我重定向到git;本来会以示例的形式感谢一个答案,但那时我可能还没有感到愚蠢,无法真正记住答案... 猜猜这就是我们试图在凌晨4点解决问题的结果... SdFile file.getName(char *,int)是我所需要的。 现在我可以得到.sleep(happy);
答案 1 :(得分:0)
这是我用来获取文件名的示例,例如 file
,
有一点问题虽然你需要猜测文件名size 这里我选择了 25,如果您的文件较大,请分别使用较大或较小的数字。
代码
int max_characters = 25;
char f_name[max_characters];
file.getName(f_name, max_characters);
String filename = String(f_name);
Serial.println(filename);
既然你想在char*
修改代码
SdFile file;
char *chArray;
while (file.openNext(sd.vwd(), O_READ))
{
file.printFileSize(&Serial);
Serial.write(' ');
file.printModifyDateTime(&Serial);
Serial.write(' ');
file.printName(&Serial);//->I need this output in char*
//bruh here is the code
int max_characters = 25; //guess the needed characters
char f_name[max_characters]; //the filename variable you won't
file.getName(f_name, max_characters);
//f_name use for your needs
if (file.isDir()) {
// Indicate a directory.
Serial.write('/');
}
Serial.println();
file.close();
}
我刚刚阅读了开发人员在 github 中编写的代码
https://github.com/greiman/SdFat/blob/master/src/FatLib/FatFile.h
这里特别提到
bool getName(char* name, size_t size);
/**
* Get a file's Short File Name followed by a zero byte.
*
* \param[out] name An array of characters for the file's name.
* The array must be at least 13 bytes long.
* \return true for success or false for failure.
*/