как при помощи fatfs добавлять записи в txt файл

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
didim
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Вт июн 25, 2013 23:22:11

как при помощи fatfs добавлять записи в txt файл

Сообщение didim »

Суть вопроса в следующем подключаем sd карту к микроконтроллеру, создаем на ней или открываем текстовый файл и записываем в него какие-то данные, все хорошо, но как только перезагрузить мк, то данные начнут писаться снова с самого начала файла, стерев все предыдущее. как сделать, что бы данные дописывались в файл, а не перезаписывались?

Код: Выделить всё

		if(f_mount(&fileSystem, SD_Path, 1) == FR_OK)			//подключаем флешку
  {
    uint8_t path[8] = "LOG.TXT";
    path[7] = '\0';
		
		res = f_open(&MyFile, (char*)path, FA_WRITE | FA_CREATE_ALWAYS);			//открываем файл или если его нет, то создаем
		
		b = f_size(&MyFile);
		res = f_lseek(&MyFile, b);

		
		res = f_write(&MyFile, &enter, 1, &bytes);
		res = f_write(&MyFile, &LF, 1, &bytes);
		 
    res = f_write(&MyFile, h, 2, &bytes);			//пишем данные
		res = f_write(&MyFile, &dot, 1, &bytes);
		res = f_write(&MyFile, m, 2, &bytes);
		res = f_write(&MyFile, &dot, 1, &bytes);
		res = f_write(&MyFile, s, 2, &bytes);
		
		res = f_write(&MyFile, &space, 1, &bytes);
		res = f_write(&MyFile, &space, 1, &bytes);
		res = f_write(&MyFile, &space, 1, &bytes);
		
		res = f_write(&MyFile, t, 4, &bytes);;
		
		res = f_write(&MyFile, &end, 1, &bytes);

		
		//b+=18;
 
    res = f_close(&MyFile);			//закрываем файл обязательно
  }
f_lseek(&MyFile, b); получается возвращает 0 всегда и с нуля записываются новые данные - почему? Должно же прочитать размер файла, вернуть это значение и далее дозаписывать, но нет
Реклама
didim
Первый раз сказал Мяу!
Сообщения: 28
Зарегистрирован: Вт июн 25, 2013 23:22:11

Re: как при помощи fatfs добавлять записи в txt файл

Сообщение didim »

Сам косяк, я использовал FA_CREATE_ALWAYS - обрезает файл под ноль и заполняет заново или создает, а FA_OPEN_ALWAYS открывает файл продолжает запись или создает его
Реклама
Ответить

Вернуться в «Разные вопросы по МК»