Не закрывается файл на SD карте
- Войдите на сайт для отправки комментариев
Помогите кто силён в этом.
Написал прогу чтения каталога с SD карты с последующим выводом его на экран LCD. После выбора и открытия файла, при повторном чтении каталога, на дисплей выводяться только имена тех файлов что следуют после открытого.
Процедура начинается так:
file.close();
i=printDir(); //количество файлов на карте с выводом каталога
epprom=0;
file.close();
далее в С номер нужного нам файла
name=printDirname(c);
file = SD.open(name); //Имя открываемого файла
И собственно подпрограммки:
вывод на экран каталога(на выходе количество файлов на SDшке)
int printDir() {
File dir=SD.open("/");
key=0;
LCD.print("Input:",0,0);
while(true) {
file = dir.openNextFile();
if (!file) {
// Больше файлов не осталось
file.close();
dir.rewindDirectory();
return(key);}
LCD.printNumI(key,10,(key+1)*11);
LCD.print(")",25,(key+1)*11);
LCD.print(file.name(),38,(key+1)*11);
LCD.printNumI(file.size()/1000,140,(key+1)*11);
file.close();
key++;
}
}
получение имени по номеру файла
char* printDirname(int i) {
File dir=SD.open("/");
key=0;
while(true) {
file = dir.openNextFile();
if (key==i) {
char* name=file.name();
file.close();
dir.rewindDirectory();
return(name);}
key++;
}
}
Помогите пожалуйста, если сможите. Мне это очень важно.
На этом форуме, кто-то может мне помочь? Хотябы админ откликнулся. Дайте хотябы ссылку где можно про это подчитать. :)
Пока вы выкладываете какие-то непонятные куски кода, да и еще не в читабельном виде наврядли кто-то вам поможет. Выложите ВЕСЬ код в нормальном виде и тогда думаю кто-нибудь откликнется...
//Основная точка вызова file.close(); i=printDir(); // вызов процедуры подсчёта количества файлов на карте с выводом каталога file.close(); //далее следует программа ввода номера файла и присваивание его переменной С номер нужного нам файла name=printDirname(c); //Вызов процедуры получения имени файла по номеру file = SD.open(name); //Открытее файла //И собственно подпрограммки: int printDir() { //процедура подсчёта количества файлов на карте с выводом каталога File dir=SD.open("/"); key=0; LCD.print("Input:",0,0); while(true) { file = dir.openNextFile(); if (!file) { // Больше файлов не осталось file.close(); dir.rewindDirectory(); return(key);} LCD.printNumI(key,10,(key+1)*11); LCD.print(")",25,(key+1)*11); LCD.print(file.name(),38,(key+1)*11); LCD.printNumI(file.size()/1000,140,(key+1)*11); file.close(); key++; } } char* printDirname(int i) { //получение имени по номеру файла File dir=SD.open("/"); key=0; while(true) { file = dir.openNextFile(); if (key==i) { char* name=file.name(); file.close(); dir.rewindDirectory(); return(name);} key++; } }Вроде переделал. Весь код программы нет смысла выводить (очень большой). Вот моя ася 494002996, если можно помогите!!!