Pyserial und lange Wartezeit
Verfasst: Montag 18. März 2013, 09:17
Hallo zusammen.
besten dank nochmals für die Installationshilfe.
Nun Mein Programm funktioniert soweit, nur habe ich ein Kleines Problem, die Antwort lässt etwa 2 Sekunden auf sich warten. Wenn ich die gleiche Übetragung mittels dem Original Konfigurationsprogramm tätige ist sie Unverzüglich wieder da?
Was habe ich falsch eingegeben?
besten Dank für jeden Tipp im Voraus
besten dank nochmals für die Installationshilfe.
Nun Mein Programm funktioniert soweit, nur habe ich ein Kleines Problem, die Antwort lässt etwa 2 Sekunden auf sich warten. Wenn ich die gleiche Übetragung mittels dem Original Konfigurationsprogramm tätige ist sie Unverzüglich wieder da?
Was habe ich falsch eingegeben?
besten Dank für jeden Tipp im Voraus
Code: Alles auswählen
# -*- coding: cp1252 -*-
## API calls ##
import serial
import io
import time## Creates an object, Spectrometer ##
class SEW():
# Parameters
baud = 9600
byte = 8 # 17 bytes ## potential problem here##
port=3
def init( self, port ):
self.port = port
self.isOpen = False
return
## Open and initize the serial port ##
def start( self,):
if not self.isOpen :
self.ser = serial.Serial()
self.ser.baudrate = self.baud
self.ser.parity =serial.PARITY_EVEN
self.ser.port = self.port
self.ser.timeout = 2
self.ser.open()
print( "Opened port." )
print (self.ser.portstr)
self.isOpen = True
return
## Close the serial port ##
def close( self ):
self.ser.close()
self.isOpen = False
print( "Closed port." )
return
## Write ##
def write( self, command ):
self.start()
#time.sleep( 0.1 )
self.ser.write( command)
#self.sio.flush()
print( "{0:10}{1}".format( "Sent:", command ) )
return
## Read ##
def read( self, byte ):
self.start()
read = self.ser.read( byte )
print( "{0:10}{1}".format( "Read:", read ) )
return read
### Ende Class
### Aufbereiten Parameter SEW
#Fixe Parameter
SD2=0x02
TYP=0x86
#Variable Parameter
ADR=00
Index=10024
Subindex=1
### Aufbereiten Parameter SEW
#Variable Parameter
ADR=00
Index=10024
Subindex=1
def Movilink (ADR,Index,Subindex):
#Fixe Parameter
SD1=0x02
TYP=0x86
VERW=0x31
PD3H=0
PD3L=0
PD4H=0
PD4L=0
#Index Aufarbeietn
ind= Index
ind2=float(ind)
wert2=(ind2/256)
str1 = repr(wert2)
wert1= (str1.split('.', 2 ))
IndHigh= int(wert1[0])
text1="0."+(wert1[1])
float1=float(text1)
IndLow=int((float("0."+wert1[1])*256))
Subind=(Subindex)
print (ind)
print (IndHigh)
print (IndLow)
print (Subindex)
print int(SD1)
test=int(SD1)
print test
#CRC Aufbereiten
CRC=(int(SD1) ^ (ADR)^ (int(TYP))^ int(VERW)^ int(Subind) ^ (IndHigh)^ (IndLow)^ (PD3H)^ (PD3L)^ (PD4H)^ (PD4L))
print (CRC)
String=str(bytearray([(int(SD1)),int(ADR),int(TYP),int(VERW),int(Subind),IndHigh,IndLow,PD3H,PD3L,PD4H,PD4H,CRC]))#.encode("utf-8")
print String
telegramm=String
return (telegramm)
#INIT
objSEW=SEW()
result=objSEW.init(3)
#öffnen
Result=objSEW.start()
Parameter=[0,0,0]
Subparameter=[0,0,0]
Parameter[0]=8325
Subparameter[0]=0
Parameter[1]=8301
Subparameter[1]=0
for i in range(0,2):
par1=Parameter[i]
par2=Subparameter[i]
Telegramm=Movilink(0,par1,par2)
print Telegramm
### Parameterübertragung
#senden
send=objSEW.write(Telegramm)
read=objSEW.read(25)
print read
leng=len(read)
print "Länge: "+str(leng)
if read !="":
Text=int(ord(read[1]))
print Text
else:
print "Kein Empfang"
#Schliessen
Result=objSEW.close()