optimaler weg ein cmd aufzubauen

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
klaus1234
User
Beiträge: 15
Registriert: Dienstag 22. September 2020, 08:59

Hi
wie löst man am besten in python folgendes Problem:
ich muss über sockets/TCPIP/UDP comamndos an mein embedded device
schicken. Die cmds sind wie folgt aufgebaut:

cmd = bytearray([
0x01, 0x02, 0x04, #protocol header 3 byte
0x00,0x20, # version (Int16)
0x00, 0x0e, # cmd
0x02, my id
0x00, # Priority (Int8))]

Also ein struct in c aber in python?
Wie wurde ich am besten Bitflder dadrin definieren? in C wären es ja
#defines.

Danke
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Structs in Python macht man mit dem struct-Modul. Bit-Felder-Werte sind einfache Konstanten.
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@klaus1234: In C wären das nicht wirklich ``struct``\s, jedenfalls nicht wenn das portabel sein soll, denn das Endianess, Padding und Bitfelder hängen vom Compiler und vom System ab.

Das `struct`-Modul hat diese Probleme nicht, jedenfalls nicht wenn man die Endianess explizit angibt. Bitfelder muss man sich selbst mit bitweisem Oder und Bitverschiebungen basteln. Falls es sich um Flags handelt kann `enum.IntFlag` aus der Standardbibliothek nützlich sein.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Antworten