blockweise übertragung bei mehr als 1024 Bytes

This commit is contained in:
2017-03-28 14:58:56 +02:00
parent 8c24fcceba
commit 9ded8c390a

View File

@@ -514,7 +514,10 @@ class RevPiSlave(Thread):
fh_proc = open(procimg, "r+b", 0)
# Erste Meldung erhalten
try:
meldung = self.rpi.recv(12)
except:
continue
comtime = 0
while meldung[:4] in msgcli:
@@ -548,35 +551,48 @@ class RevPiSlave(Thread):
if command == b'DATA':
# Processabbild übertragen
bcount = 0
blength = lenval
fh_proc.seek(startval)
while bcount < blength:
self.rpi.send(fh_proc.read(1024))
bcount += 1024
sendcount = lenval
try:
while sendcount > 1024:
sendcount -= self.rpi.send(fh_proc.read(1024))
self.rpi.send(fh_proc.read(sendcount))
except:
break
if command == b'SEND':
# Ausgänge empfangen
try:
block = self.rpi.recv(lenval)
except:
break
fh_proc.seek(startval)
fh_proc.write(block)
# Nächste Meldung erhalten
try:
meldung = self.rpi.recv(12)
except:
break
# Verarbeitungszeit prüfen
comtime = default_timer() - ot
if comtime > self.deadtime:
proginit.logger.error(
proginit.logger.warning(
"runtime more than {} ms: {}".format(
int(self.deadtime * 1000), int(comtime * 1000)
)
)
break
#break
fh_proc.close()
try:
self.rpi.shutdown(socket.SHUT_RDWR)
self.rpi.close()
except:
pass
if self.zeroonexit or comtime > self.deadtime and self.zeroonerror:
_zeroprocimg()
@@ -741,7 +757,7 @@ class RevPiPyLoad():
if self.plcslave:
# Slaveausfuehrung übergeben
th_plc = RevPiSlave()
th_plc.zeroonerror = self.zerooneerror
th_plc.zeroonerror = self.zeroonerror
th_plc.zeroonexit = self.zeroonexit
else: