реклама на сайте
подробности

 
 
> StmF407+USBFlash+Fatfs Прблемка
pahanvs
сообщение Sep 29 2016, 07:07
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 15-04-15
Пользователь №: 86 236



Привет всем sm.gif
Есть следующая загвоздка:

Пытаюсь реализовать чтение с ЮСБ флешки файла BMP. Как бы все работает вроде неплохо, но вот наткнулся на один косяк.
все подключается, пишется и т.д. НО мне нужно прочитать в заголовке файла некую информацию, а именно откуда начинаются данные самого растра, дабы переместится туда и начать их считывать. Ну ладно думаю в чем проблема-то:
f_lseek (&MyFile, 10);
f_read (&MyFile, rastr, sizeof(rastr), &br);
считываю что растр начинается с 62 байта.
перемещаюсь туда:
f_lseek (&MyFile, 62);
и вот прикол- пытаюсь считать 2500 байт
f_read (&MyFile, send, sizeof(send), &br); буфер send имеет размер 2500...
и фигушки...
ну ладно думаю, погляжу в отладке.. смотрю... а он считывает только 450 байт и все. при повторном обращении не читает ничего и f_error(&MyFile) устанавливает единичку, тобиш ахтунг...
Ломал голову и так и сяк, потом заметил что если сначала не читать заголовок файла, а сразу начинать читать кусками по 2500, то все нормально. читает весь файл до конца без ошибок.
Вообщем суть такова что после любого перемещения указателя по файлу он разрешает читать только 450 байт, а если сразу читать нужные куски, то хоть 4000. Мож кто сталкивался?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Sep 29 2016, 15:12
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(mantech @ Sep 29 2016, 17:56) *
У него проблема в функции BlockRead(write), скорее всего параметр "SectorCount" всегда равен 1, и когда идет запрос нескольких секторов, то получается фигня. Из этого следует, либо читать только блоки равные сектору, т.е. 1-512, или править указанные процедуры.

Да где же следует, если
Цитата
...заметил что если сначала не читать заголовок файла, а сразу начинать читать кусками по 2500, то все нормально. читает весь файл до конца без ошибок.


И еще информация к размышлению на основе данных из первого поста:
62 + 450 = 512, что как бы намекает.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 21:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.01368 секунд с 7
ELECTRONIX ©2004-2016