发布于 2007-03-28 21:26:41
0楼
#!/usr/bin/env python
import serial
import string
from time import *
#def Logo_Zeit():
def Logo_Start():
ser = serial.Serial(0, 9600, timeout=1, parity=serial.PARITY_EVEN)
ser.write('\x55\x17\x17\xAA') #Logo Status
status = ser.read(20)
print status
ser.write('\x55\x18\x18\xAA') #Logo START
status = ser.read(2)
ser.write('\x55\x17\x17\xAA') #Logo Status
status = ser.read(20)
print status
ser.close()
def Logo_Stop():
ser = serial.Serial(0, 9600, timeout=1, parity=serial.PARITY_EVEN)
ser.write('\x55\x17\x17\xAA') #Logo Status
status = ser.read(2)
ser.write('\x55\x12\x12\xAA') #Logo STOP
status = ser.read(2)
ser.close()
def Logo_iostatus():
ser = serial.Serial(0, 9600, timeout=1, parity=serial.PARITY_EVEN)
ser.write('\x02\x1F\x02') #Logo Init
status = ser.read(5)
ser.write('\x55\x17\x17\xAA') #Logo in Run oder Stop??
status = ser.read(2)
ser.write('\x55\x13\x13\x00\xAA') #Logo IO Status holen
byte = ser.read(1)
antw = ord(byte)
daten = [] # Leere Liste erstellen
# wenn Logo O.K. sendet
if (antw == 6):
for i1 in range(1,71):
daten.append( ord(ser.read(1)) )
Byte = daten[:]
Byte.append(0)
Byte[1] = daten[0]
Byte[2] = daten[1]
Byte[3] = daten[2]
Byte[4] = daten[3]
Byte[5] = daten[4]
Byte[6] = daten[5]
Byte[7] = daten[6]
Byte[8] = daten[7]
Byte[9] = daten[8]
Byte[10] = daten[9]
Byte[11] = daten[10]
Byte[12] = daten[11]
Byte[13] = daten[12]
Byte[14] = daten[13]
Byte[15] = daten[14]
Byte[16] = daten[15]
Byte[17] = daten[16]
Byte[18] = daten[17]
Byte[19] = daten[18]
Byte[20] = daten[19]
Byte[21] = daten[20]
Byte[22] = daten[21]
Byte[23] = daten[22]
Byte[24] = daten[23]
Byte[25] = daten[24]
Byte[26] = daten[25]
Byte[27] = daten[26]
Byte[28] = daten[27] # Digitaleingдnge 1 - 8 00-FF
Byte[29] = daten[28] # Digitaleingдnge 9 - 16 00-FF
Byte[30] = daten[29] # Digitaleingдnge 17 - 24 00-FF
Byte[31] = daten[30] # Digitalausgдnge 1 - 8
Byte[32] = daten[31] # Digitalausgдnge 9 - 16
Byte[33] = daten[32] # Merker 1 - 8
Byte[34] = daten[33] # Merker 9 - 16
Byte[35] = daten[34] # Merker 17 - 24
Byte[36] = daten[35] # Schieberegisterbits 1 - 8
Byte[37] = daten[36] # Cursertasten C1 - C4 00 - 04
Byte[38] = daten[37] # Analogeingang 1 - Low Byte
Byte[39] = daten[38] # Analogeingang 1 - High Byte
Byte[40] = daten[39] # Analogeingang 2 - Low Byte
Byte[41] = daten[40] # Analogeingang 2 - High Byte
Byte[42] = daten[41] # Analogeingang 3 - Low Byte
Byte[43] = daten[42] # Analogeingang 3 - High Byte
Byte[44] = daten[43] # Analogeingang 4 - Low Byte
Byte[45] = daten[44] # Analogeingang 4 - High Byte
Byte[46] = daten[45] # Analogeingang 5 - Low Byte
Byte[47] = daten[46] # Analogeingang 5 - High Byte
Byte[48] = daten[47] # Analogeingang 6 - Low Byte
Byte[49] = daten[48] # Analogeingang 6 - High Byte
Byte[50] = daten[49] # Analogeingang 7 - Low Byte
Byte[51] = daten[50] # Analogeingang 7 - High Byte
Byte[52] = daten[51] # Analogeingang 8 - Low Byte
Byte[53] = daten[52] # Analogeingang 8 - High Byte
Byte[54] = daten[53] # Analogausgang 1 - Low Byte
Byte[55] = daten[54] # Analogausgang 1 - High Byte
Byte[56] = daten[55] # Analogausgang 2 - Low Byte
Byte[57] = daten[56] # Analogausgang 2 - High Byte
Byte[58] = daten[57] # Analogmerker 1 - Low Byte
Byte[59] = daten[58] # Analogmerker 1 - High Byte
Byte[60] = daten[59] # Analogmerker 2 - Low Byte
Byte[61] = daten[60] # Analogmerker 2 - High Byte
Byte[62] = daten[61] # Analogmerker 3 - Low Byte
Byte[63] = daten[62] # Analogmerker 3 - High Byte
Byte[64] = daten[63] # Analogmerker 4 - Low Byte
Byte[65] = daten[64] # Analogmerker 4 - High Byte
Byte[66] = daten[65] # Analogmerker 5 - Low Byte
Byte[67] = daten[66] # Analogmerker 5 - High Byte
Byte[68] = daten[67] # Analogmerker 6 - Low Byte
Byte[69] = daten[68] # Analogmerker 6 - High Byte
Byte[70] = daten[69] # AA Ende
ser.close()
###########################################################################
# ------------------------------------------
# - Zuordnung Eingдnge 1 - 8 --> di1 - di8 -
# ------------------------------------------
if ( Byte[28] & 1 ) > 0: # Eingang 1
di1 = 1
else:
di1 = 0
if ( Byte[28] & 2 ) > 0: # Eingang 2
di2 = 1
else:
di2 = 0
if ( Byte[28] & 4 ) > 0: # Eingang 3
di3 = 1
else:
di3 = 0
if ( Byte[28] & 8 ) > 0: # Eingang 4
di4 = 1
else:
di4 = 0
if ( Byte[28] & 16 ) > 0: # Eingang 5
di5 = 1
else:
di5 = 0
if ( Byte[28] & 32 ) > 0: # Eingang 6
di6 = 1
else:
di6 = 0
if ( Byte[28] & 64 ) > 0: # Eingang 7
di7 = 1
else:
di7 = 0
if ( Byte[28] & 128 ) > 0: # Eingang 8
di8 = 1
else:
di8 = 0
# --------------------------------------------
# - Zuordnung Eingдnge 9 - 16 --> di9 - di16 -
# --------------------------------------------
if ( Byte[29] & 1 ) > 0: # Eingang 9
di9 = 1
else:
di9 = 0
if ( Byte[29] & 2 ) > 0: # Eingang 10
di10 = 1
else:
di10 = 0
if ( Byte[29] & 4 ) > 0: # Eingang 11
di11 = 1
else:
di11 = 0
if ( Byte[29] & 8 ) > 0: # Eingang 12
di12 = 1
else:
di12 = 0
if ( Byte[29] & 16 ) > 0: # Eingang 13
di13 = 1
else:
di13 = 0
if ( Byte[29] & 32 ) > 0: # Eingang 14
di14 = 1
else:
di14 = 0
if ( Byte[29] & 64 ) > 0: # Eingang 15
di15 = 1
else:
di15 = 0
if ( Byte[29] & 128 ) > 0: # Eingang 16
di16 = 1
else:
di16 = 0
# ----------------------------------------------
# - Zuordnung Eingдnge 17 - 24 --> di17 - di24 -
# ----------------------------------------------
if ( Byte[30] & 1 ) > 0: # Eingang 17
di17 = 1
else:
di17 = 0
if ( Byte[30] & 2 ) > 0: # Eingang 18
di18 = 1
else:
di18 = 0
if ( Byte[30] & 4 ) > 0: # Eingang 19
di19 = 1
else:
di19 = 0
if ( Byte[30] & 8 ) > 0: # Eingang 20
di20 = 1
else:
di20 = 0
if ( Byte[30] & 16 ) > 0: # Eingang 21
di21 = 1
else:
di21 = 0
if ( Byte[30] & 32 ) > 0: # Eingang 22
di22 = 1
else:
di22 = 0
if ( Byte[30] & 64 ) > 0: # Eingang 23
di23 = 1
else:
di23 = 0
if ( Byte[30] & 128 ) > 0: # Eingang 24
di24 = 1
else:
di24 = 0
###########################################################################
# ------------------------------------------
# - Zuordnung Ausgдnge 1 - 8 --> da1 - da8 -
# ------------------------------------------
if ( Byte[31] & 1 ) > 0: # Ausgang 1
da1 = 1
else:
da1 = 0
if ( Byte[31] & 2 ) > 0: # Ausgang 2
da2 = 1
else:
da2 = 0
if ( Byte[31] & 4 ) > 0: # Ausgang 3
da3 = 1
else:
da3 = 0
if ( Byte[31] & 8 ) > 0: # Ausgang 4
da4 = 1
else:
da4 = 0
if ( Byte[31] & 16 ) > 0: # Ausgang 5
da5 = 1
else:
da5 = 0
if ( Byte[31] & 32 ) > 0: # Ausgang 6
da6 = 1
else:
da6 = 0
if ( Byte[31] & 64 ) > 0: # Ausgang 7
da7 = 1
else:
da7 = 0
if ( Byte[31] & 128 ) > 0: # Ausgang 8
da8 = 1
else:
da8 = 0
# --------------------------------------------
# - Zuordnung Ausgдnge 9 - 16 --> da9 - da16 -
# --------------------------------------------
if ( Byte[32] & 1 ) > 0: # Ausgang 9
da9 = 1
else:
da9 = 0
if ( Byte[32] & 2 ) > 0: # Ausgang 10
da10 = 1
else:
da10 = 0
if ( Byte[32] & 4 ) > 0: # Ausgang 11
da11 = 1
else:
da11 = 0
if ( Byte[32] & 8 ) > 0: # Ausgang 12
da12 = 1
else:
da12 = 0
if ( Byte[32] & 16 ) > 0: # Ausgang 13
da13 = 1
else:
da13 = 0
if ( Byte[32] & 32 ) > 0: # Ausgang 14
da14 = 1
else:
da14 = 0
if ( Byte[32] & 64 ) > 0: # Ausgang 15
da15 = 1
else:
da15 = 0
if ( Byte[32] & 128 ) > 0: # Ausgang 16
da16 = 1
else:
da16 = 0
###########################################################################
# --------------------------------------
# - Zuordnung Merker 1 - 8 --> m1 - m8 -
# --------------------------------------
if ( Byte[33] & 1 ) > 0: # Merker 1
m1 = 1
else:
m1 = 0
if ( Byte[33] & 2 ) > 0: # Merker 2
m2 = 1
else:
m2 = 0
if ( Byte[33] & 4 ) > 0: # Merker 3
m3 = 1
else:
m3 = 0
if ( Byte[33] & 8 ) > 0: # Merker 4
m4 = 1
else:
m4 = 0
if ( Byte[33] & 16 ) > 0: # Merker 5
m5 = 1
else:
m5 = 0
if ( Byte[33] & 32 ) > 0: # Merker 6
m6 = 1
else:
m6 = 0
if ( Byte[33] & 64 ) > 0: # Merker 7
m7 = 1
else:
m7 = 0
if ( Byte[33] & 128 ) > 0: # Merker 8
m8 = 1
else:
m8 = 0
# ----------------------------------------
# - Zuordnung Merker 9 - 16 --> m9 - m16 -
# ----------------------------------------
if ( Byte[34] & 1 ) > 0: # Merker 9
m9 = 1
else:
m9 = 0
if ( Byte[34] & 2 ) > 0: # Merker 10
m10 = 1
else:
m10 = 0
if ( Byte[34] & 4 ) > 0: # Merker 11
m11 = 1
else:
m11 = 0
if ( Byte[34] & 8 ) > 0: # Merker 12
m12 = 1
else:
m12 = 0
if ( Byte[34] & 16 ) > 0: # Merker 13
m13 = 1
else:
m13 = 0
if ( Byte[34] & 32 ) > 0: # Merker 14
m14 = 1
else:
m14 = 0
if ( Byte[34] & 64 ) > 0: # Merker 15
m15 = 1
else:
m15 = 0
if ( Byte[34] & 128 ) > 0: # Merker 16
m16 = 1
else:
m16 = 0
# ------------------------------------------
# - Zuordnung Merker 17 - 24 --> m17 - m24 -
# ------------------------------------------
if ( Byte[35] & 1 ) > 0: # Merker 17
m17 = 1
else:
m17 = 0
if ( Byte[35] & 2 ) > 0: # Merker 18
m18 = 1
else:
m18 = 0
if ( Byte[35] & 4 ) > 0: # Merker 19
m19 = 1
else:
m19 = 0
if ( Byte[35] & 8 ) > 0: # Merker 20
m20 = 1
else:
m20 = 0
if ( Byte[35] & 16 ) > 0: # Merker 21
m21 = 1
else:
m21 = 0
if ( Byte[35] & 32 ) > 0: # Merker 22
m22 = 1
else:
m22 = 0
if ( Byte[35] & 64 ) > 0: # Merker 23
m23 = 1
else:
m23 = 0
if ( Byte[35] & 128 ) > 0: # Merker 24
m24 = 1
else:
m24 = 0
###########################################################################
# ---------------------------------------------------
# - Zuordnung Schieberegisterbits 1 - 8 --> s1 - s8 -
# ---------------------------------------------------
if ( Byte[36] & 1 ) > 0: # S-Bit 1
s1 = 1
else:
s1 = 0
if ( Byte[36] & 2 ) > 0: # S-Bit 2
s2 = 1
else:
s2 = 0
if ( Byte[36] & 4 ) > 0: # S-Bit 3
s3 = 1
else:
s3 = 0
if ( Byte[36] & 8 ) > 0: # S-Bit 4
s4 = 1
else:
s4 = 0
if ( Byte[36] & 16 ) > 0: # S-Bit 5
s5 = 1
else:
s5 = 0
if ( Byte[36] & 32 ) > 0: # S-Bit 6
s6 = 1
else:
s6 = 0
if ( Byte[36] & 64 ) > 0: # S-Bit 7
s7 = 1
else:
s7 = 0
if ( Byte[36] & 128 ) > 0: # S-Bit 8
s8 = 1
else:
s8 = 0
###########################################################################
# ------------------------------------------------
# - Zuordnung Analogeingдnge 1 - 8 --> ai1 - ai8 -
# ------------------------------------------------
ai1 = ( ( Byte[39] * 256 ) + Byte[38] )
ai2 = ( ( Byte[41] * 256 ) + Byte[40] )
ai3 = ( ( Byte[43] * 256 ) + Byte[42] )
ai4 = ( ( Byte[45] * 256 ) + Byte[44] )
ai5 = ( ( Byte[47] * 256 ) + Byte[46] )
ai6 = ( ( Byte[49] * 256 ) + Byte[48] )
ai7 = ( ( Byte[51] * 256 ) + Byte[50] )
ai8 = ( ( Byte[53] * 256 ) + Byte[52] )
###########################################################################
# ------------------------------------------------
# - Zuordnung Analogausgдnge 1 - 2 --> ao1 - ao2 -
# ------------------------------------------------
ao1 = ( ( Byte[55] * 256 ) + Byte[54] )
ao2 = ( ( Byte[57] * 256 ) + Byte[56] )
###########################################################################
# ----------------------------------------------
# - Zuordnung Analogmerker 1 - 6 --> am1 - am6 -
# ----------------------------------------------
am1 = ( ( Byte[59] * 256 ) + Byte[58] )
am2 = ( ( Byte[61] * 256 ) + Byte[60] )
am3 = ( ( Byte[63] * 256 ) + Byte[62] )
am4 = ( ( Byte[65] * 256 ) + Byte[64] )
am5 = ( ( Byte[67] * 256 ) + Byte[66] )
am6 = ( ( Byte[69] * 256 ) + Byte[68] )
##############
## - Tests - #
##############
print "Eingдnge 1 - 24"
print di1,di2,di3,di4,di5,di6,di7,di8
print di9,di10,di11,di12,di13,di14,di15,di16
print di17,di18,di19,di20,di21,di22,di23,di24
print "Ausgдnge 1 - 16"
print da1,da2,da3,da4,da5,da6,da7,da8
print da9,da10,da11,da12,da13,da14,da15,da16
print "Merker 1 - 24"
print m1,m2,m3,m4,m5,m6,m7,m8
print m9,m10,m11,m12,m13,m14,m15,m16
print m17,m18,m19,m20,m21,m22,m23,m24
print "Schieberegisterbits 1 - 8"
print s1,s2,s3,s4,s5,s6,s7,s8
print "Analogeingдnge 1 - 8"
print ai1,ai2,ai3,ai4,ai5,ai6,ai7,ai8
print "Analogausgдnge 1 - 2"
print ao1,ao2
print "Analogmerker 1 - 6"
print am1,am2,am3,am4,am5,am6
# zum Testen !!
#for i2 in range(71): # nur zum Testen !!!
#print i2,Byte[i2] # nur zum Testen !!!
########################
# GUI
########################
from Tkinter import *
Fenster=Tk()
button_start = Button(Fenster, text='LOGO Run', command=Logo_Start)
button_stop = Button(Fenster, text='LOGO Stop',command=Logo_Stop)
button_iostat = Button(Fenster, text='LOGO IO Status', command=Logo_iostatus)
button_start.grid (row=0, column=0)
button_stop.grid (row=0, column=1)
button_iostat.grid (row=0, column=2)
mainloop()
与人规矩,不与人巧!