Пока боролся с несколькими жидкокристаллическими индикаторами от разных контор, разными путями попавшими в мои руки, попутно нарисовался пакет для сборки плагинов к gconv (оно же iconv) с дополнительными кодировками. Выкладываю сюда ибо больше некуда (домашняя страница? Увольте, ленив-с).
Какой смысл в добавлении этих кодировок в iconv? Смысл очень простой - теперь можно писать программы на C в любой кодировке, а при компиляции достаточно указать опции -finput-charset=<кодировка текста программы> -fexec-charset=<кодировка строк в выходных файлах>. В этом случае gcc автоматически преобразует все текстовые строки (и только их) в кодировку Вашего ЖК индикатора.
Простой пример для наглядности:
#include "hd44780.h"
#include <avr/pgmspace.h>
int main ()
{
hd44780_init (HD44780_FNSET (0, 1, 0), HD44780_DISPCTL (1, 1, 0));
lcd_gotoxy (0, 0);
lcd_puts_P (PSTR ("Превед, медвед!"));
return 0;
}
Не углубляясь в суть библиотеки hd44780 заметим, что строка на русском задана без всяких извращений, напрямую. Теперь надо правильно скомпилировать данную программу:
avr-gcc -c -o tlcd.out -mmcu=atmega168 -Os -finput-charset=cp1251 -fexec-charset=ks0066-ru tlcd.c
Вот и всё, прошиваем программу и она работает как ожидалось.
Скачать последнюю версию модулей кодировок можно всегда здесь. В архиве первым делом открываем файл README (он в кодировке UTF-8) и читаем, там много дополнительной информации, которую сюда дублировать не буду.
На текущий момент поддерживаются четыре кодировки: Hitachi HD44780 страница А02 (туда входят русские буквы), русская кодировка контроллера KS0066 (большинство ЖКИ фирмы WinStar, которые у нас продаются, используют эту кодировку) а также две кодовые страницы контроллера К1013ВГ6, которые использует в своих ЖКИ модулях фирма МЭЛТ.
Ниже буду вести журнал изменений библиотеки; новые версии буду выкладывать сюда же, добавляя в журнал заметки о изменениях.
- Версия 0.1.9. Первая публичная тестовая версия.
November 5 2009, 08:42:10 UTC 2 years ago
codevision
задумка супер!Как подключить и пользоваться в Codevisoon подскажите!
November 6 2009, 09:11:12 UTC 2 years ago
Re: codevision
А я не знаю что такое codevision.Это работает у меня под линуксом. Тут есть такая библиотека iconv, она заведует всеми кодировками в системе. И, соответственно, компилятор avr-gcc пользуется ей когда ему указываешь опции перекодирования.