Beim Ausführen des folgenden Codes auf meinem Arduino Micro wird nur die erste Zeile gedruckt:
void crash(void) {
abort();
}
void setup(void) {
Serial.begin(9600);
while(!Serial.available()) {
Serial.println("Please input something to begin");
delay(500);
}
Serial.println("First"); // Gets printed
delay(500); // Make sure Arduino is done writing to the serial connection
Serial.println("Second"); // Doesn't get printed
crash(); // Makes the Arduino device crash
}
void loop(void) {
}
Ich möchte so etwas tun, damit die zweite Zeile gedruckt wird, bevor das Gerät abstürzt:
void setup(void) {
Serial.begin(9600);
while(!Serial.available()) {
Serial.println("Please input something to begin");
delay(500);
}
Serial.println("First"); // Gets printed
delay(500); // Make sure Arduino is done writing to the serial connection
Serial.println("Second"); // Doesn't get printed
wait_for_serial_write(); // Not really a function
crash(); // Makes the Arduino device crash
}
void loop(void) {
}
Welche Funktion kann ich anstelle von verwenden wait_for_serial_write
?
Der Grund, warum ich dies tun möchte, ist, dass mein Arduino "zufällig" abstürzt, also habe ich einige Debug- Serial.println
Anweisungen eingefügt, die ich sehen möchte, bevor das Gerät abstürzt.
Ich kann es auch nicht in meinem echten Code verwenden delay
, da der Absturz während eines Timer-Interrupts auftritt, wo es delay
nicht funktioniert.
Serial.flush()
ist genau das, was Sie suchen.
Kevin Markus
crash
genau?Tyilo
abort
eine Funktion auf, die "den aktuellen Prozess abbricht und eine abnormale Programmbeendigung erzeugt". Ich weiß nicht, wie es implementiert ist, aber weder in der Timer- noch in der Loop-Funktion wird Code ausgeführt. Der Arduino wird auch nicht zurückgesetzt.