Schrijven naar standaardfout

Arduino:
Schrijven naar standaardfout

Hoe te:

Arduino ondersteunt van nature geen stderr, maar we kunnen dit nabootsen door naar Serial te schrijven. Stel je een LED-knipperprogramma voor met foutcontrole:

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

void loop() {
  if(!digitalWriteCheck(LED_BUILTIN, HIGH)) {
    Serial.println("Fout: Kan LED niet hoog zetten"); // Dit is onze "stderr"
  }
  delay(1000); // Wacht een seconde
  if(!digitalWriteCheck(LED_BUILTIN, LOW)) {
    Serial.println("Fout: Kan LED niet laag zetten"); // Dit is onze "stderr"
  }
  delay(1000); // Wacht een seconde
}

bool digitalWriteCheck(int pin, int waarde) {
  // Doe alsof deze functie controleert of digitalWrite succesvol was
  digitalWrite(pin, waarde);
  // Als succes, retourneer waar, laten we voor dit voorbeeld altijd falen
  return false;
}

Voorbeelduitvoer:

Fout: Kan LED niet hoog zetten
Fout: Kan LED niet laag zetten

Diepere Duik

Historisch gezien is stderr een standaardstroom in veel besturingssystemen, geïntroduceerd door Unix. In Arduino, waar een besturingssysteem ontbreekt, voeren we handmatig fouten uit met Serial.print of soortgelijk. Als je logt naar een computer, kunnen logs worden omgeleid van Serial naar een bestand, waardoor ze effectief gescheiden zijn van stdout. Gevorderde gebruikers kunnen SoftwareSerial gebruiken om stderr op verschillende hardware seriële poorten te emuleren.

Zie Ook