Кирилица в Adafruit_GFX.h

Тема в разделе "Arduino & Shields", создана пользователем Securbond, 21 фев 2018.

  1. Securbond

    Securbond Гуру

    Здравствуйте, помогите решить проблему.. Код работает все свои функции выполняет, но русский шрифт на матрицу выводит со смещением в один символ. Когда вывожу допустим "Абвг" выводится "Бвгд". ни как не могу победить. Есть ощущение, что проблема тут
    Код (C++):
    /* Recode russian fonts from UTF-8 to Windows-1251 */

    String utf8rus(String source)
    {
      int i,k;
      String target;
      unsigned char n;
      char m[2] = { '0', '\0' };

      k = source.length(); i = 0;

      while (i < k) {
        n = source[i]; i++;

        if (n >= 0xC0) {
          switch (n) {
            case 0xD0: {
              n = source[i]; i++;
              if (n == 0x81) { n = 0xA8; break; }
              if (n >= 0x90 && n <= 0xBF) n = n + 0x30;
              break;
            }
            case 0xD1: {
              n = source[i]; i++;
              if (n == 0x91) { n = 0xB8; break; }
              if (n >= 0x80 && n <= 0x8F) n = n + 0x70;
              break;
            }
          }
        }
        m[0] = n; target = target + String(m);
      }
    return target;
    }
    Всё делал,как описано тут http://arduino.ru/forum/programmiro...t-gfx-i-vyvod-russkikh-bukv-na-displei-v-kodi

    Сам код скетча.
    Код не влез в отведенный размер сообщения, приложил ниже архивом.

    Вывод идёт на самодельную матрицу, раньше всё отображалось как надо.
    Если кто то сталкивался с таким, прошу помочь. СПАСИБО....
    приложу архив с необходимыми файлами
     

    Вложения:

    Voha888 нравится это.
  2. Securbond

    Securbond Гуру

    Вроде нашёл, что нужно поменять в файлике utf8rus. Завтра попробую.

    1C41A308-F88E-4FEE-8BF5-78D19207F13A.jpeg
     
    Voha888 нравится это.
  3. Securbond

    Securbond Гуру

    Последняя версия с комментариями, "как есть". Оставлю тут для Себя.. (всё необходимое в архиве)
     
    Последнее редактирование: 1 мар 2018
    Voha888, Vladis_a, arkadyf и ещё 1-му нравится это.
  4. Securbond

    Securbond Гуру

    ВНИМАНИЕ !!!
    Мой ESP Вешается от этого кода. где то через 50 минут работы !!!
    Если найду причину отпишусь....
     
    Voha888 нравится это.
  5. Securbond

    Securbond Гуру

    Исправлена ошибка приводившая к зависанию модуля ESP.
    Причиной была отправка информации в топик на скорости 16Мгц )).
    Исправил, перенёс отправку вместе с публикацией времени. Теперь всё норм. Обновил на гитхабе.
     
    Voha888, arkadyf и ИгорьК нравится это.