Problem
When redirecting the UART service to pins, it doesn't turn off the CTRL-C handling, so receiving a binary 0x03 from the device at the other end will generate a KeyboardInterrupt and stops the MicroPython program running.
Workaround
This has potentially been fixed in the version1 branch of micropython, it has
micropython.kbd_intr(chr)
and if you pass -1 as the chr
argument then that will disable CTRL-C interrupts. The v1 branch is currently available to test in the online python editor