Запись в стандартный поток ошибок

Arduino:
Запись в стандартный поток ошибок

Как это сделать:

Arduino изначально не поддерживает stderr, но мы можем имитировать его, записывая в Serial. Представим программу мигания светодиодом с проверкой на ошибки:

void setup() {
  Serial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  if(!digitalWriteCheck(LED_BUILTIN, HIGH)) {
    Serial.println("Ошибка: Невозможно установить LED в высокое состояние"); // Это наш "stderr"
  }
  delay(1000); // Подождать секунду
  if(!digitalWriteCheck(LED_BUILTIN, LOW)) {
    Serial.println("Ошибка: Невозможно установить LED в низкое состояние"); // Это наш "stderr"
  }
  delay(1000); // Подождать секунду
}

bool digitalWriteCheck(int pin, int value) {
  // Представим, что эта функция проверяет, была ли успешной функция digitalWrite
  digitalWrite(pin, value);
  // Если успех - возвращаем true, давайте для примера всегда возвращать false
  return false;
}

Пример вывода:

Ошибка: Невозможно установить LED в высокое состояние
Ошибка: Невозможно установить LED в низкое состояние

Подробнее

Исторически, stderr является стандартным потоком во многих операционных системах, введенным Unix. В Arduino, которая не имеет операционной системы, мы вручную выводим ошибки, используя Serial.print или похожие команды. Если вы ведете журнал на компьютере, логи могут быть перенаправлены из Serial в файл, эффективно отделяя их от stdout. Продвинутые пользователи могут использовать SoftwareSerial для эмуляции stderr на разных аппаратных последовательных портах.

Смотрите также