forummailandlogin 0 15 апреля, 2021 Опубликовано 15 апреля, 2021 · Жалоба STM32F0+графический дисплей. Работает без проблем, но шрифт занимает всю память. Посему решил шрифты поместить во внешнюю память. STM32F0+графический дисплей+SDCard. Карта форматирована в FAT32. Файл со шрифтом найден, но как обучить МК правильно интерпретировать данные из него пока не пойму. Вот фрагмент файла со шрифтом. Когда шрифт вшит в память МК, все адреса известны и поиск нужного изображения символа не представляет труда. А вот когда файл снаружи МК - адреса изображений не существуют вообще. Нужен какой-то особый подход. Вот фрагмент файла, как он виден для МК. Может кто идейку подкинет, как тут быть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 15 апреля, 2021 Опубликовано 15 апреля, 2021 · Жалоба 21 minutes ago, forummailandlogin said: Может кто идейку подкинет, как тут быть Для начала использовать бинарный формат файла. Еще один вариант - упаковать шрифт каким-нибудь простым упаковщиком. Раза в 4 точно ужмётся. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
forummailandlogin 0 15 апреля, 2021 Опубликовано 15 апреля, 2021 · Жалоба aaarrr, не. Хотелось бы сохранить исходное форматирование файла со всеми знаками табуляции и комментариями, а не исходник+компилятор=бинарник. Но предположим, что воспользуюсь этим совет. Сейчас если шрифт внутри МК, то я имею следующее (картинка 1): Таблица tImageDataSymbols содержит адреса структур sImageDataFont_0xXX, которые в свою очередь содержат адреса и параметры изображений выводимых на экран символов cImageDataFont_0xFF. Получая код скажем буквы "ю" равный 0xFE, я забираю поэтому индексу из таблицы tImageDataSymbols адрес структуры sImageDataFont_0xFE и так далее. Но это вам и так понятно, не первый раз меня на мысль наводите. А что будет содержать *.bin файл? Ни разу с ними дело не имел. Упаковщик хорошо, но придётся писать распаковщик. И он не решает первой проблемы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 15 апреля, 2021 Опубликовано 15 апреля, 2021 · Жалоба 2 minutes ago, forummailandlogin said: Хотелось бы сохранить Бесперстивняк. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
forummailandlogin 0 15 апреля, 2021 Опубликовано 15 апреля, 2021 · Жалоба x893, если есть что почитать, прошу поделиться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
evgen.05 0 15 апреля, 2021 Опубликовано 15 апреля, 2021 · Жалоба Fatfs прикручен к МК? Если да, то, как вариант, установить в файле со шифтами фиксированный офсет для заголовка, шрифтов и комментариев. Через фатфс, искать нужный символ и отрисовывать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
forummailandlogin 0 15 апреля, 2021 Опубликовано 15 апреля, 2021 · Жалоба evgen.05, ни чего не прикручено, всё на ассемблере, всё рукописно. Если бы шрифт был бы моножирный, все бы символы одинаковое количество байт бы занимали, то да. Можно конечно решение в лоб попробовать - поиском по буковкам, но времени и памяти отнимет дикое количество. Или скажем кучу файлов создать:"А,а,Б,б,В,в..." и в них уже символы вырисовывать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 35 15 апреля, 2021 Опубликовано 15 апреля, 2021 · Жалоба 42 minutes ago, forummailandlogin said: x893, если есть что почитать, прошу поделиться. Читать с карты будете в память ? На сколько букв хватит памяти (после перекодировки из текста в бинарный формат)? Все буквы не влезут (наверняка) - значит надо читать перед рендерингом буквы (если влезут то проблем нет). Какая при этом будет скорость отрисовки ? Но это надо калькулятор вбрать и считать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
forummailandlogin 0 15 апреля, 2021 Опубликовано 15 апреля, 2021 · Жалоба x893, буфер в SRAM стандартный 512 байт, можно конечно увеличить вдвое, но не хотелось бы больше 1 кБ - СТЕК и другие нужды. Вот именно, но пере тем как букву считать, её надо найти. Так что пока самый перспективный вариант это куча файлов:"А,а,Б,б,В,в..." и в них уже символы вырисовывать. Файлы искать проще чем строки в файлах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 15 апреля, 2021 Опубликовано 15 апреля, 2021 · Жалоба 1 час назад, forummailandlogin сказал: Так что пока самый перспективный вариант это куча файлов:"А,а,Б,б,В,в..." и в них уже символы вырисовывать. Файлы искать проще чем строки в файлах. Самый перспективный - заменить МК на другой, с бОльшим флешем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 34 15 апреля, 2021 Опубликовано 15 апреля, 2021 (изменено) · Жалоба 5 минут назад, jcxz сказал: Самый перспективный - заменить МК на другой, с бОльшим флешем. По моему самый лучший, как раз использовать бинарные данные, уж для скорости отрисовки будет уж точно лучше, чем каждый раз парсить текстовую портянку, да и во флеш лучше влезет... 2 часа назад, forummailandlogin сказал: а не исходник+компилятор=бинарник И почему? Предложите клиенту или тому, кто будет пользоваться, самому ковырятся в этом текстовом файле, исправляя символы? Изменено 15 апреля, 2021 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 15 апреля, 2021 Опубликовано 15 апреля, 2021 · Жалоба 6 минут назад, mantech сказал: По моему самый лучший, как раз использовать бинарные данные, уж для скорости отрисовки будет уж точно лучше, чем каждый раз парсить текстовую портянку, Не понял... Разве у ТС-а шрифты ASCII-строками хранятся? С чего так решили? Они у него и так - бинарные. После компиляции, в памяти программ. Вроде.... хотя конечно чудики всякие бывают... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 34 15 апреля, 2021 Опубликовано 15 апреля, 2021 (изменено) · Жалоба 1 час назад, forummailandlogin сказал: Файлы искать проще чем строки в файлах. Представляете, как это будет быстро? А если нарисовать нужно строку из 20-30 символов? Это будет выглядеть, как бегущая строка)))) 4 минуты назад, jcxz сказал: азве у ТС-а шрифты ASCII-строками хранятся? Так он же писал "Вот фрагмент файла со шрифтом." и там далее 0xff00 и в том духе, в виде текста... А компилить в бинарь он не хочет, что меня удивило. Изменено 15 апреля, 2021 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 15 апреля, 2021 Опубликовано 15 апреля, 2021 · Жалоба 3 минуты назад, mantech сказал: Так он же писал "Вот фрагмент файла со шрифтом." и там далее 0xff00 и в том духе, в виде текста... Я так понял - он здесь говорит про случай, если расположить этот шрифт на SD-карте. А выше у него - кусок ассемблерного исходника (о чём говорят инструкции DCW, DCD) со шрифтами, компилируемого в обычный бинарный образ прошивки. Вот так и нужно делать. Увеличив флешь до нужного размера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 34 15 апреля, 2021 Опубликовано 15 апреля, 2021 (изменено) · Жалоба 12 минут назад, jcxz сказал: Я так понял - он здесь говорит про случай, если расположить этот шрифт на SD-карте. Так даже и на сд карте лучше в бинарном виде сразу делать, ИМХО. 7 часов назад, forummailandlogin сказал: А вот когда файл снаружи МК - адреса изображений не существуют вообще. Нужен какой-то особый подход. Если файл бинарный, то это будет то же самое, что и вшитый в МК, начало файла - это как начало массива во флеш, все адреса будут совпадать. 3 часа назад, forummailandlogin сказал: Упаковщик хорошо, но придётся писать распаковщик. И он не решает первой проблемы. Зачем распаковщик-то нужен?? Это функция вашей программы-отрисовщика... Или "упаковщик" это что-то вроде zip-а, тогда согласен, но большого смысла в этом не вижу. Лет 5 назад был случай, человек спрашивал по шрифтам вопрос, так потом выяснилось, что он поставил упаковку зипом, но не бинарных кодов символов, а их шестнадцатиричных кодов в тексте, и был очень удивлен, когда я сказал ему, что лучше бы сразу преобразовал их в бинарные коды, а уж потом паковал, если еще не влезало Изменено 15 апреля, 2021 пользователем mantech Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться