Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 04.01.2020
Сообщений: 22
1

SD FatFs display for TFT

19.06.2020, 17:56. Просмотров 314. Ответов 10

Доброго времени суток, друзья. Я хочу вывести имена файлов из SD карты на дисплей в столбец, как это сделать, (пока у меня получилось вывести их бегущей строкой, но как вывести их в столбец так, чтобы я потом мог реализовать меню).

Если что, я использую библиотеку для взаимодействие с картой Petit FAT

Вот пример как на данный момент у меня получилось вывести:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
int main() 
{
    
    LCDinit(3); //3
    LCD_Fill(BLACK);
    SD_Init();
 
  while(1) {
 
  FATFS fs;
  FRESULT res;
  FILINFO fno;
  DIR dir;
 
 
   res = pf_mount(&fs);
   res = pf_opendir(&dir, "DCIM");
           
           for (;;) {
        res = pf_readdir(&dir, &fno);
        if (res != FR_OK || fno.fname[0] == 0) break;
        
        TFTString(0,0,WHITE,0,"FILE:");
        TFTString(0,16,WHITE,0,fno.fname);
        
      }
       }
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.06.2020, 17:56
Ответы с готовыми решениями:

come Display This video mode change computer display input to 1240 x .... 60hz
Здравствуйте, у моего знакомого полетел компьютер,пожалуйста помогите его вернуть к жизни,очень...

Cannot display this video mode,change computer display input to 1024x768 60 HZ
Компьютер стабильно работал,и внезапно появился черный экран на котором написано "Cannot display...

Как отобразить скрытые элементы HTML(css-display:none;) используя JS!(display:block;)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> ...

CMA Vestel WM-P1247 Display, Пишет END -display
на все программы сразу пишет END на дисплее Когда вы кладете программное обеспечение с WM-P1047,...

10
404 / 192 / 40
Регистрация: 21.09.2008
Сообщений: 661
20.06.2020, 05:23 2

Ссылка на код в описании автора под видео.
0
2573 / 1165 / 152
Регистрация: 28.10.2011
Сообщений: 4,146
Записей в блоге: 6
20.06.2020, 13:08 3
Цитата Сообщение от Kostyanskiy Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
12
13
int main() 
{
    
    LCDinit(3); //3
    LCD_Fill(BLACK);
    SD_Init();
 
  while(1) {
 
  FATFS fs;
  FRESULT res;
  FILINFO fno;
  DIR dir;
Скажите что вы пошутили. Вы знаете сколько памяти нужно под эти структуры? А какого размера стек?
0
1779 / 1109 / 109
Регистрация: 04.01.2010
Сообщений: 3,892
23.06.2020, 10:17 4
Цитата Сообщение от locm Посмотреть сообщение
Скажите что вы пошутили. Вы знаете сколько памяти нужно под эти структуры?
)) ну, не космические.. Если не брать во внимание бут в структуре FATFS - то очень не много. А остальное (FILINFO/DIR) - так вообще. Сколько там, 32байта на секцию? (могу посмотреть если надо)
0
0 / 0 / 0
Регистрация: 04.01.2020
Сообщений: 22
24.06.2020, 16:19  [ТС] 5
Да, там я ошибся, но на скорость работы это не влияет.
0
0 / 0 / 0
Регистрация: 04.01.2020
Сообщений: 22
25.06.2020, 00:51  [ТС] 6
Смотрите, задача такая, весь каталог помещается в нулевую ячейку масива
C++
1
fno.frame[0]
а потом выводится на дисплей, но если так выводить, то оно будет идти бегущей строкой, мне надо как-то сохранять все значения нулевой ячейкой массива и записать их в в другой массив по порядку, тем самым разбив значения по ячейкам другого массива, первое я подумал про это:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Unsigned char arr[30];
for (;;) {
        res = pf_readdir(&dir, &fno);
        if (res != FR_OK || fno.fname[0] == 0) break;
        for(int i; i < 29; i++){
      fno.fname[0] = arr[i];
 
        TFTString(0,0,WHITE,0,"FILE:");
        TFTString(0,16,WHITE,0,arr[0]);
        TFTString(0,16,WHITE,0,arr[1]);
        TFTString(0,16,WHITE,0,arr[2]);
 //            ...             ...            ...
}
}
Но как и ожидалось, оно не сработало. Прошу помощи у Вас друзья.
0
2573 / 1165 / 152
Регистрация: 28.10.2011
Сообщений: 4,146
Записей в блоге: 6
25.06.2020, 01:09 7
Цитата Сообщение от Kostyanskiy Посмотреть сообщение
C
1
2
for(int i; i < 29; i++){
      fno.fname[0] = arr[i];
Каким образом собираетесь 29 байт уместить в одном байте?

Чему равна переменная i перед циклом?
0
0 / 0 / 0
Регистрация: 04.01.2020
Сообщений: 22
25.06.2020, 15:37  [ТС] 8
int i = 0;
0
2573 / 1165 / 152
Регистрация: 28.10.2011
Сообщений: 4,146
Записей в блоге: 6
25.06.2020, 16:36 9
Цитата Сообщение от Kostyanskiy Посмотреть сообщение
int i = 0;
Думаете переменная в цикле равна нулю?
Это не так. Смотрите.
Кликните здесь для просмотра всего текста
В переменной цикла не 0. Из-за этого код цикла даже не выполняется.
Не делайте таких ошибок, иначе долго будете искать ошибку, особенно если у вас нет отладчика, который позволяет это увидеть.
0
Миниатюры
SD FatFs display for TFT  
Модератор
8201 / 6071 / 811
Регистрация: 14.02.2011
Сообщений: 21,062
26.06.2020, 04:52 10
Цитата Сообщение от locm Посмотреть сообщение
Думаете переменная в цикле равна нулю?
надо показать как правильно
Цитата Сообщение от Kostyanskiy Посмотреть сообщение
for(int i; i < 29; i++){
C
1
for(int i=0; i < 29; i++)
Kostyanskiy, зайдите на ветку Си и почитайте что такое глобальные и локальные переменные и область видимости
0
0 / 0 / 0
Регистрация: 04.01.2020
Сообщений: 22
27.06.2020, 14:18  [ТС] 11
Цитата Сообщение от locm Посмотреть сообщение
В переменной цикла не 0. Из-за этого код цикла даже не выполняется.
Не делайте таких ошибок, иначе долго будете искать ошибку, особенно если у вас нет отладчика, который позволяет это увидеть.
Цитата Сообщение от ValeryS Посмотреть сообщение
надо показать как правильно
спасибо вам что разъяснили.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.06.2020, 14:18

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как исправить ошибку cannot display this video mode change computer display input 1280*1024@60hz
Привет!!!Помогите пожалуста!!!!!!!!! Стала изменять расширение экрана, изменила,компьютер попросил...

Замена display:none; на display:block; при нажатии
Приветствую всех! Мои познания в JavaScript очень слабы, поэтому буду благодарен за любую помощь....

SlideUp() и slideDown() без display: block и display: none
Как сделать так чтобы при вызове slideUp() или slideDown() не назначался их display. Я просто хочу...

Замена 2,8 TFT на 2,4 TFT
Некоторое время назад был сделан проект на STM32F103RB и LCD2.8&quot;. Поддерживает контроллеры ILI9320,...

display block display none onclick
когда я нажимаю на слово hello, с низу появляются новые слова. Я хочу, чтоб когда нажимать на слове...

При клике на div "item" у класса .payment-block должно поменяться значение display none на display block
При клике на div &quot;item&quot; у класса .payment-block должно поменяться значение display none на display...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.