ich habe vor kurzem begonnen mich mit Python zu beschäftigen. Seit zwei Tagen versuche ich nun einen E-Motor anzusteuern. Diesem sende ich via RS485 einen Befehl der aus 16 Bytes besteht.
Byte 1 ist das Kommando.
Byte 2 bis 5 sind die Anzahl der Inkremente die der Motor verfahren soll. Der Wertebereich geht laut Hersteller von -2140000000 bis 2140000000 bzw. Hex F80723100 bis 7F8DCF00
Ich habe es mittlerweile geschafft in die positive Richtung zu verfahren. Leider klappt es in die negative Richtung überhaupt nicht und ich bin mit meinem Latein am Ende.
Folgender Code erzeugt mir mit positiven Dezimalzahlen das richtige Ergebnis in Hexadezimal:
Code: Alles auswählen
import struct
x = struct.pack('>l', 2140000000)
print(x)
\x7f\x8d\xcf\x00'
\x80r1\x00' <-- man beachte das r1
Ich wäre euch sehr dankbar, wenn ihr mir weiterhelfen könntet dieses Problem zu lösen
LG
Tom