Nextion Editor не меняется цвет текста

marchello66

✩✩✩✩✩✩✩
29 Май 2020
1
0
Всем доброго времени суток.

Столкнулся с проблемой при эмуляции экрана в редакторе NextionEditor.
Дело в следующем, сделал связку Proteus (там ардуино мега) - NextionEditor (там NX8048T050_011) через виртуальные com-порты. Сама связка работает, все данные передаются и принимаются во все переменные (библиотеку nextion.h не использую)
Все работает, кроме изменения цвета текста, вернее он меняется всего один раз.
Т.е. вначале при создании тестового поля был установлен белый цвет на синем фоне (subtitle.bco = 1055, subtitle.pco = 65535), затем он менялся на зеленый ( нужно было при правильном исходе алгоритма) с помощью функции NXSendInt("Settings3.subtitle.pco", 2016), но когда я отправляю уже другой цвет с другим текстом, цвет не меняется, текст при этом заменяет. Побовал ref id, не помогает, т.к. это для зависших полей, а это поле текст принимает нормально, только цвет перестает обновлять.
C++:
  if (connecting)
    if (millis() - timing2 > 500) {
      timing2 = millis();
      Serial2.print(module + '#');
      if (poll_count > 3) {
        String str = Convert("Модуль не найден");
        NXSendInt("Settings3.subtitle.pco", 63488);  // <<<<< ЗДЕСЬ ПЕРЕДАЕТСЯ ЦВЕТ - НЕ работает
        NXSendStr("Settings3.subtitle.txt", str);  //<<<<< ЗДЕСЬ ПЕРЕДАЕТСЯ ТЕКСТ - работает
      }
      poll_count++;
      Serial.println(poll_count);
    }

  if (stringComplete2) {
    if (inputString2.indexOf("OK") >= 0) {
      if (connecting) {                                           // режим проверки модулей
        poll_count = 0;
Вот сами функции передачи, это чтобы вопросов не было, что данные не правильно передаются
C++:
void NXSendInt(String dev, int data)
{
  Serial1.print(dev);
  Serial1.print("=");
  Serial1.print(data);
  Serial1.write(0xff);
  Serial1.write(0xff);
  Serial1.write(0xff);
  dev = "";    // Очищаем переменную
  data = "";   // Очищаем переменную
}

void NXSendStr(String dev, String data)
{
  Serial1.print(dev);
  Serial1.print("=");
  Serial1.print("\"" + data + "\"");
  Serial1.write(0xff);
  Serial1.write(0xff);
  Serial1.write(0xff);
  dev = "";    // Очищаем переменную
  data = "";   // Очищаем переменную
}
Convert это функция преобразования кодировки, чтобы русские нормально выводились на экран
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;
}
Кто посоветует решение, цвет поменять необходимо, чтобы привлечь внимание оператора к потере связи с удаленным модулем.

С уважением, Марк
 
Изменено: