Русификация библиотеки TFT_eSPI
- Войдите на сайт для отправки комментариев
Всем доброго здравия!
Опираясь на тему http://arduino.ru/forum/programmirovanie/rusifikatsiya-biblioteki-adafru...
я сделал попытку русифицировать библиотеку TFT_eSPI:
- заменил файл glcdfont.c
- вставил в код скетча функцию utf8rus
Однако вывести русские буквы все равно не получается. На жк дисплей не выводится ровным счетом ничего.
В монитор порта выводятся квадраты.
Буду благодарен любой помощи.
#include
TFT_eSPI tft = TFT_eSPI();
void setup()
{
// put your setup code here, to run once:
Serial.begin(115200);
tft.init();
tft.setSwapBytes(true);
tft.begin();
tft.fillScreen(TFT_BLUE);
}
void loop()
{
tft.setTextSize(1);
tft.setTextColor(TFT_WHITE);
tft.drawString(utf8rus("йцуфывячс"),0,0,4);
Serial.println(utf8rus("йцуфывячс"));
delay(4000);
}
String utf8rus(String source)
{
int i,k;
String target;
unsigned char n;
char m[2] = { '0', '\0' };
k = source.length();
i = 0;
while (i < k)
{
n = source[i];
i++;
if (n >= 0xC0)
{
switch (n)
{
case 0xD0:
{
n = source[i];
i++;
if (n == 0x81)
{
n = 0xA8;
break;
}
if (n >= 0x90 && n <= 0x30)
{
n = n + 0x2F;
}
break;
}
case 0xD1:
{
n = source[i];
i++;
if (n == 0x91)
{
n = 0xB8;
break;
}
if (n >= 0x80 && n <= 0x70)
{
n = n + 0x6F;
}
break;
}
}
}
m[0] = n;
target = target + String(m);
}
return target;
}
Прошу прощения за плохо форматированный код в пером сообщении. Не нашел кнопки редактора.
Отформатированный код привожу ниже.
Я таки дико извиняюсь, а в используемых фонтах вообще есть русские буквы то?
С библиотекой этой не знаком (и лениво ее даже искать - мне она не надо), но все ей подобные имеют возможность выбора фонтов. В коде не заметил указания на фонты, значит ставит какой то дефолтный (или вообще никакой).
Как то так проблема, я думаю...
Подскажите, удалось руссифицировать библиотеку? Сейчас столкнулся с той же проблемой.
К сожалению нет, не удалось.
Вопрос остается актуальным, но пока работы по проекту временно остановлены.
К сожалению нет, не удалось.
вы на вопрос в сообщении #2 так и не ответили. В фонтах библиотеки есть русские буквы? - если нет, редактировать код бессмысленно, надо сначала найти фонты с кириллицей
У меня в фонтах есть библиотека с кирилицей. Например TimesNRCyr14, но не могу ее нормально использовать. Подключаю, она точно активна, но русские буквы не выводит. Если в скетче вместо букв использовать код символов, например \x9f\xa0\x98\x92\x95\xa2 на tft экране выведет ПРИВЕТ.
значит у вас неправильная кодировка в Ардуино ИДЕ. Там в редакторе есть кнопка "Исправить кодировку и перезагрузить" - попробуйте с ней
Какая должны быть кодировка? У меня VSCode и PlatformIO, кодировки скетча менял через notepad++ и сохранял, так как не нашел в VS как сменить. Пробовал кодировку скетча win-1251? koi-8r, utf-8 - результат один, нет символов на экране. Уже задумываюсь в библиотеке изменить значения латинских букв на кирилицу и использовать так. ну типа пишешь F - а на экране А...
Какая должны быть кодировка?
Вопрос на 100 рублей :) .... у вас функция перекодировки называется utf8rus()
если у вас вот это - \x9f\xa0\x98\x92\x95\xa2 - работает и на tft экране выведет ПРИВЕТ - значит в принципе библиотека работает и вся проблема только в кодировке. Тут уже смешно спрашивать в форуме, тут надо садиться и искать. что у вас портит кодировку.
Да понятно что логичную кодировку файла я испробовал). И не только ее...Не едут лыжи и все тут.
Не едут лыжи и все тут.
еще посмотрите, какая кодировка в фонте и совпадает ли она с выходной кодировкой конвертера utf8rus()
Спасибо, разобрался.... Функция utf8rus была кривая. Уже и не вспомню откуда брал ее, но с какого-то соседнего форума....
Поменял ее на ту что в этой ветке - все заработало. Спасибо
Скетч и русские шрифты. Проверял на esp32.
https://cloud.mail.ru/public/UvrQ/hphncmznm
Скетч и русские шрифты. Проверял на esp32.
https://cloud.mail.ru/public/UvrQ/hphncmznm
скажите чем конвертируете TTF (OTF) шрифты в VLW формат (который у вас в архиве)?