python-snap7 - Ausgabe von Objektelementen

Staubsauger

Level-2
Beiträge
36
Reaktionspunkte
6
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich bin dabei mir ein kleine Diagnosetool für eine ET200SP zu basteln.
Dabei lese ich mit der Python Bibliothek den CPU-Status. Das ist bisher mein erster Python-Code. Man verzeihe mir daher die eventuell blöde Frage.

Python:
plc = snap7.client.Client()

# Verbindung aufbauen und Status ausgeben
plc.connect(IP, RACK, SLOT)
plc_info = plc.get_cpu_info()

plc_info ist dann eine Struktur vom Typ "S7CpuInfo" zurück, welcher Infos über die CPU enthält.
Hier beginnt mein Unverständnis. :D

Ich möchte bspw. den Punkt "plc_info.ModuleTypeName" auslesen und ausgeben. Wenn ich im Visual Studio Code den Punkt nach plc_info setze schlägt er mir diese Option nicht vor, was mich schon wundert. Ich bekomme folgende Ausgabe, wenn ich die Variable mit der Funktion print() ausgebe:

Python:
b'CPU 1512SP-1 PN'

Passt soweit ja auch. Offensichtlich gebe ich aber keinen reinen String aus.

Was bedeutet das "b"?
Wie komme ich an den reinen String?

Könnte mir das evtl. jemand erläutern? Mir geht es hauptsächlich um das Verständnis was ich hier tue.

Danke schon mal.
 
Die Lösung meines Problems ist folgende:

Das Objekt "plc_info.ModuleTypeName" ist vom Typ <class 'bytes'>.
Daher auch das "b" am Anfang. Python decodiert die Bytes dann automatisch als String und zeigt diese an.

Will man nun das Objekt als String ausgeben, muss man die Bytes entsprechend decodieren:

Python:
plc_info.ModuleTypeName.decode('ASCII')
 
Zurück
Oben