Entfernen von Zeichen bei serieller Übertragung

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
smk
User
Beiträge: 3
Registriert: Freitag 26. November 2021, 16:57

ich versuche eine Übertragung zwischen Python und einem esp32 Controller herzustellen. Ich sende Daten von Python an den controller, dieser empfängt und schickt die erhaltenen Daten zurück. Allerdings erhalte ich mit dem print Befehl zum ausdrucken der zurückgeschickten Daten b' vor dem Text und \r\n hinter dem Text. Wie kann ich das unterdrücken?
Benutzeravatar
DeaD_EyE
User
Beiträge: 1021
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

Daten, die über eine Leitung übertragen werden, sind bytes und werden durch Python so auch dargestellt und der Datentyp ist bytes.
Damit es richtig dargestellt wird, musst du die bytes in str umwandeln. Erst dann werden den Bytes Zeichen zugewiesen und nicht nur druckbare ASCII-Zeichen korrekt dargestellt.

Sofern keine Umlaute enthalten sind, kannst du als Encodierung ASCII verwenden.

Code: Alles auswählen

data = serial.readline()
print(data.decode("ascii"))
Oder UTF8, was bei Python für den Quelltext der definierte Standard ist.

Code: Alles auswählen

data = serial.readline()
print(data.decode("utf8"))
Wenn man die Angabe "utf8" nicht macht, wird meisten trotzdem UFT8 verwendet, da vom OS das Standard-Encoding verwendet wird. Bei Linux, Mac und Windows ist es UTF8.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
smk
User
Beiträge: 3
Registriert: Freitag 26. November 2021, 16:57

Danke für den Hinweis
Antworten