Asegúrese de que se haya escrito la serie antes de ejecutar la siguiente línea

3

Al ejecutar el siguiente código en mi Arduino Micro, solo se imprime la primera línea:

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) {

}

Me gustaría algo como esto para imprimir la segunda línea, antes de que el dispositivo se caiga:

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) {

}

¿Qué función puedo usar en lugar de wait_for_serial_write ?

La razón por la que quiero hacer esto es porque mi Arduino se bloquea "aleatoriamente", por lo que puse algunas declaraciones de debug Serial.println , que me gustaría ver antes de que el dispositivo se caiga.

También no puedo usar delay en mi código real, ya que el bloqueo se produce mientras se produce una interrupción del temporizador, donde delay no funciona.

    
pregunta Tyilo

1 respuesta

7

Serial.flush() es exactamente lo que estás buscando.

    
respondido por el Kevin Mark

Lea otras preguntas en las etiquetas