gleich im Voraus: Ich habe erst vor kurzem mit der Programmierung in Python begonnen, da ich es für die Ansteuerung einer elektr. Last benötige.
Aber nun zu meinem Problem:
Die oben genannte Last kann mir Rückgabewerte über die getroffenen Einstellungen liefern.
Diese würde ich gerne in eine .txt-Datei schreiben, um diese weiterverwenden zu können.
Wenn ich das Gerät mittels cmd.exe und meines "control.py"-Files ansteuere liefert es mir folgenden Rückgabewert (in Hex):
aa .. 23 1a 31 .. .. .. .. ..
.. .. .. .. .. .. .. .. .. ..
.. .. .. .. .. 18
.. steht hierbei für hex 0.
Wenn ich die gleiche Variable aber in mein .txt-File schreibe bekomme ich leider nur "Datenmüll". ª|#|1||||||||||||||||||||||||
Hierbei steht | für das Nullzeichen.
Hier der Code für mein Programm:
Code: Alles auswählen
####################################################################################
# Set the DC load to Remote, Set the Voltage,Current and Power and turn the load on#
####################################################################################
import serial
length_packet = 26 # Number of bytes in a packet
def DumpCommand(bytes):
assert (len(bytes) == length_packet)
header = " "*3
print header
for i in xrange (length_packet):
if i % 10 == 0 and i !=0:
print
print header,
if i % 5 == 0:
print " ",
s = "%02x" % ord(bytes[i])
if s == "00":
s = chr(250)*2
print s,
print
def CalculateChecksum(cmd):
assert((len(cmd) == length_packet - 1) or (len(cmd) == length_packet))
checksum=0
for i in xrange (length_packet -1):
checksum += ord(cmd[i])
checksum %= 256
return checksum
def main():
##########
#Settings#
##########
port=2 #COM3
baudrate = 9600
sp = serial.Serial(port, baudrate) #Open a serial connection
###################################
# Construct to read the settings #
###################################
cmd = chr(0xaa) + chr(0x00) + chr(0x23) #First three bytes
cmd += chr(0x00) + chr(0x00)+ chr(0x00)*(length_packet -1 -5)
cmd += chr(CalculateChecksum(cmd))
assert(len(cmd) == length_packet)
# Send command to DC load
sp.write(cmd)
print "Set to remote command:"
#DumpCommand(cmd)
#Get response from DC load
response = sp.read(length_packet)
assert(len(response) == length_packet)
f = open('c:/python25/python/tmp.txt', 'w')
f.write(response)
f.close()
print "Response:"
DumpCommand(response)
main()
Für Antworten wäre ich sehr Dankbar!
Wostl