• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Отключение вывода в Serial

Melandr

Member
Добрый день!
Такой вопрос, при прошивке через OTA и не подключенном UART ESP8266 смысла в инициализации и выводе сообщений через Serial - нет. Не подскажите как можно отключить вывод в Serial, чтобы не компилировался лишний код? Есть ли какие-то функции в библиотеке Serial. Насчет условной компиляции знаю
Код:
#define DEBUG 1
void setup() {
#if (DEBUG == 1)
  Serial.begin(9600);
  Serial.println("Hello!");
#endif
}
но хотел узнать, может есть более красивое решение, например, вывод отладочной информации по WiFi, при недоступности UART. Или полное отключение вывода. Где-то попадалось интересное решение замена Serial на Debug, но не могу найти.
 

Melandr

Member
Нашел на просторах интернета, вот другим на заметку
Код:
#define USE_SERIAL Serial
....
USE_SERIAL.begin(115200);

USE_SERIAL.println();
USE_SERIAL.println();
USE_SERIAL.println();
Красиво и изящно
 

Melandr

Member
Что-то я рано радовался, при комментировании
#define USE_SERIAL Serial
компиляцию не проходит, какой тогда смысл в такой конструкции?
 

nikolz

Well-known member
Добрый день!
Такой вопрос, при прошивке через OTA и не подключенном UART ESP8266 смысла в инициализации и выводе сообщений через Serial - нет. Не подскажите как можно отключить вывод в Serial, чтобы не компилировался лишний код? Есть ли какие-то функции в библиотеке Serial. Насчет условной компиляции знаю
Код:
#define DEBUG 1
void setup() {
#if (DEBUG == 1)
  Serial.begin(9600);
  Serial.println("Hello!");
#endif
}
но хотел узнать, может есть более красивое решение, например, вывод отладочной информации по WiFi, при недоступности UART. Или полное отключение вывода. Где-то попадалось интересное решение замена Serial на Debug, но не могу найти.
драйвер вывода на порт есть в ROM ESP и на его код ничего не тратится во флеш при выводе сообщений загрузчиком.
Если вывод в вашей программе не нужен, то просто не обращайтесь к порту
 

CodeNameHawk

Moderator
Команда форума
Насчет условной компиляции знаю
Ну так ее и используйте, если не надо сериал, просто пропускайте все, что связанно с работой с сериал, начиная с
Serial.begin(115200);

Код:
#define DEBUG

#ifdef DEBUG
Serial.begin(115200);
#endif


#ifdef DEBUG
Serial.println("otladka");
#endif
Весь вывод в сериал отключается комментированием строки
//#define DEBUG
 
Сверху Снизу