Unpack Stringlänge

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
thomasgull
User
Beiträge: 48
Registriert: Samstag 2. Februar 2013, 18:52

Hallo schon wieder ich:
Ich habe eine Frage:

Die Stringlänge beim Unpack berechnet sich doch nach den Bytelängen der Format Charactes

Also müsse folgendes unten 12 Byte ergeben 8 x 1 Byte und INT als 4 Byte?

oder eas rechne ich falsch?

z1=unpack("BBBBBBIBB",answer)

bekomme jedoch die Fehlermeldung dass 13 Byte benötigt werden?

Danke und Grüsse

Thomas
Sirius3
User
Beiträge: 18335
Registriert: Sonntag 21. Oktober 2012, 17:20

Hallo thomasgull,

bei »struct« gibt es die Funktion »calcsize« die die Anzahl der Bytes ausrechnet.
In Deinem Fall hast Du default-C-Packvariante inklusive Alignment gewählt, was Dir 6 Bytes + 2 Füllbytes + 1 Int + 2 Bytes = 14 beschert. Um nicht auf die Endingness des Prozessors hereinzufallen nutze ich immer < oder > als Angabe, dann ist Alignment auch kein Problem.

Grüße
Sirius
thomasgull
User
Beiträge: 48
Registriert: Samstag 2. Februar 2013, 18:52

Danke,

die Meldung ist aber auf 13 Byte

struct.error: unpack requires a string argument of length 13

die Stringlänge ist genau 12 Byte die am Seriellen Port kommt und die Struktur ist gegeben vom Telegramm her, das letze Byte ist die CRC, Danach der INT-ist der Messwert unskaliert.
von welcher seite as wir mit > oder< gelsen, damit die Position stimmt?
Eigentlich willich damit
thomasgull
User
Beiträge: 48
Registriert: Samstag 2. Februar 2013, 18:52

Nein Klar wo der Fehler liegt die Richtige Reihenfolge ist ("BBBBBBBIB", und somit 1 Füllbyte, sorry
Antworten