我正在尝试在我的 SD 卡上创建一个文件列表,这很容易做到一次,但是当我多次运行程序时,列表要么缩短,要么程序说根本没有文件。
为了使这尽可能简单,我使用了 arduino SD 库附带的 SD 示例,并将设置部分(通常会运行一次)放在循环部分中。这就是我所拥有的。
#include <SD.h>
File root;
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.print("Initializing SD card...");
// On the Ethernet Shield, CS is pin 4. It's set as an output by default.
// Note that even if it's not used as the CS pin, the hardware SS pin
// (10 on most Arduino boards, 53 on the Mega) must be left as an output
// or the SD library functions will not work.
pinMode(10, OUTPUT);
if (!SD.begin(10)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
}
void loop()
{
Serial.println("hit any key then enter to run the list");
while(!Serial.available())
{;}
Serial.read();
root = SD.open("/");
printDirectory(root, 0);
Serial.println("done!");
// nothing happens after setup finishes.
}
void printDirectory(File dir, int numTabs) {
while(true) {
File entry = dir.openNextFile();
if (! entry) {
// no more files
//Serial.println("**nomorefiles**");
break;
}
for (uint8_t i=0; i<numTabs; i++) {
Serial.print('\t');
}
Serial.print(entry.name());
if (entry.isDirectory()) {
Serial.println("/");
printDirectory(entry, numTabs+1);
} else {
// files have sizes, directories do not
Serial.print("\t\t");
Serial.println(entry.size(), DEC);
}
}
}
但是在运行它之后我得到了这个奇怪的输出
正在初始化 SD 卡...初始化完成。
点击任意键然后输入运行列表
HFBVYRG.TXT 7
THBVFG.TXT 7
WAZXDSQ.TXT 7
QAZXSW.TXT 21
WSXZAQ.TXT 7
1478523.TXT 7
QWSDFRE.TXT 7
ZXCVBNM.TXT 7
MKOLIJY.TXT 7
完毕!
点击任意键然后输入运行列表
HFBVYRG.TXT 7
THBVFG.TXT 7
WAZXDSQ.TXT 7
QAZXSW.TXT 21
WSXZAQ.TXT 7
1478523.TXT 7
QWSDFRE.TXT 7
ZXCVBNM.TXT 7
MKOLIJY.TXT 7
完毕!
点击任意键然后输入运行列表
HFBVYRG.TXT 7
THBVFG.TXT 7
WAZXDSQ.TXT 7
QAZXSW.TXT 21
完毕!
点击任意键然后输入运行列表
完毕!
点击任意键然后输入运行列表
完毕!
点击任意键然后输入运行列表
完毕!
点击任意键然后输入运行列表
///////////////////////////////////////// //////////////////////////////
如您所见,它变得越来越短,然后完全停止。
有谁知道为什么?
我尝试过使用指针并关闭并重新打开文件,但我什么也没想到。
任何想法将不胜感激。