mirror of
https://github.com/naruxde/revpipyload.git
synced 2025-11-08 15:13:52 +01:00
blockweise übertragung bei mehr als 1024 Bytes
This commit is contained in:
@@ -514,7 +514,10 @@ class RevPiSlave(Thread):
|
|||||||
fh_proc = open(procimg, "r+b", 0)
|
fh_proc = open(procimg, "r+b", 0)
|
||||||
|
|
||||||
# Erste Meldung erhalten
|
# Erste Meldung erhalten
|
||||||
meldung = self.rpi.recv(12)
|
try:
|
||||||
|
meldung = self.rpi.recv(12)
|
||||||
|
except:
|
||||||
|
continue
|
||||||
|
|
||||||
comtime = 0
|
comtime = 0
|
||||||
while meldung[:4] in msgcli:
|
while meldung[:4] in msgcli:
|
||||||
@@ -548,35 +551,48 @@ class RevPiSlave(Thread):
|
|||||||
|
|
||||||
if command == b'DATA':
|
if command == b'DATA':
|
||||||
# Processabbild übertragen
|
# Processabbild übertragen
|
||||||
bcount = 0
|
|
||||||
blength = lenval
|
|
||||||
fh_proc.seek(startval)
|
fh_proc.seek(startval)
|
||||||
while bcount < blength:
|
|
||||||
self.rpi.send(fh_proc.read(1024))
|
sendcount = lenval
|
||||||
bcount += 1024
|
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':
|
if command == b'SEND':
|
||||||
# Ausgänge empfangen
|
# Ausgänge empfangen
|
||||||
block = self.rpi.recv(lenval)
|
try:
|
||||||
|
block = self.rpi.recv(lenval)
|
||||||
|
except:
|
||||||
|
break
|
||||||
fh_proc.seek(startval)
|
fh_proc.seek(startval)
|
||||||
fh_proc.write(block)
|
fh_proc.write(block)
|
||||||
|
|
||||||
# Nächste Meldung erhalten
|
# Nächste Meldung erhalten
|
||||||
meldung = self.rpi.recv(12)
|
try:
|
||||||
|
meldung = self.rpi.recv(12)
|
||||||
|
except:
|
||||||
|
break
|
||||||
|
|
||||||
# Verarbeitungszeit prüfen
|
# Verarbeitungszeit prüfen
|
||||||
comtime = default_timer() - ot
|
comtime = default_timer() - ot
|
||||||
if comtime > self.deadtime:
|
if comtime > self.deadtime:
|
||||||
proginit.logger.error(
|
proginit.logger.warning(
|
||||||
"runtime more than {} ms: {}".format(
|
"runtime more than {} ms: {}".format(
|
||||||
int(self.deadtime * 1000), int(comtime * 1000)
|
int(self.deadtime * 1000), int(comtime * 1000)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
break
|
#break
|
||||||
|
|
||||||
fh_proc.close()
|
fh_proc.close()
|
||||||
self.rpi.shutdown(socket.SHUT_RDWR)
|
try:
|
||||||
self.rpi.close()
|
self.rpi.shutdown(socket.SHUT_RDWR)
|
||||||
|
self.rpi.close()
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
if self.zeroonexit or comtime > self.deadtime and self.zeroonerror:
|
if self.zeroonexit or comtime > self.deadtime and self.zeroonerror:
|
||||||
_zeroprocimg()
|
_zeroprocimg()
|
||||||
@@ -741,7 +757,7 @@ class RevPiPyLoad():
|
|||||||
if self.plcslave:
|
if self.plcslave:
|
||||||
# Slaveausfuehrung übergeben
|
# Slaveausfuehrung übergeben
|
||||||
th_plc = RevPiSlave()
|
th_plc = RevPiSlave()
|
||||||
th_plc.zeroonerror = self.zerooneerror
|
th_plc.zeroonerror = self.zeroonerror
|
||||||
th_plc.zeroonexit = self.zeroonexit
|
th_plc.zeroonexit = self.zeroonexit
|
||||||
|
|
||||||
else:
|
else:
|
||||||
@@ -761,7 +777,7 @@ class RevPiPyLoad():
|
|||||||
th_plc.autoreload = self.autoreload
|
th_plc.autoreload = self.autoreload
|
||||||
th_plc.gid = int(self.globalconfig["DEFAULT"].get("plcgid", 65534))
|
th_plc.gid = int(self.globalconfig["DEFAULT"].get("plcgid", 65534))
|
||||||
th_plc.uid = int(self.globalconfig["DEFAULT"].get("plcuid", 65534))
|
th_plc.uid = int(self.globalconfig["DEFAULT"].get("plcuid", 65534))
|
||||||
th_plc.zeroonerror = self.zeroonerror
|
th_plc.zeroonerror = self.zeroonerror
|
||||||
th_plc.zeroonexit = self.zeroonexit
|
th_plc.zeroonexit = self.zeroonexit
|
||||||
proginit.logger.debug("created PLC watcher")
|
proginit.logger.debug("created PLC watcher")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user