Problem beim Lesen von Daten vom seriellen port in python

Habe ich ein python-Programm, das versucht zu Lesen 14 bytes aus einem seriellen port,
ankommen sehr langsam. Ich will aufnehmen möchten, die alle bytes in einem
bytearray[14]. Ich verstehe, es gibt neues byte-array-Funktionen in python 3.0, aber
Ich bin nur python-2.6.6. Die Aktualisierung kann zu unerwarteten Folgen, so habe ich zu
stick mit 2.6.6.

Daten nur zeitweise fließt über den seriellen port. Ich bekomme eine Nachricht auf dem
port vielleicht alle 2 Minuten oder so. Diese Daten werden sehr langsam fließt. Das problem, das ich sehe ist
dass mein code nicht relaibly Lesen Sie die Daten ein byte zu einer Zeit. Ich möchte Rahmen dieser
Daten bei genau 14 bytes, verarbeiten dann die Daten und starten Sie frisch mit einem neuen 14
bytes.

Bin ich hier der falsche Ansatz? Rat?

    ser = serial.Serial('/dev/ttyUSB1', 1200, timeout=0)
    ser.open()
    print "connected to: " + ser.portstr
    count=0
    while True:
        line =ser.readline(size=14) # should block, not take anything less than 14 bytes
        if line:
            # Here I want to process 14 bytes worth of data and have
            # the data be consistent.
            print "line(" + str(count) + ")=" + line
            count=count+1
    ser.close()

Hier ist, was ich erwarte: Zeile(1)=� 0~ 888.ABC� /endet mit carriage return

----------beginnen Ausgabe------

line(0)=0
line(1)=~ ??1. ABC     # here get some multiple bytes and stuff gets out of synch

ine(2)=
line(3)=0
line(4)=~
line(5)= 
line(6)=8
line(7)=8
line(8)=8
line(9)=.
line(10)= 
line(11)=A
line(12)=B
line(13)=C
line(14)= 
line(15)=�
line(16)=

#...
line(48)=
line(49)=�
line(50)=0
line(51)=~
line(52)= 
line(53)=8
line(54)=8
line(55)=8
line(56)=.
line(57)= 
line(58)=A
line(59)=B
line(60)=C
line(61)= 
line(62)=�
line(63)=

line(64)=

----------Ende Ausgabe------

InformationsquelleAutor codingJoe | 2011-03-21
Schreibe einen Kommentar