2017-02-02 135 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