Приветствую, народ ! Подскажите есть ли библиотека на JS для перекодировки сообщений "на лету" на кириллице в коды lcd дисплея ? Дисплей Мэлт 20*4 (hd44780), кириллица прошита, плата Iskra JS. Если таковой нет, буду признателен за ссылку на библиотеку С/С++ которая делает тоже, с целью переписать на JS.
Сообщение на кириллице может быть в кодировке UTF-8, WIN1251, KOI8-R, PC866 и т.д. Ваши сообщения в какой кодировке?
Такой библиотеки нет, все програмеры пишут на английском и думаю, что весь мир пользуется только им! Т.е. библиотека работает только с англоязычной частью знакосентизатора, а русский вы обязаны скармливать контроллеру дисплея в виде кодов таблицы знакосинтезатора http://files.amperka.ru/datasheets/MT-20S4A.pdf Библиотека под Андруино: http://arduino.cc/en/Reference/LiquidCrystal. ПС Сам нарвался и таких мелочей море, я по тому и поднял тему: http://forum.amperka.ru/threads/Обращение-к-Амперке-Необходимы-политические-изменения-в-работе-Вики-Форума-и-тех-поддержки.10548/#post-100183
В МЭЛТ MT–16S2H (http://files.amperka.ru/datasheets/MT-16S2H.pdf) страница 1 кодировка Windows 1251. Страница 0 собственная кодировка. Из кириллической части таблицы убраны символы которые по начертанию можно заменить символами из латиницы. К сожалению коды оставшихся символов не совпадают с Windows 1251.
Так это всегда так, в ПЗУ знакогенератора ЖКИ место не резиновое. Библиотеку под JS и С++ дописывать надо, там просто кириллистическая часть кодов знакогенератора не используеться.
Не помню где но где то видел информацию, что кириллица занимает 2 байта, соответственно получается utf-16. Вывод одного кириллического символа на мой дисплей приводит к отображению ровно двух кракозябр, например "гав" привет к выводу чего то типа ",т,я,й"
Что касается "скармливать контроллеру" это понятно, собственно я и спрашивал код готовой ф-и которая это делает. Приведенную вами библиотеку я ранее (правда по диогонали) смотрел, но то что мне нужно (перекодирование кириллицы в utf 16 -> код знакогенератора hd44780) я там не видел можно название ф-и ?
2 байта не обязательно UTF-16. UTF-8 тоже многобайтовая кодировка. Из Windows приложения вполне возможно поступает UTF-16. Чтобы перекодировать все символы юникода в МК памяти не хватит.
http://www.cyberforum.ru/cpp-beginners/thread800577.html Пример кода функции convert_utf8_to_windows1251 и таблица g_letters есть. Если пользовать страницу 0, пропишите в таблицу g_letters в первой колонке нужные коды.
собственно ф-я готова, для удобства хочу переобределить класс hd44780, если кому нужно пишите в личку скину рабочий вариант
Выкладывайте прямо в теме плиз желательно на первую страницу, бо очень многим актуально! Амперка обещает нормальный FAQ пополняемый нами со временем перенесёте туда.
По ссылке ниже выложил класс перекодировщик с примером: https://1drv.ms/f/s!Ai6_XjVSmIA6g4oeCEXhJw1NPBUEng файл cyrillic utf to lcd code v1.21.js
а самому написать? - там кода буквально 5-7 строчек Вот пример перевода кодировки Ардуино ИДЕ в пользовательсткую, делайте по аналогии Код (C++): int utf8_rus(char* dest, const unsigned char* src) { uint8_t i, j; for ( i =0, j =0; src[i]; i++) { if ((src[i] == 0xD0 )&& src[i+1]) { dest[j++] = src[++i] - 0x10;} else if ((src[i] == 0xD1 )&& src[i+1]) {dest[j++] = src[++i] + 0x30; } else dest[j++] = src[i]; } dest[j] ='\0'; return j; }