Режимы открытия файлов на SD-карте Arduino добавление/перезапись

При запуске Arduine IDE Пример SD DataLogger мои данные добавляются в текстовый файл.

File dataFile = SD.open("datalog.txt", FILE_WRITE);
if (dataFile) {
  dataFile.println(dataString);
  dataFile.close();
}

Есть ли явная возможность открыть файл в режимах перезаписи/добавления?

, 👍2

Обсуждение

спасибо за редактирование @michael, @tony gil


3 ответа


Лучший ответ:

2

Если вы посмотрите в эту библиотеку, вы увидите:

File SDClass::open(const char *filepath, uint8_t mode) {

    ...

    if ((mode & (O_APPEND | O_WRITE)) == (O_APPEND | O_WRITE)) {

Таким образом, вы можете использовать все эти комбинации режимов (например, O_CREATE, O_APPEND, O_WRITE).

,

ответил на заданный вопрос. ПРОГОЛОСОВАНО И ПРИНЯТО :), @tony gil


4

Библиотека Arduino SD представляет собой оболочку Arduino старой версии библиотеки SdFat (помещена в подпапку утилиты библиотеки SD). Эта библиотека SdFat содержит константы, такие как O_READ, O_WRITE, O_APPEND.

Оболочка Arduino содержит константы

#define FILE_READ O_READ
#define FILE_WRITE (O_READ | O_WRITE | O_CREAT | O_APPEND)

Вы можете использовать константы библиотеки SdFa в вызовах оболочки.

File dataFile = SD.open("datalog.txt", O_READ | O_WRITE | O_CREAT);

Внимание: не все версии SD-библиотеки, объединенные в разные пакеты плат, имеют O_APPEND в #define FILE_WRITE. Даже в библиотеке Arduino SD некоторое время назад было удалено O_APPEND, а затем это изменение было отменено, поскольку во всех примерах регистратора данных использовался FILE_WRITE.

,

хорошее решение спасибо! ПРОГОЛОСОВАНО, @tony gil


4

Вам нужно только открыть файл с помощью FILE_WRITE и использовать file.seek(EOF), чтобы перейти к концу файла. После этого вы можете написать все, что хотите, и это будет добавлено в конец файла.

File outputFile = SD.open(LOG_FILE, FILE_WRITE);
outputFile.seek(EOF);
outputFile.println("Appended to the EOF");
,

идеально подходит для повседневных решений, спасибо! ПРОГОЛОСОВАНО, @tony gil