Перейти к содержанию
    

Если хотите читать неторопясь, особенно с SD карт, то 512 байт, а если "по уму", то по 4Кбайта :rolleyes:

А почему именно 4к?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А почему именно 4к?

Потому, что меньше - большая потеря скорости, а больше, все-равно фатфс разделит на 4К блоки...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите как сделать поиск предыдущего, файла ?

Задача надо вывести на двух строчный индикатор, все файлы, которые находятся в каталоге, так вот по кнопке вниз вызывается функция f_findnext

и отображает следующий файл, и вот как добыть предыдущий файл что бы на кнопке верх отображался именно он.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите как сделать поиск предыдущего, файла ?

Задача надо вывести на двух строчный индикатор, все файлы, которые находятся в каталоге, так вот по кнопке вниз вызывается функция f_findnext

и отображает следующий файл, и вот как добыть предыдущий файл что бы на кнопке верх отображался именно он.

 

Я так понимаю, назад искать нельзя. Сначала f_findfirst для поиска первого, а дальше f_findnext. В таком случае, надо либо запоминать предыдущие файлы при каждом следующем f_findnext, либо проходить цикл поиска с самого начала до (index-1).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 12/20/2016 at 9:11 AM, jenya7 said:

а вот если мне в файле нужно найти какое нибудь слово. я должен скопировать файл в буффер в RAM и там искать? другого способа нет?

Можно применить буфер объемом не менее искомого объема (если речь о слове то минимум - длинна слова + 1 (ноль в конце)) Далее по байтно считывать файл в буфер со смещением и проверять наличие слова в буфере

Пример поиска в wav файле секции данных:

....
        uint8_t Buf [5]={0,0,0,0,0};
        while (1){
                    Buf[0]=Buf[1];
                    Buf[1]=Buf[2];
                    Buf[2]=Buf[3];
                    if(f_read(&SoundFile,&Buf[3],1,&BytesReaded) != FR_OK){f_close(&SoundFile);return false;}
                    if (strstr (Buf,"data")!=0){
                            if(f_read(&SoundFile,&WAV_DataSubchank.Size,4,&BytesReaded) != FR_OK){f_close(&SoundFile);return false;}
                            break;
                    }
        }
....

Здесь Buf[0]=0 для корректной работы функции strstr.

On 7/12/2019 at 1:07 PM, KVV_EL said:

Здесь Buf[0]=0 для корректной работы функции strstr.

Вернее Buf[5]=0

Изменено пользователем KVV_EL

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...