"Hex"code umwandeln

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
Schlangenmensch
User
Beiträge: 61
Registriert: Freitag 18. Februar 2022, 10:13

Hallo,

ich habe wieder einmal ein kleines Problem und hoffe Ihr könnt mir dabei behilflich sein.

Ich möchte unseren Stromzähler auslesen und habe dafür folgenden Code geklaut.

Code: Alles auswählen

import sys
import serial
import time
import string

ser = serial.Serial(
    port="/dev/ttyUSB0",
    baudrate=9600,
    parity=serial.PARITY_EVEN,
    stopbits=serial.STOPBITS_ONE,
    bytesize=serial.EIGHTBITS
)

print(ser.readline())

Vom Zähler bekomme ich folgendes Zurück.

b'\x1b\x1b\x1b\x1b\x01\x01\x01\x01v\x07\000\r\t/\xea+b\..................

Gehe ich recht in der Annahme, dass es sich dabei um Hexcode handelt und wenn ja wie kann ich diesen in etwas lesbares konvertieren.

Vielen Dank im Voraus.
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

Nein, das ist kein "hex-code". Das sind binaere Daten, die Python bei Werten, die aus dem nicht-druckbaren Bereich der ASCII-Darstellung kommen als Hexadezimal-Zahlen darstellt. Da ist ja zB ein newline oder ein Tab drin, ein +, etc.

Und was diese binaeren Daten bedeuten haengt vom konkreten Stromzaehler und dessen Protokol ab.
Schlangenmensch
User
Beiträge: 61
Registriert: Freitag 18. Februar 2022, 10:13

Danke für die schnelle Antwort.

Also müsste es sich um einen SML-Code handeln, dieser müsste dann doch genormt sein und auch standartmässig übersetzt werden können oder?
Benutzeravatar
__blackjack__
User
Beiträge: 13100
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Schlangenmensch: Wenn sich das Datenformat an einen Standard hält, kann man das auch gemäss des Standards dekodieren, ja. Wenn man den kennt, oder eine Bibliothek dafür hat.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten