Удаление файла. Библиотеки SD.

Нет ответов
mwklim
Offline
Зарегистрирован: 26.10.2015

Моя проблема состоит в том, что при добавлении в скетч 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;
}