Entfernen von Zeichen bei serieller Übertragung
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?
- 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.
Oder UTF8, was bei Python für den Quelltext der definierte Standard ist.
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.
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"))
Code: Alles auswählen
data = serial.readline()
print(data.decode("utf8"))
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server