"Hex"code umwandeln

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
Schlangenmensch
User
Beiträge: 73
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: 14545
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: 73
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: 14045
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.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
Antworten