diff --git a/src/libmodbus/modbus-rtu.cpp b/src/libmodbus/modbus-rtu.cpp index c5a8302..c1c5a60 100644 --- a/src/libmodbus/modbus-rtu.cpp +++ b/src/libmodbus/modbus-rtu.cpp @@ -1268,6 +1268,9 @@ static int _modbus_rtu_select(modbus_t *ctx, fd_set *rset, if (s_rc >= length_to_read) { break; } + #ifdef INCLUDE_vTaskDelay + vTaskDelay(1); + #endif } while ((millis() - start) < wait_time_millis); if (s_rc == 0) { diff --git a/src/libmodbus/modbus-tcp.cpp b/src/libmodbus/modbus-tcp.cpp index 2d69cc0..0a0dff9 100644 --- a/src/libmodbus/modbus-tcp.cpp +++ b/src/libmodbus/modbus-tcp.cpp @@ -844,6 +844,9 @@ static int _modbus_tcp_select(modbus_t *ctx, fd_set *rset, struct timeval *tv, i if (s_rc >= length_to_read) { break; } + #ifdef INCLUDE_vTaskDelay + vTaskDelay(1); + #endif } while ((millis() - start) < wait_time_millis && ctx_tcp->client->connected()); #else while ((s_rc = select(ctx->s+1, rset, NULL, NULL, tv)) == -1) {