pySerial serial.readline() - Newline Character ändern? "

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.
whaeva
User
Beiträge: 66
Registriert: Mittwoch 25. Februar 2009, 15:30

pySerial serial.readline() - Newline Character ändern? "

Beitragvon whaeva » Sonntag 1. März 2009, 17:15

http://pyserial.wiki.sourceforge.net/pySerial

Ich empfange Daten mit <CR> = 0x0D und würde gerne readline() benutzen.
Laut Einführung:

Code: Alles auswählen

line = ser.readline()   # read a '\n' terminated line

Allerdings:

Code: Alles auswählen

print hex(ord("\n")) # -> 0xA (ubuntu linux)

Fällt jemandem noch etwas Besseres ein, als sich mit read() durch die Daten zu hangeln?
whaeva
User
Beiträge: 66
Registriert: Mittwoch 25. Februar 2009, 15:30

Beitragvon whaeva » Sonntag 1. März 2009, 17:48

Wie kann man das noch besser schreiben?

Code: Alles auswählen

# serial.readline() only recognizes '\n' 0x0A
line = ''
while True:
   ch = serial.read()
   if ch == 0xd:
      break
   else:
      line = line + ch


Wäre es günstig, die Methode von serial überzubügeln (Vererbung oder wie das heisst)? Eine Prüfung auf timeout müsste auch noch rein, aber das ist der Fall wenn ch = None ist.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Beitragvon Darii » Sonntag 1. März 2009, 18:16

Doku bzw. help(serial.readline) lesen wird helfen.


Code: Alles auswählen

def readline(self, size=None, eol='\n'):
    """read a line which is terminated with end-of-line (eol) character
    ('\n' by default) or until timeout"""
    ...



Zu deinem Code: Du müsstest schon prüfen ob ch gleich "\r" (oder "\x0d") ist, 0xd ist ein Integer und kein String.
whaeva
User
Beiträge: 66
Registriert: Mittwoch 25. Februar 2009, 15:30

Beitragvon whaeva » Sonntag 1. März 2009, 19:18

Besten Dank, Du hast mir sehr geholfen!

Code: Alles auswählen

>>> "\r" == 0xd
False
>>> "\r" == "\x0d"
True
>>> "\r" == chr(0xd)
True

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder