我有以下 Python 3.9 while True 循环,它读取来自 Teensy 4.1 的数据,按“Ctrl + C”后不会退出。
只有“Ctrl + \”和“Ctrl + Z”停止/暂停程序的执行。
data = ""
while True:
data += ser.read(ser.inWaiting()).decode("utf-8")
if (not data.endswith("\n")) or data == "":
continue
print(data)
data = ""
在读取数据的行周围添加 try- except 块也不起作用:
data = ""
while True:
try:
data += ser.read(ser.inWaiting()).decode("utf-8")
except KeyboardInterrupt:
print("stopped")
exit()
if (not data.endswith("\n")) or data == "":
continue
print(data)
data = ""
如何确保Ctrl + C会停止程序的执行?
我认为这是行不通的,除非你要用线程做一些事情。原因是“普通”python 是单线程的。您的
ser.read
正忙于“外部”python,无法接受 SIGINT (= ctrl+C) 信号。如果您向其发送 SIGQUIT (= ctrl+\) 信号,则 ser.read
终止并且您的脚本终止。