• Система автоматизации с открытым исходным кодом на базе 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
 
Сверху Снизу