Ich möchte eine Frequenz an ein Funkgerät via RS232 schicken.
Von Hand gerechnet funktioniert das so:
Code: Alles auswählen
#123,45 MHz = 12345000
str(hex(12345000))
#= '0xbc5ea8'
#Dann noch auf 4 Zahlen auffüllen und versenden:
ser.write( chr(0x00) + chr(0xbc) + chr(0x5e) + chr(0xa8) )
1) Kann man Hex formatieren, damit es auf eine fixe Stellenzahl führende Nullen ergänzt zu "0x00bc5ea8" ?
2) Wie sende ich die einzelnen Bytes ?
Ich fummle mit einer Umwandlung rum:
Code: Alles auswählen
fh=['0']*8
f=12345000
fs=str(hex(f))
fh[7]=fs[len(fs)-1]
...
Code: Alles auswählen
if fh[1]=='x':
fh[1]='0'
print "x!"
else:
fh[1]=fs[len(fs)-7]
print "Not x"
print '>'+fh[1]+'<'
Code: Alles auswählen
Not x
>x<
Code: Alles auswählen
print "chr", ord(fh[1]+fh[0])