Удаление файла. Библиотеки SD.
- Войдите на сайт для отправки комментариев
Сб, 31/10/2015 - 00:56
Моя проблема состоит в том, что при добавлении в скетч directory():(141 строка) программа перестает удалять файлы с помощью команды SD.remove(), которые я указываю, без нее все прекрасно работает, не могу понять, в чем проблема
#include <SPI.h>
#include <SD.h>
int c = 0;
int q = 0;
int z = 0;
String b;
String d;
String f;
char a;
char* t[] = {""};
char n[] = {'.', ' ', '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '-', '[', ']', ';', ':', '"', '?', ',', '<', '>', '/', '|', '`', '{', '}',
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'I', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
'1', '2', '3', '4', '5', '6', '7', '8', '9', '0'
};
File flesh;
void setup()
{
Serial.begin(9600);
pinMode(10, OUTPUT);
if (Serial.read()) {
Serial.print("Initializing SD card...");
if (!SD.begin(10)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
}
}
void loop() {
z = 0;
com();
if (f == "open ") {
op();
}
else if (f == "remove ") {
rem();
}
else if (f == "create ") {
cre();
}
else if (f == "delete ") {
del();
}
else if (f == "read") {
flesh = SD.open("/");
directory(flesh, 0);
flesh.close();
nol();
}
else {
nol();
}
}
void com() {
while (Serial.available()) {
delay(2);
a = Serial.read();
for (q = 0; q < 94; q++) {
if (a == n[q]) {
d = String(n[q]);
b = String(b + d);
if (b == "remove " && z == 0) {
f = b;
b = String();
}
else if (b == "open " && z == 0) {
f = b;
b = String();
}
else if (b == "delete " && z == 0) {
f = b;
b = String();
}
else if (b == "create " && z == 0) {
f = b;
b = String();
}
else if (b == "read" && z == 0) {
f = b;
b = String();
}
c++;
}
}
}
}
void nol() {
c = 0;
a = 0;
b = String();
f = String();
}
void op() {
flesh = SD.open(b);
while (flesh.available()) {
Serial.write(flesh.read());
}
flesh.close();
flesh = SD.open(b, FILE_WRITE);
z = 1;
while (flesh) {
nol();
com();
if (c > 0) {
if (b == "close file") {
flesh.close();
nol();
z = 0;
return;
}
else {
Serial.println(b);
flesh.println(b);
}
}
}
}
void rem() {
t[0] = (char*)b.c_str();
SD.remove(t[0]);
nol();
return;
}
void cre() {
t[0] = (char*)b.c_str();
SD.mkdir(t[0]);
nol();
return;
}
void del() {
t[0] = (char*)b.c_str();
SD.rmdir(t[0]);
nol();
return;
}
void directory(File dir, int numTabs) {
while (true) {
File entry = dir.openNextFile();
if (! entry) {
break;
}
for (uint8_t i = 0; i < numTabs; i++) {
Serial.print('\t');
}
Serial.print(entry.name());
if (entry.isDirectory()) {
Serial.println("/");
directory(entry, numTabs + 1);
} else {
Serial.print("\t\t");
Serial.println(entry.size(), DEC);
}
entry.close();
}
return;
}