2017-02-02 7 views
1

Ich arbeite an einem Projekt mit einem Münzprüfer und einer Himbeere. Ich habe den folgenden Code, um die Ausgabe von dem Münzprüfer zu testen:Python Serial hört auf zu lesen

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() 

alles funktioniert und ich Ausganges von dem Akzeptor jedes Mal, wenn ich eine Münze fallen. Aber nach einer Weile hört es auf zu lesen. In Windows mit einem seriellen Port-Monitor funktioniert es und ich werde jedes Mal ausgegeben.

Danke!

+0

versuchen, ein Timeout-Einstellung und erneutes Öffnen des Hafens von Zeit zu Zeit? –

+1

'' ord (line) '' wird fehlschlagen, wenn Sie mehr als ein Zeichen gleichzeitig lesen ... – jasonharper

+0

Sie können '.isOpen' verwenden, um zu erkennen, ob der Port geschlossen ist, und ihn dann wieder zu öffnen . Implementieren Sie auch eine Debugprotokollierung, um Einblick in die Vorgänge zu erhalten. – thephez

Antwort

0

jetzt habe ich den Code geändert, aber es ist das gleiche Verhalten wie zu Beginn. Nach einer bestimmten Zeit stoppt Lesung:

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() 

die Ausgabe von ser.isOpen ist immer TRUE