2017-02-02 156 views
1

我正在使用硬幣接收器和樹莓工程。我有以下代碼來測試從硬幣接收器輸出:Python串口停止讀取

import serial 
from time import sleep 

ser = serial.Serial('/dev/ttyUSB0', 4800, 8, 'N', 1, timeout=None) 
while True: 
    line = ser.read(ser.inWaiting()) 
    if len(line) > 0: 
    print ord(line) 
ser.close() 

一切工作正常,每次我滴個硬幣時間我從受體輸出。但過了一段時間,它停止閱讀。在具有串行端口監視器的窗口中,它可以正常工作,並且每次都會輸出。

謝謝!

+0

嘗試設置超時並重新打開時,從港口到時間呢? –

+1

如果您一次只閱讀一個以上的字符,'ord(line)''將會失敗...... – jasonharper

+0

您可以使用'.isOpen'來檢測端口是否關閉,然後在發生這種情況時重新打開端口。此外,實施一些調試日誌記錄,讓你看到發生了什麼。 – thephez

回答

0

現在我修改了代碼,但是在開始時有相同的行爲。一段時間後停止閱讀:

import serial 
from time import sleep 

ser = serial.Serial('/dev/ttyUSB0', 4800, bytesize=8,  parity=serial.PARITY_EVEN, stopbits=1, timeout=0, rtscts=1) 
sleep(3) 
print("ready ..") 
print(ser.isOpen()) 
while True: 
    line = ser.read() 
    if len(line) > 0: 
    print ser.isOpen() 
    print line 
    print ser.isOpen() 
ser.close() 

從ser.isOpen輸出始終爲TRUE