2012-06-11 29 views
3

有時候我不通過串行接口得到任何數據,我想趕上這種情況下,在以下方式產生的異常:SerialTimeoutException在Python工作不正常

ser   = serial.Serial(3) 
ser.baudrate = 115200 
timeout  = 1 

while (some condidion) 
    try: 
    dump = ser.read(40) 
    except ser1.SerialTimeoutException: 
    print('Data could not be read') 

ser.close() 

然而,當我運行這個程序,當數據不在緩衝區中時,異常不會被捕獲,並且我陷入無限循環。任何人的想法 我在做什麼錯在這裏?

+1

有兩件事情可能是有問題的拼寫錯誤/遺漏代碼:1.異常應該可能是'serial.SerialTimeoutException' 2.在捕獲異常之後,您不會將條件設置爲「False」。 – jhonkola

+0

你有沒有看到「數據無法讀取」的消息? – Keith

+0

沒有,從來沒有看到它,因爲例外從來沒有被捕獲glglgl解釋如下! – Patrick

回答

6

我甚至不知道這個例外。看看the API documentation後,您會看到此例外僅適用於write()

如果你read(),你只會有一個縮短甚至空的輸出。

這隻適用於您打開超時連接的情況。像serial.Serial(3, timeout=.1)

+0

輝煌,正是我所期待的。現在工作;) – Patrick