Pyserial; readline(); Exception

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
stoneshack
User
Beiträge: 5
Registriert: Mittwoch 3. August 2011, 08:12

Hi,
ich möchte ein Exception auslösen wenn beim readline() timeout vorkommt. Kann mir Jemand dabei helfen oder eine Alternative anbieten?

(Python 2.7; PySerial; timeout = 1)

Habe flolgendes probiert:

Code: Alles auswählen

        try:
            print "1"
            self.ser.write('%s\n' %str)
            print "2"
            self.postBox = self.ser.readline()
            print "3"

        except serial.SerialException:
            print "Exception"
            print self.postBox

#oder
        except serial.SerialTimeoutException:
            print "Exception"
            print self.postBox
Ausgabe:
1
2
#wartet 1 Sekunde
3
norbert
User
Beiträge: 3
Registriert: Samstag 26. November 2011, 08:04

Hallo stoneshack,

bei einem timeout bekommst Du von bekommst Du von readline() leider keine Exception.
Du kannst aber einfach die Antwort auswerten. Allerdings ist die Länge auch 0 wenn nur ein \n empfangen wurde.
Wenn Du diesen Fall auch abfangen willst, musst Du zeichenweise lesen und den String selbst zusammen basteln.

VG
Norbert

Code: Alles auswählen

    self.postBox = self.ser.readline()
    if len(self.postBox) == 0:
        print "timeout oder leere Zeile"    
Antworten