Удаление файла. Библиотеки 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; }