diff --git a/src/uart/emsuart_esp32.cpp b/src/uart/emsuart_esp32.cpp index e1284d2c3..84d61a57f 100644 --- a/src/uart/emsuart_esp32.cpp +++ b/src/uart/emsuart_esp32.cpp @@ -47,8 +47,9 @@ void EMSuart::uart_event_task(void * pvParameters) { while (1) { //Waiting for UART event. if (xQueueReceive(uart_queue, (void *)&event, portMAX_DELAY)) { - if (event.type == UART_BREAK) { - length += event.size ? event.size - 1 : 0; + if (event.type == UART_DATA) { + length += event.size; + } else if (event.type == UART_BREAK) { if (length == 2 || (length >= 6 && length <= EMS_MAXBUFFERSIZE)) { uart_read_bytes(EMSUART_NUM, telegram, length, portMAX_DELAY); EMSESP::incoming_telegram(telegram, (uint8_t)(length - 1)); @@ -57,8 +58,6 @@ void EMSuart::uart_event_task(void * pvParameters) { uart_read_bytes(EMSUART_NUM, buf, length, portMAX_DELAY); } length = 0; - } else if (event.type == UART_DATA) { - length += event.size; } else if (event.type == UART_BUFFER_FULL) { uart_flush_input(EMSUART_NUM); length = 0;