我建议您查看我的示例MP3 File Player和Web Player。
有两个问题:
1)您需要从欣赏 Arduino 没有足够资源 (SRAM) 来保存整个 SdFAT 目录列表的角度来解决这个问题。因此,我的方法是使用用户控制台来保留列表。它将目录内容连同相应的编号转储到控制台。用户可以从中选择他们希望输入的号码。类似地,Web Player做同样的事情,但是在生成 HTML 时,它会生成一个指向相应列出项目的链接。因此,该列表存储在控制台上,即浏览器或串行监视器。
2) 默认提供的 SD 库不足以满足您的需求。最近 Arduino 将Bill Greiman 的 SdFatLib 合并为引擎盖下的类。但是限制了。在使用 Bill 的原生 SdFat 库时,您可以使用其他方法来访问单个对象,例如getFilename()
SD 中不可用的方法。在浏览目录时这是必需的。sd.ls(LS_DATE | LS_SIZE)
只会直接转储到串行。您需要在哪里使用访问各个文件本身。如下图或实际代码
SdFile file;
char filename[13];
sd.chdir("/",true);
uint16_t count = 1;
while (file.openNext(sd.vwd(),O_READ))
{
file.getFilename(filename);
Serial.print(count);
Serial.print(F(": "));
Serial.println(filename);
count++;
}
file.close();
此外, WebPlayer 的 ListFiles()函数中还可以通过引用访问隐藏的公共方法,以便对文件进行更离散的处理。