USB/Serial read erzeugt 100% CPU Last nach einigen Stunden..
Verfasst: Donnerstag 10. Mai 2012, 20:04
Hallo,
ich versuche die Daten meiner Heizung mit einem selbst geschrieben Pythonscript abzufragen, was auch gut läuft.
Ich hab nur das Problem das das Script irgendwan 100% CPU Last verursacht und keine Daten mehr analysiert.
Mir scheint es, das die while Schleife die die Daten vom USB Port ließt durchläuft ohne daten zu verarbeiten und d.h. die 100 % CPU Last erzeugt wird.
Habe schon einige Exceptions eingebaut und kommen nicht wirklich weiter
Danke und Gruß Jay Kay
ich versuche die Daten meiner Heizung mit einem selbst geschrieben Pythonscript abzufragen, was auch gut läuft.
Ich hab nur das Problem das das Script irgendwan 100% CPU Last verursacht und keine Daten mehr analysiert.
Mir scheint es, das die while Schleife die die Daten vom USB Port ließt durchläuft ohne daten zu verarbeiten und d.h. die 100 % CPU Last erzeugt wird.
Habe schon einige Exceptions eingebaut und kommen nicht wirklich weiter
Code: Alles auswählen
ser = serial.Serial(SerialPort, 9600,)
writePidFile()
while 1:
if ser.isOpen():
read = ser.read()
if binascii.b2a_hex(read) == "aa":
if sync == 0:
#"got first AA"
state = 1
continue
elif sync == 1:
#"got second AA"
state = 3
continue
if binascii.b2a_hex(read) == "55":
if sync == 0 and state == 1:
#"got first 55"
state = 2
sync = 1
continue
elif sync == 1 and state == 3:
#"got second 55. read done..."
#ToDo check length ?!?
process_data(data)
state = 0
sync = 0
data = ""
continue
else:
data = data + read
else:
print SerialPort," is not open!"
log.critical(SerialPort + " is not open!")
time.sleep(30)
except (serial.SerialException, serial.serialutil.SerialException),ex:
print "serial.SerialException()", ex
log.exception("serial.SerialException()")
conn.close()
ser.close()
sys.exit(0)
except serial.SerialTimeoutException: #for write timeouts only
print "serial.SerialTimeoutException"
log.exception("serial.SerialTimeoutException()")
conn.close()
ser.close()
sys.exit(0)
except Exception, ex:
log.exception("Something awful happened!")
print "main: Something awful happened!",ex