E-ink дисплей и киррилица
- Войдите на сайт для отправки комментариев
Вс, 16/09/2018 - 22:36
Есть процедура которая формирует рисование буквы на экране:
/** * @brief: this draws a charactor on the frame buffer but not refresh */ void Paint::DrawCharAt(int x, int y, char ascii_char, sFONT* font, int colored) { int i, j; unsigned int char_offset = (ascii_char - ' ') * font->Height * (font->Width / 8 + (font->Width % 8 ? 1 : 0)); const unsigned char* ptr = &font->table[char_offset]; //16 Height, 11 Width for (j = 0; j < font->Height; j++) { for (i = 0; i < font->Width; i++) { if (pgm_read_byte(ptr) & (0x80 >> (i % 8))) { DrawPixel(x + i, y + j, colored); } if (i % 8 == 7) { ptr++; } } if (font->Width % 8 != 0) { ptr++; } } } /** * @brief: this displays a string on the frame buffer but not refresh */ void Paint::DrawStringAt(int x, int y, const char* text, sFONT* font, int colored) { const char* p_text = text; unsigned int counter = 0; int refcolumn = x; /* Send the string character by character on EPD */ while (*p_text != 0) { /* Display one character on EPD */ DrawCharAt(refcolumn, y, *p_text, font, colored); /* Decrement the column position by 16 */ refcolumn += font->Width; /* Point on the next character */ p_text++; counter++; } }
Данная процедура обращается к таблице массиву шрифта где буква представляет собой цепочку 0x42, 0x00, 0x42, 0x00, и т.д. и т.п.
Если добавить в конец массива цепочки своих букв - при попытке написать русскими буквами на экране увы выводится все что угодно, только не буквы. Помогите добавить русский шрифт. Если не в шрифт с английским языком, пусть хотябы отдельно.
А ежели вместо английских букв свои нарисовать, то все ОК - так? Если не хотите всю библиотеку перепахивать, то создайте свой
И передавайте указатель на него в библиотечные функции.
Да это все не проблема, могу переписать или создать свою, речь о том что если передать вместо латиницы строку в которой написать русскими буквами - то не работает. Т.е.:
Не работает, а если писать английскими работает. Просто хочу писать по-русски вместо Ghbdtn (Привет).
...вопрос-то в чем? Не понимаете, почему UTF-8 не хочет впихиваться в char?
...вопрос-то в чем? Не понимаете, почему UTF-8 не хочет впихиваться в char?
Да, как сконвертировать и скормить аналогичный английскому русский шрифт?
Поверьте - проще писать транслитом, чем страдать с преобразованиями кодировок на мелком МК.
Поверьте - проще писать транслитом, чем страдать с преобразованиями кодировок на мелком МК.
Да это все понятно, речь лишь об удобстве.
Ну, если все понятно, то ничем более помочь не могу. Arduino IDE вкрячивает UTF-8 вместо русских букв, если я не ошибаюсь. Сделайте какой-нить функцию-маппер UTF-8 -> Russian Font , в скетче прогоняйте через нее свою строку с приветом и передавайте результат на отрисовку.
Ну, если все понятно, то ничем более помочь не могу. Arduino IDE вкрячивает UTF-8 вместо русских букв, если я не ошибаюсь. Сделайте какой-нить функцию-маппер UTF-8 -> Russian Font , в скетче прогоняйте через нее свою строку с приветом и передавайте результат на отрисовку.
Ну если бы я мог самостоятельно такое написать я бы не стал просить помощи на форуме.
Преобразование UTF-8 в Win-1251 описано здесь:
http://arduino.ru/forum/programmirovanie/rusifikatsiya-biblioteki-adafru...