Как изменить формат времени на ЖК-экране в Marlin 2.1?

Как заменить линию на дисплее времени точкой? Использование Марлин 2.1

Фото ЖК-дисплея 3D-принтера с обведенным временем

, 👍2


1 ответ


Лучший ответ:

1

Апостроф или одинарная кавычка официально используются для обозначения минут, если их две, это указывает на секунды (но на изображении из вопроса двойные кавычки не видны).

Замена одинарной кавычки на десятичную не является хорошей идеей для отображения времени, поскольку следующее число указывается в секундах, а не в долях минуты.

В любом случае оставшееся время преобразуется из числа в удобочитаемый формат с помощью toDigital() файла duration_t.h (ссылаясь на ветку исправления ошибок Marlin 2.1). Даже с небольшими навыками программирования, если легко найти, где и что вы хотите изменить (подсказка, см. комментарий: // 12'34), функция приведена для справки ниже:

uint8_t toDigital(char *buffer, bool with_days=false) const {
    const uint16_t h = uint16_t(this->hour()),
                   m = uint16_t(this->minute() % 60UL);
    if (with_days) {
      const uint16_t d = this->day();
      sprintf_P(buffer, PSTR("%hud %02hu:%02hu"), d, h % 24, m);  // 1d 23:45
      return d >= 10 ? 9 : 8;
    }
    else if (!h) {
      const uint16_t s = uint16_t(this->second() % 60UL);
      sprintf_P(buffer, PSTR("%02hu'%02hu"), m, s);     // 12'34
      return 5;
    }
    else if (h < 100) {
      sprintf_P(buffer, PSTR("%02hu:%02hu"), h, m);     // 12:34
      return 5;
    }
    else {
      sprintf_P(buffer, PSTR("%hu:%02hu"), h, m);       // 123:45
      return 6;
    }
  }

,