Режимы открытия файлов на SD-карте Arduino добавление/перезапись
При запуске Arduine IDE Пример SD DataLogger
мои данные добавляются в текстовый файл.
File dataFile = SD.open("datalog.txt", FILE_WRITE);
if (dataFile) {
dataFile.println(dataString);
dataFile.close();
}
Есть ли явная возможность открыть файл в режимах перезаписи/добавления?
@tony gil, 👍2
Обсуждение3 ответа
Лучший ответ:
Если вы посмотрите в эту библиотеку, вы увидите:
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
Библиотека 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
Вам нужно только открыть файл с помощью FILE_WRITE
и использовать file.seek(EOF)
, чтобы перейти к концу файла. После этого вы можете написать все, что хотите, и это будет добавлено в конец файла.
File outputFile = SD.open(LOG_FILE, FILE_WRITE);
outputFile.seek(EOF);
outputFile.println("Appended to the EOF");
идеально подходит для повседневных решений, спасибо! ПРОГОЛОСОВАНО, @tony gil
- Сохранение файла .txt на SD-карту и чтение данных каждого содержимого в файл txt, а затем сохранение его в переменной
- Использование SD-адаптера 5 В в системе 3,3 В
- Печать содержимого файла SD - карты на ЖК-дисплее
- Проблема с открытием нескольких текстовых файлов одновременно/по порядку с использованием <SD.h>
- Как получить свободное/использованное место на SD-карте и передать его
- DFPlayer для записи на SD-карту
- STM32 и SdFat - Не удается создать файл в каталоге на SD-карте
- Как **получить** атрибуты для файлов SD?
спасибо за редактирование @michael, @tony gil