在 python 中读取串行端口时如何中断 while 循环
How to break while loop when reading a serial port in python
我试图在 while true 循环中读取 python 中的串行端口,我在 KeyboardInterrupt 异常上使用了 try-except 条件。但是当我按下 Ctrl+C 时,除非我拔掉连接到串行端口的设备(从中获取数据),否则什么也不会发生。
try:
while True:
x = ser.readline()
dat=x.decode('utf8').split(",")
dat[0]=dat[0].replace("\x00","")
if(dat[0][0:2]=='ax' and dat[1][0:2]=='gx'):
ax=dat[0][2:]
gx=dat[1][2:]
flagx=1
if(dat[0][0:2]=='ay' and dat[1][0:2]=='gy' and flagx==1):
ay=dat[0][2:]
gy=dat[1][2:]
flagx=2
if(dat[0][0:2]=='az' and dat[1][0:2]=='gz' and flagx==2):
az=dat[0][2:]
gz=dat[1][2:]
flagx=0
dgx.append(gx)
dgy.append(gy)
dgz.append(gz)
dax.append(ax)
day.append(ay)
daz.append(az)
print(dat)
except KeyboardInterrupt:
pass
Ctrl+C 引发 KeyboardInterrupt
,但是您捕获了这个异常并且什么都不做,所以什么也没有发生。如果您要向异常块添加一些逻辑,例如:
while True:
try:
pass
except KeyboardInterrupt:
print('Hello world!')
raise
当你按下Ctrl-C时,它就会被执行。此示例在按 Ctrl-C 后的输出为:
^CHello world!
---------------------------------------------------------------------------
KeyboardInterrupt Traceback (most recent call last)
但是,我建议使用 break
语句来跳出 while
循环。
while True:
x = ser.readline()
if x == termiation_line:
break
我试图在 while true 循环中读取 python 中的串行端口,我在 KeyboardInterrupt 异常上使用了 try-except 条件。但是当我按下 Ctrl+C 时,除非我拔掉连接到串行端口的设备(从中获取数据),否则什么也不会发生。
try:
while True:
x = ser.readline()
dat=x.decode('utf8').split(",")
dat[0]=dat[0].replace("\x00","")
if(dat[0][0:2]=='ax' and dat[1][0:2]=='gx'):
ax=dat[0][2:]
gx=dat[1][2:]
flagx=1
if(dat[0][0:2]=='ay' and dat[1][0:2]=='gy' and flagx==1):
ay=dat[0][2:]
gy=dat[1][2:]
flagx=2
if(dat[0][0:2]=='az' and dat[1][0:2]=='gz' and flagx==2):
az=dat[0][2:]
gz=dat[1][2:]
flagx=0
dgx.append(gx)
dgy.append(gy)
dgz.append(gz)
dax.append(ax)
day.append(ay)
daz.append(az)
print(dat)
except KeyboardInterrupt:
pass
Ctrl+C 引发 KeyboardInterrupt
,但是您捕获了这个异常并且什么都不做,所以什么也没有发生。如果您要向异常块添加一些逻辑,例如:
while True:
try:
pass
except KeyboardInterrupt:
print('Hello world!')
raise
当你按下Ctrl-C时,它就会被执行。此示例在按 Ctrl-C 后的输出为:
^CHello world!
---------------------------------------------------------------------------
KeyboardInterrupt Traceback (most recent call last)
但是,我建议使用 break
语句来跳出 while
循环。
while True:
x = ser.readline()
if x == termiation_line:
break