python 3.x - pyserial - 堆栈溢出致命错误

时间:2018-05-14 07:27:02

标签: python fatal-error pyserial

我写了一个继承自serial.Serial对象的Object,并添加了一些方法。在无限循环中,程序从串行连接中获取信息。当Someone关闭另一端的Divice时,SerialException会通知用户存在问题并再次调用该函数。大约300个错误后,我得到一个堆栈溢出致命错误。

def endless():
 try:
  with serialObjectDerivedFromserial.Serial("/dev/tty/bsp") as bsp:
  #doing somthing
 except serial.SerialException:
  #notify not connected
  time.sleep(10)
  endless()
 except:
  #notify error

1 个答案:

答案 0 :(得分:0)

你自己打电话给endless。虽然它不被禁止(它是递归的基础),但每次调用都会消耗一点堆栈。因此,在多次调用后得到堆栈溢出也就不足为奇了。正确的方法是将递归更改为迭代处理:

def endless():
  while True:
     try:
      with serialObjectDerivedFromserial.Serial("/dev/tty/bsp") as bsp:
      #doing somthing
     except serial.SerialException:
      #notify not connected
      time.sleep(10)
      continue               # keep on looping on SerialException
     except:
      #notify error
     break                   # exit loop on any other case