1

シリアル デバイスへのポートを開く必要がありますが、開いていない場合や例外がある場合は、ドアが開くまで継続的にドアを開こうとする必要があります。Python 2.7.3 しばらくすると、次のエラーが発生します。

「RuntimeError: Python オブジェクトの呼び出し中に最大再帰深度を超えました」

手伝って頂けますか?

私のコード:

def opendisplay():
    try:
        lcd = serial.Serial(
        port='/dev/display', 
        baudrate=9600, 
        timeout=0,
        parity=serial.PARITY_NONE,
        stopbits=serial.STOPBITS_ONE,
        bytesize=serial.EIGHTBITS
        )
    except Exception, e:
        print "Error! can't connect to display Lcd check USB-Serial \n" + str(e)
        opendisplay()   
    return lcd

dsp=opendisplay()
4

1 に答える 1

0

Martin/Shadow が言うように、再帰の代わりにループします。

def opendisplay():
    while True:
        try:
            # Try to connect
            lcd = serial.Serial(...)
            return lcd
        except Exception as e:
            # Connection failed
            print "Error! etc"
            time.sleep(1)

1分間だけ試してみたい場合は、for _ in range(60)代わりに使用できます

于 2013-02-11T09:21:41.967 に答える