Зарегистрирован: Пн апр 25, 2016 15:43:23 Сообщений: 197 Откуда: Россия , Воронеж
Рейтинг сообщения:0
Доброе время . Попробывал сегодня petit fatfs и наткулся на такую проблемму . Не работает запись в фаил. То есть , монтирование , открытие файла и чтение из него спокойно , но вместо записи только перезапись. Если создать пустой текстовый фаил , то при попытке записать в него инф. ничего не произойдет , однако если записать в него 120 пробелов то запись произойдет (пока не кончится строка или эти 120 пробеллов). В чем может быть проблема ?
Без ваших исходников сложно будет вам подсказать. Разновидностей 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); } // конец процедуры записи
То есть перед функцией fs_write вы должны вызвать fs_lseek
Без ваших исходников сложно будет вам подсказать. Разновидностей petit fatfs довольно много, но тем не менее может поможет[spoiler]
Код:
// процедура записи файла, дописать в конец файла 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); } // конец процедуры записи
То есть перед функцией fs_write вы должны вызвать fs_lseek
fs_lseek(0) вызываю перед записью. Но ошибки это не исправляет.
pf_lseek(0); установить указатель на ноль, он будет перезаписывать. Что бы писать дальше, надо pf_lseek(fs.fsize) установить указатель на размер файла или на конец файла.
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
pf_lseek(0); установить указатель на ноль, он будет перезаписывать. Что бы писать дальше, надо pf_lseek(fs.fsize) установить указатель на размер файла или на конец файла.
Но разве он не должен продолжить запись как только перезапишет все существующие байты ?
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 30
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения