Наред с другите неща, cp437font8x8 krupnovat за малък екран 128x64 пиксела. Оптималният размер на шрифта за отпечатване на такива спомагателни дисплея остава System5x7. Ние тук се фокусира върху русификацията е шрифтът на системата, въпреки че читателят може по този модел се russify и всякакви други шрифтове (особено ако тя е по-екран).
Какъв е проблемът?
По време на тази трансформация, като всеки символ, както и всяка програма на всеки език за програмиране, тя е пряко под формата на своя код, т.е., с пореден номер в таблицата на шрифта, от който програмата извлича графичен знак на съответния символ. файл openGLCD System5x7.h шрифта библиотека Номерът на знаци, представени от тип променлива font_Char_Count uint8_t на. т.е. не може да надвишава един байт. Ето защо, символи на кирилица са в UTF-8 да бъде на два байта. Те не могат да бъдат прехвърлени към контролера по конвенционален начин.
Предишните опити за решаване
Новите версии на Arduino IDE става все по-трудно. Библиотека решително отказва да разбере двубайтовите герои номера, показване вместо празно място, защото просто промяна на шрифта, там не е достатъчно. Ние трябва да добавите към него функция на преобразуване на двубайтови символи в един байт.
Например, руските писма до капитал замяна низ "F" ще бъдат:
Има 0xA4 - ниско байт писмо кодиране "F" в UTF-8 (виж позоваване по-горе.). В съответствие с това кодиране компилиран System5x7R.h нов шрифт файл. По принцип такъв подход в шрифта, можете да използвате всеки кодирането на знаците български и всякакви други глифове, че е угодно вмъкнете в шрифта. Ако само общия размер на не повече от 128 парчета от началото на таблицата, докато символът 0x7f (127 - стандартен ASCII таблицата последната характер), е препоръчително да напусне шрифта непокътнати.
Въпреки това, няколко свободи с таблицата на ASCII Аз в момента са позволени. Факт е, че в оригиналния шрифт System5x7.h степен символ изваден в последния ред на таблицата, като характера 0x80, което вече имаме отнася до кирилицата. За да не се нарушават реда строителство маса кирилица според UTF-8, тази линия хвърлен от файл. степен символ A прикрепен вместо знаци ASCII "
"(Брой 0x7E), който е в шрифта все още не се използва по предназначение. Но това заместване позволява да въведете символ за градус в скица текст директно от клавиатурата под формата на знак "
Схема на свързване MT-12864J
Променлива резистор R1 е свързан в съответствие с препоръките на производителя. и резистор R2 служи за ограничаване на тока осветлението, когато не е свързан с напрежение 5V и директно към източника на мощност (продукция Vin Arduino) с по-високо напрежение.
Пример показване на MT-12864J български смесен с латиница и цифри и икона градуса е показано на снимката:
Текстът на скица за този пример:
Текстът на скица с оттеглянето на българската азбука
Тъй като файлове и печат outstr.h System5x7R.h функция поставен в основната директория на модернизирана библиотека, а след това те трябва да се поставят някои връзки в началото на скицата с помощта на директивата за #include. За английските надписи удобно продължите да използвате стандартните функции println / печат. но трябва да укажете в символ «\ н» с нов ред нужда в текста на български език на.
Може би това ще работи, но най-вероятно не. Опитах се да се намали алгоритъм във всеки един, разбира се (виж изх. Arduinec'a в началото на статията). Възниква - Лесно подмяна на реда код елементи. Но никакъв начин той не работи - това се дължи на факта, че оригиналният двубайтовите героите. тип низ Strings аз, честно казано, не се опита, но аз съм сигурен, че ще има един и същ: никой не казва, че String поддържа двубайтови знаци (това със сигурност не се поддържа - има елементи от тип въглен). Защото аз изплю на удоволствията, които са оставили куп време и става с тъп, промяна на героите директно - нека компилаторът разбира себе си. Също така, защото начинът, по който намаляването на работното време все още няма да работи, ще бъде само до намаляване на изходния код.
Свързани статии