Дисплей Nextion: азы. Arduino, ESP8266.

Тема в разделе "Глядите, что я сделал", создана пользователем ИгорьК, 9 авг 2016.

Метки:
  1. ИгорьК

    ИгорьК Давно здесь

    Научись хотя бы код в тему вставлять.
     
  2. timon131

    timon131 Нуб

    Часть кода у меня вставлена нормально, просто с опечаткой. Это дураку понятно, что с такой опечаткой он бы не работал. А у меня он работает... я же конкретно задал вопрос: Почему кнопка не всегда с первого раза включает реле, т.е не всегда проходит код с кнопки, а иногда просто шлет ???...
     
  3. alp69

    alp69 Гик

    Юноша, не хамите! Не надо оправдывать свои ошибки предполагаемой Вами (весьма ошибочно) необразованностью собеседника. Если Вы такой умный, то что же тогда за помощью обратились?Прежде чем пытаться скатиться на оскорбления, устраните кривизну своих рук. И научитесь излагать свои мысли так, чтобы собеседник не должен был догадываться о сути Вашего вопроса. Если Вам нужен ясновидящий - меняйте форум.
    На этом считаю для себя неприемлемым продолжение попыток помощи Вам.
     
    Последнее редактирование: 13 май 2018
    9xA59kK нравится это.
  4. Belkin

    Belkin Гик

    При добавлении изображения на объект Button уже имеющегося проекта на изображении (поверх) проявляются черные буквы "ne". Дальше не видно из-за маленького (100х100) объекта...
    Да и сами буквы видны на 70-75% сверху, нижняя часть скрыта.
    Так же они видны и при Debug...
    Программа при этом отрабатывает нормально.
    На самом изображении этих букв нет...
    Кто сталкивался, что за дрянь ?

    UP.
    Вопрос решен.
    Вместо Button использован Picture.
    Видимо, есть ограничение на количество однотипных объектов, Button было 12, а проблемный стал 13-м. ;)
     
    Последнее редактирование: 10 июн 2018
  5. Jendos77

    Jendos77 Нерд

    Благодарю!
    Проект теперь парсит целые строки с названиями городов и паролями WIFI в настройках метеостанции.
    Код (C++):

    void getNextionData()
    {
      while (Serial.available())
      {
      char inn = Serial.read(); // читаем один символ
      if(serialReadFlag)
      { // Если установлен флаг приема - действуем
      if(inn == 0xFF)
      {  // Находим конец передачи "FF"
      if(inStr.length() > 0)
      { // Проверяем длину сообщения и отправляем в "переработку"
      checkCommand(inStr); // В этой функции будем парсить сообщение
      }

      serialReadFlag = false; // Сбрасываем флаг приема
      break;
      }else
      { // А это нормальный прием
      inStr += (char)inn; // Создаем String от Nextion
      //inStr.trim();  // Это можно удалить, просто для ручной настройки,
      // а там возникает перевод строки
      }
      }else
      { // А здесь отлавливается начало передачи от Nextion
      if(inn == 0x23)
      { // Символ "#"
      serialReadFlag = true; // После # начинаем чтение при следующем заходе
      inStr = ""; // Но до этого очистим стринг приема

      }
      }
      }
    }
    void checkCommand(String ins)
    {
      // У нас информация от Nextion состоит из двух частей,
      // первая буква - идентификатор действия
      // ловим его:
      String first = ins.substring(0,2);
      // А все остальное - данные:
      String last = ins.substring(2);

      if(first == "1p")
      {
      String city = last;
      }
      if(first == "2p")
      {
      String state = last;
      }
      WOUpdate = true;
    }
     
     
    ИгорьК нравится это.
  6. Чего-то запутался с отрицательными числами, в итоге плюнул. Вычесть из 100 значение (отрицательное или положительное), а на другой стороне провести обратную операцию оказалось проще.
     
  7. Belkin

    Belkin Гик

    А если повнимательнее почитать доки, то выяснится, что Nextion работает только с целыми положительными числами...
    И плеваться не пришлось бы... ;)
     
  8. Библиотека не работает, а сам Nextion - на ура
     
  9. DIYMan

    DIYMan Гуру

    Думаю, всем известно, что несмотря на убого выглядящие шрифты Nextion - поддержка кириллицы там есть, для этого достаточно указать ISO-8859-5 в настройках проекта, как кодовую страницу для шрифтов.

    Но беда в том, что лично у мну, например, все исходники прошивок хранятся в кодировке UTF-8, соответственно, послав в UART Nextion пакет вида t0.txt="тут UTF-8" - ничего не выйдет, в текстовом поле будут кракозябры. В общем, функция ниже - конвертирует из UTF-8 в ISO-8859-5 - и уже сконвертированную строку мона смело пулять в Nextion - и он послушно будет отображать русский текст.

    Код (C++):
    String convert(const char* in)
    {
        String out;
        if (in == NULL)
            return out;

        uint32_t codepoint = 0;
        while (*in != 0)
        {
           uint8_t ch = (uint8_t) (*in);
            if (ch <= 0x7f)
                codepoint = ch;
            else if (ch <= 0xbf)
                codepoint = (codepoint << 6) | (ch & 0x3f);
            else if (ch <= 0xdf)
                codepoint = ch & 0x1f;
            else if (ch <= 0xef)
                codepoint = ch & 0x0f;
            else
                codepoint = ch & 0x07;
            ++in;
            if (((*in & 0xc0) != 0x80) && (codepoint <= 0x10ffff))
            {
                if (codepoint <= 255)
                {
                    out += (char) codepoint;
                }
                else
                {
                  if(codepoint > 0x400)
                    out += (char) (codepoint - 0x360);
                }
            }
        }
        return out;
    }
    Возможно, кому-то будет полезно.
     
    Mitrandir, Belkin и ИгорьК нравится это.
  10. Moofasta

    Moofasta Нуб

    Добрый день, у кого-то получилось дебаггер некстион подключить к ардуино напрямую, как здесь упоминалось?.... можно инструкцию, а то уже все варианты перепробовал, он только с панелью согласен дружить
     
  11. Mitrandir

    Mitrandir Гуру

    Можно ли научить есп скачивать прошивку дисплея и заталкивать её в экран?
     
  12. ИгорьК

    ИгорьК Давно здесь

    Можно, поскольку работа идет через uart. Надо только протокол загрузки отреверсить, да чтобы памяти хватило. А так - плевое дело.
     
  13. Mitrandir

    Mitrandir Гуру

    Т. Е. Он закрытый?

    З. Ы. Хотя можно сделать есп прокси. Редактор что-то шлёт по юарт одной есп та передаёт по вафле второй, та засылает в экран. А что идёт там не важно.
     
    Последнее редактирование: 15 авг 2018
  14. ИгорьК

    ИгорьК Давно здесь

    Понятия не имею. Как начинается работа с дисплеем? SD карточка загружается... Соединяем с компьютером через USB-UART переходник и грузим проект. Там как-то происходит опознание "свой/чужой" и какими-то порциями грузятся данные.
    Цепляем логический анализатор и сразу все понятно. Осталось сделать. Кому нуДно.
     
  15. Mitrandir

    Mitrandir Гуру

    Вот, нашёл ответ на свой вопрос.

    https://www.itead.cc/blog/nextion-hmi-upload-protocol

    Хочу сделать универсальный джойстик для своих поделок, два рычага, пара кнопок и экран с кастомными контролем под устройство. Экран передаёт юарт команду еспшке, та транслирует исполнителю. Всё контакты вне доступа, хочется перепрошивать дисплей еспшкой. Т. Е. Есп словила по вафле прошивку и передала экрану.
     
    ИгорьК нравится это.
  16. Mitrandir

    Mitrandir Гуру

    У экрана есть перменная sendxy в порт отправляются координаты тыка. Но увы он не отправляет данные при движении пальца по экрану. Сначала я решил,, что экран не умеет фиксировать движения пальца.
    Но прочитав вики нашел инструкцию thdra=1 .При этом пальцем можно рисовать линию. Следовательно движения пальцем можно регистрировать. Вопрос как линию передать в мк. В эмуляторе ничего не передаётся. Хочу сделать вытаскиваемую шторку как в андроиде
     
  17. DIYMan

    DIYMan Гуру

    Стесняюсь спросить - на какой event вешаете вызов sendxy?
     
  18. Mitrandir

    Mitrandir Гуру

    Page initialised
     
  19. DIYMan

    DIYMan Гуру

    на touch press event - не?
     
  20. Mitrandir

    Mitrandir Гуру

    Так sendxy=1 это установка переменной
     
    DIYMan нравится это.