Удаление txt файла =

ant111
Offline
Зарегистрирован: 28.01.2021

Доброго времени суток, прошу помочь или разъяснить, в чем причина неудачи.
Создаю на microsd карте txt файл, записываю туда значение переменной, после этого закрываю файл и пытаюсь его удалить (скетч "пристрелочный", будет являться частью другой программы). Файл, наполненный какими то данными не удаляется. Если создать пустой txt, удалить его выходит. Прошу подсказать что может идти не так и как удалить заполненный txt файл с флешки... (скетч ниже).

#include
#include
File myFile;

// Назначаем пины
int CS_pin = 9;

void setup() {
Serial.begin(9600);
pinMode(CS_pin, OUTPUT);

if (!SD.begin(CS_pin)) {
Serial.println("Card Failure");
return;
}
Serial.println("Card Ready");

texts();

if(SD.exists("wtime.txt")){
SD.remove("wtime.txt");
Serial.print("delete");
void loop() {

}

void texts(){
Serial.println("запись");

float dataString = 1119;
File logFile = SD.open("wtime", FILE_WRITE);
if (logFile) {
logFile.println(dataString);
logFile.close();
Serial.println(dataString);
}

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Для начала, вставьте код правильно. В нём должны быть номера строк, иначе как его прикажете обсуждать? Прочитайте раздел "Песочница" там всё написано.

ant111
Offline
Зарегистрирован: 28.01.2021

К сожалению не вижу кнопки "редактировать" по этому вставлю код сюда

 

#include <SPI.h>
#include <SD.h>
File myFile;


int CS_pin = 9;

void setup() {
Serial.begin(9600);
pinMode(CS_pin, OUTPUT);

if (!SD.begin(CS_pin)) {
Serial.println("Card Failure");
return;
}
Serial.println("Card Ready");

texts();

if(SD.exists("wtime.txt")){
SD.remove("wtime.txt");
Serial.print("delete");
void loop() {

}

void texts(){
Serial.println("запись");

float dataString = 1119;
File logFile = SD.open("wtime", FILE_WRITE);
if (logFile) {
logFile.println(dataString);
logFile.close();
Serial.println(dataString);
}

 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

И где SD объявляется?

 

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

BOOM пишет:

И где SD объявляется?

 

В 12, не?

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

Имхуется мне, что если файл лежит в корне, то он не wtime.txt а /wtime.txt   

 

И почему пишите в один файл, а удаляете другой?

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

В 12 вижу инициализацию, а не объявление. Не?)

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Rumata пишет:

И почему пишите в один файл, а удаляете другой?

согласен на 100500 процентов. 

ant111
Offline
Зарегистрирован: 28.01.2021

Ошибка при переносе текста, пробовал различные вариации с разными именами файла. Без слеша в названии, он чудесно записывается, докидывает значения и читается, но не удаляется,  думаете слеш поможет?

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

В 20 21 и 31 имена файлов совпадают по Вашему мнению? И код не полный, объявления SD я не вижу. 

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

BOOM пишет:

В 12 вижу инициализацию, а не объявление. Не?)

Не знаю как на ардуине, на ЕСП этого достаточно.

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

ant111 пишет:

Ошибка при переносе текста, пробовал различные вариации с разными именами файла. Без слеша в названии, он чудесно записывается, докидывает значения и читается, но не удаляется,  думаете слеш поможет?

Я не очень умею думать. Компенсирую чтением SD.cpp и FS.cpp. 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Rumata пишет:

BOOM пишет:

В 12 вижу инициализацию, а не объявление. Не?)

Не знаю как на ардуине, на ЕСП этого достаточно.

Могу предположить, что она уже объявлена в библиотеке. Но с sd сам не работал. Пофиг, опустим это. 

Как Вы сказали, вангую 20 21 и 31 всему цимус. 

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

BOOM пишет:

Могу предположить, что она уже объявлена в библиотеке.

Да. 

ant111
Offline
Зарегистрирован: 28.01.2021

Да не совпадают, но это ошибка при переносе текса на форум(не знаю почему так) в скетче все верно, файл везде называется одинаково-"wtime.txt"

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

ant111 пишет:

Да не совпадают, но это ошибка при переносе текса на форум(не знаю почему так) в скетче все верно, файл везде называется одинаково-"wtime.txt"

Какой у нас продвинутый форум ))))))) чотаржу

ant111
Offline
Зарегистрирован: 28.01.2021

Не очень понял Ваше замечание. но все равно спасибо

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

А в какой файловой системе отформатирована флешка?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Дон намекает, что не очень верит в Ваше сообщение №14. Я, кстати, тоже. Выложите на форум именно тот код, который вызывает у Вас проблемы.

ant111
Offline
Зарегистрирован: 28.01.2021

FAT 16

ant111
Offline
Зарегистрирован: 28.01.2021
#include <SPI.h>
#include <SD.h>
File myFile;

int CS_pin = 9;

void setup() {
  Serial.begin(9600);
  pinMode(CS_pin, OUTPUT);
  if (!SD.begin(CS_pin)) {
    Serial.println("Card Failure");
      return;
    }
Serial.println("Card Ready");

texts();

if(SD.exists("wtime.txt")){
SD.remove("wtime.txt");
Serial.print("delete");
}
reads();
}
void loop() {

}

void texts(){
Serial.println("запись");
float dataString = 1119;

File logFile = SD.open("wtime.txt", FILE_WRITE);
if (logFile) {
logFile.println(dataString);
logFile.close();
}
Serial.println(dataString);
}

 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Почему именно fat16? Ее уже (вроде) даже винда старше висты не поддерживает. Это же пережиток пережитка. Хотя бы fat32. 

ant111
Offline
Зарегистрирован: 28.01.2021

В шпаргалках из тырнетов указана FAT16, по этому так и отформатировал карту 

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

BOOM пишет:

Хотя бы fat32. 

FAT32 единственный вариант для данного случая. Хотя есть другие библиотеки, там и exFat поддерживается.

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

ant111 пишет:

В шпаргалках из тырнетов указана FAT16, по этому так и отформатировал карту 

Посмотрите размер карты, если она больше 4 ГБ, то FAT16 не очень вариант. Ну и как указали выше, для совместимости с виндой тоже

ant111
Offline
Зарегистрирован: 28.01.2021

Спасибо, попробую FAT32

ant111
Offline
Зарегистрирован: 28.01.2021

Объем 2 GB

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

Заработало с одинаковыми именами?

ant111
Offline
Зарегистрирован: 28.01.2021

К сожалению нет) пишет и читает но не удаляет, как изначально и было описано

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

Смотрю и никак не могу понять строку 22. Это Форум вам дописал? 

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

ant111 пишет:

К сожалению нет) пишет и читает но не удаляет, как изначально и было описано

У меня все заработало. После исправления ошибок ))

 

#include <SPI.h>
#include <SD.h>
File myFile;


void setup() {
  Serial.begin(115200);

  if (!SD.begin()) {
    Serial.println("Card Failure");
      return;
    }
Serial.println("Card Ready");

texts();

if(SD.exists("/wtime.txt")){
SD.remove("/wtime.txt");
Serial.print("delete");
}
}
void loop() {

}

void texts(){
Serial.println("запись");
float dataString = 1119;

File logFile = SD.open("/wtime.txt", FILE_WRITE);
if (logFile) {
logFile.println(dataString);
logFile.close();
}
Serial.println(dataString);
}

 

ant111
Offline
Зарегистрирован: 28.01.2021

Те файл удаляется? Как настроена SD?

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

И да, ошибки исправил только те, которые мешали компиляции. Прочие ляпы сами почистите. И инициализацию свою в SD.begin() не забудьте вернуть, я для ESP компилировал

b707
Offline
Зарегистрирован: 26.05.2017

Настройка тут не важна, просто пропишите во всех трех местах полный путь к файлу одинаково

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

ant111 пишет:

Те файл удаляется? Как настроена SD?

SD тут не причем. Все удаляется

ant111
Offline
Зарегистрирован: 28.01.2021

Благодарю за помощь, всенепременно попробую

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

И да, на будущее. Про SD.mkdir(). Везде пишут Create a directory on the SD card. This will also create any intermediate directories that don't already exists; e.g. SD.mkdir("a/b/c") will create a, b, and c.

Так вот, нифига подобного. Если нужно создать /aa/aa/cc, то только по очереди:

mkdir("/aa");

mkdir("/aa/bb");

mkdir("/aa/bb/cc");

Актуально для текущей версии библы

 

ant111
Offline
Зарегистрирован: 28.01.2021

Спасибо за совет, создавать сложные пути не планирую, хочу просто сохранять инф срабатываний устройства, и хранить некоторые переменные, но так как с arduino это первый опыт, потребовался совет. Еще раз благодарю

b707
Offline
Зарегистрирован: 26.05.2017

ant111 пишет:

Благодарю за помощь, всенепременно попробую


а сразу что не попробуете?