Uh... Throwing junk at the wall: Have you tried just using an alarm to break out of a hung state?
I know windows is excruciatingly bad at that, but It may help 🤷♂️
Comment on Re: Win32::SerialPort - How do I detect if device is still connected?
Using (POSIX) signals on Windows is not really supported. Just like fork(), they work surprisingly well, but the point is that they are implemented at all, not how good they are implemented.