Skip to content
This repository has been archived by the owner on Feb 16, 2025. It is now read-only.

Окно лога

AlexGyver edited this page Oct 2, 2022 · 2 revisions

Встроенный log

В библиотеке реализована возможность делать print() в специальное окно лога на странице:

  • Окно лога можно создать только одно
  • Обновление происходит автоматически, раз в секунду
  • Обновление происходит без перезагрузки страницы
  • Можно отправлять любые данные, как Serial (print(), println())
  • Читать лог может только один клиент (браузер, на котором открыта страница). Если открыть с двух браузеров - данные будет получать только один из них!

Подключение окна лога

Добавляем GP.AREA_LOG(к-во строк) в нужное место страницы

Запуск лога

Вызываем portal.log.start(размер буфера). Размер буфера по умолчанию 64 символа

  • Примечание: это размер буфера на стороне библиотеки, то есть ограничение на количество символов на одну отправку на страницу (раз в секунду). У страницы браузера свой буфер для отображения текста!

Вывод данных

Просто вызываем portal.log.print() или portal.log.println() как у обычного Serial.

См. пример demoLog

Ручной log

В этом случае можно создать несколько объектов логов, которые будут работать параллельно друг другу. Нужно:

  • Создать объект GPlog лог("имя");
  • Запустить: лог.start(); или лог.start(размер_буфера);
  • В конструкторе вызвать GP.AREA_LOG(лог);
  • В обработчике действий ответить на обновление update специальным обработчиком updateLog(лог);
  • В любом месте программы печатать в лог, как в монитор порта лог.print() или лог.println()
GPlog glog1("log1");
GPlog glog2("log2");

void setup() {
  glog1.start(30);   // передали размер буфера
  glog2.start();
}

void build() {
  GP.BUILD_BEGIN();
  GP.THEME(GP_DARK);

  GP.AREA_LOG(glog1);
  GP.AREA_LOG(glog2);

  GP.BUILD_END();
}

void action() {
  if (portal.update()) {
    portal.updateLog(glog1);
    portal.updateLog(glog2);
  }
}

void loop() {
  glog1.print(123123);
  glog2.println(456456);
}

См. пример demoLogManual

Clone this wiki locally