Az arduino openglcd könyvtárának oroszlázása

Többek között a cp437font8x8 nagyméretű 128x64 képpontos szűrőkhöz. A kijelzőn megjelenő kiegészítő címkék optimális betűmérete a System5x7. A rendszer betűtípusának oroszlánosítására koncentrálunk, bár az olvasó bármilyen más betűtípust is rögtönözhet (különösen, ha nagyobb képernyője van).

És mi a probléma?

Az átalakítás folyamatában minden szimbólum, mint bármelyik programozási nyelvben, közvetlenül a kódja formájában jelenik meg, vagyis annak a betűtípus-táblázatnak a sorszáma, amelyből a program kivonja a megfelelő szimbólum grafikus vázlatát. Az openGLCD könyvtár betűtípus-fájljában System5x7.h a karakterek számát az uint8_t típusú font_Char_Count változó képviseli. azaz nem lépheti túl az egy byte értékét. Ezért cirill karakterek, amelyek az UTF-8-ban két bájtot foglalnak el. a szokásos módon nem vihető át a vezérlőre.

Korábbi megoldási kísérletek

Az Arduino IDE újabb verzióiban a dolgok bonyolultabbá váltak. A könyvtár határozottan megtagadja a kétbájtos karakterszám megértését, helyette üres helyet jelenít meg, ezért nem teheti egyszerűen a betűtípus módosítását. Szükséges annak kiegészítése a kétbájtos karakterek egybájtos karakterekkel való átkódolásával.

Például a főváros orosz "F" betűje esetén a helyettesítési sor:


Itt 0xA4 az UTF-8 "F" betű kódolásának kis byte-ja (lásd a fenti hivatkozást). Ennek a kódolásnak megfelelően összeállított egy új System5x7R.h betűtípust. Elvileg a betűtípussal ez a megközelítés használhatja az orosz karakterek kódolását és bármely más karaktert, amelyet be akarsz illeszteni a betűtípusba. Ha csak a teljes összeg nem több, mint 128 darab elejétől a táblázat, amíg a karakter 0x7F (127 - az utolsó karakter szabványos ASCII tábla), tanácsos elhagyni a font ép.

Igaz, megengedtem magamnak néhány szabadságát az ASCII asztalnál. Az a tény, hogy a System5x7.h eredeti betűtípusban a mértségi ikon az asztal utolsó sorába kerül, a 0x80 szimbólumot foglalja el, amit már cirillicusnak nevezünk. Annak érdekében, hogy az UTF-8 szerint ne cir rítsák meg a cirill asztal felépítésének sorrendjét, ez a sor ki van dobva a fájlból. Az ASCII karakter helyett a fokozat ikonja kerül hozzáadásra. "

"(0x7E szám), amely a betűtípusban még mindig nem használt célra. De egy ilyen csere lehetővé teszi, hogy a vázlatszövegből a szimbólumot közvetlenül a billentyűzetből a "

MT-12864J kapcsolási rajz



Az R1 változó ellenállást itt a gyártó ajánlásának megfelelően csatlakoztatjuk. és az R2 ellenállás korlátozza a háttérvilágítás áramát, ha nincs csatlakoztatva 5 V feszültséghez, hanem közvetlenül a magasabb feszültségű bemenő tápellátáshoz (Vin Arduino kimenet).

Például az MT-12864J orosz ábécé megjelenítésének példája, a latin ábécével, valamint a számjegyekkel és a fokmérőkkel összekeverve:


A vázlat szövege ehhez a példához:

A vázlat szövege az orosz ábécé kimenetével


Mivel a fájlok és nyomtatott outstr.h System5x7R.h funkció kerül a gyökér könyvtárat a modernizált könyvtár, akkor kell helyezni néhány link elején a vázlat segítségével az #include direktíva. Az angol nyelvű feliratok esetében célszerű továbbra is használni a szabványos nyomtatási / nyomtatási funkciókat. de ha olyan szöveget kell lefordítania az orosz szövegben, akkor kifejezetten meg kell adnia a "\ n" karaktert.

Lehet, hogy működni fog, de valószínűleg nem. Próbáltam, hogy csökkentsék az algoritmus minden, természetesen (lásd ref. Arduinec'a elején a cikket). A sor kódjának egyszerű cseréje - kér. De semmiképpen sem működött - éppen azért, mert az eredeti karakterek kétbájtosak. típusa String Strings én, őszintén szólva, nem próbálja meg, de biztos vagyok benne, nem lesz ugyanaz: senki sem mondja, hogy a karakterlánc támogatja a kétbájtos karaktereket (amely minden bizonnyal nem támogatott - azt elemeinek típusa char). Mert én köpött a finomságokat, ami maradt egy halom időt, majd tompa, változtassa meg a karaktereket közvetlenül - hagyja, hogy a fordító megérti önmagát. És mivel egyébként, hogy a munkaidő csökkenése még mindig nem működik, csak a forráskód csökkenése lesz.

Kapcsolódó cikkek