Форум РадиоКот https://radiokot.ru/forum/ |
|
petit fatfs https://radiokot.ru/forum/viewtopic.php?f=57&t=153549 |
Страница 1 из 1 |
Автор: | Ravor [ Вт мар 20, 2018 20:31:52 ] |
Заголовок сообщения: | petit fatfs |
Доброе время . Попробывал сегодня petit fatfs и наткулся на такую проблемму . Не работает запись в фаил. То есть , монтирование , открытие файла и чтение из него спокойно , но вместо записи только перезапись. Если создать пустой текстовый фаил , то при попытке записать в него инф. ничего не произойдет , однако если записать в него 120 пробелов то запись произойдет (пока не кончится строка или эти 120 пробеллов). В чем может быть проблема ? |
Автор: | Dimon456 [ Ср мар 21, 2018 11:48:31 ] |
Заголовок сообщения: | Re: petit fatfs |
Без ваших исходников сложно будет вам подсказать. Разновидностей petit fatfs довольно много, но тем не менее может поможет СпойлерКод: // процедура записи файла, дописать в конец файла if ((status=fs_lseek(fs_file.size,1))==0) { //FA_WRITE #asm("nop") /* write some text to the file, without the NULL string terminator sizeof(data)-1 */ if ((status=fs_write(text,sizeof(text)))==0) printf("%u bytes written of %u%u Bt\r\n",sizeof(text)-1, fs_file.size / 1000, fs_file.size % 1000); #asm("nop") else /* an error occured, display it and stop */ printf("%u no bytes no written of \r\n"); } else { /* an error occured, display it and stop */ printf("File no_size %u bytes\r\n",sizeof(text)-1); } // конец процедуры записи |
Автор: | Ravor [ Ср мар 21, 2018 16:14:35 ] | ||
Заголовок сообщения: | Re: petit fatfs | ||
СпойлерБез ваших исходников сложно будет вам подсказать. Разновидностей petit fatfs довольно много, но тем не менее может поможет[spoiler] Код: // процедура записи файла, дописать в конец файла То есть перед функцией fs_write вы должны вызвать fs_lseekif ((status=fs_lseek(fs_file.size,1))==0) { //FA_WRITE #asm("nop") /* write some text to the file, without the NULL string terminator sizeof(data)-1 */ if ((status=fs_write(text,sizeof(text)))==0) printf("%u bytes written of %u%u Bt\r\n",sizeof(text)-1, fs_file.size / 1000, fs_file.size % 1000); #asm("nop") else /* an error occured, display it and stop */ printf("%u no bytes no written of \r\n"); } else { /* an error occured, display it and stop */ printf("File no_size %u bytes\r\n",sizeof(text)-1); } // конец процедуры записи fs_lseek(0) вызываю перед записью. Но ошибки это не исправляет. Исходник взят с сайта https://hubstub.ru/programming/114-podk ... lleru.html. Правда подправил его для atmega32u4 на 16МГц.
|
Автор: | Dimon456 [ Ср мар 21, 2018 17:06:59 ] |
Заголовок сообщения: | Re: petit fatfs |
pf_lseek(0); установить указатель на ноль, он будет перезаписывать. Что бы писать дальше, надо pf_lseek(fs.fsize) установить указатель на размер файла или на конец файла. |
Автор: | Ravor [ Ср мар 21, 2018 17:52:31 ] |
Заголовок сообщения: | Re: petit fatfs |
pf_lseek(0); установить указатель на ноль, он будет перезаписывать. Что бы писать дальше, надо pf_lseek(fs.fsize) установить указатель на размер файла или на конец файла. Но разве он не должен продолжить запись как только перезапишет все существующие байты ? |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |