You NEVER want to block Unreal. Instead, write a timeout logic while trying to non-blockingly get the answer from Arduino. Something like
SendCommandToArduino()
{
Serial.Print("some command");
CommandTime = WorldRealltimeSeconds;
}
Tick(float DeltaSeconds)
{
if (CommandTime - WorldRealtimeSeconds > Timeout)
{
SendCommandToArduino();
}
else
{
Response = Serial.ReadBytes();
// Check if response is valid
}
}