Seite 1 von 1

optimaler weg ein cmd aufzubauen

Verfasst: Dienstag 22. September 2020, 09:01
von klaus1234
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

Re: optimaler weg ein cmd aufzubauen

Verfasst: Dienstag 22. September 2020, 11:29
von Sirius3
Structs in Python macht man mit dem struct-Modul. Bit-Felder-Werte sind einfache Konstanten.

Re: optimaler weg ein cmd aufzubauen

Verfasst: Dienstag 22. September 2020, 13:48
von __blackjack__
@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.