From d98854dbca47c9d5d4a2fbd7ac308d82721ba7e9 Mon Sep 17 00:00:00 2001 From: NaruX Date: Tue, 28 Mar 2017 09:50:50 +0200 Subject: [PATCH] =?UTF-8?q?meldungen=20mit=20adress=20und=20l=C3=A4ngenang?= =?UTF-8?q?abe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- revpipyload/revpipyload.py | 44 ++++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/revpipyload/revpipyload.py b/revpipyload/revpipyload.py index 4d9a470..8c5add0 100755 --- a/revpipyload/revpipyload.py +++ b/revpipyload/revpipyload.py @@ -33,7 +33,6 @@ begrenzt werden! import gzip import proginit import os -import pickle import shlex import signal import socket @@ -515,13 +514,24 @@ class RevPiSlave(Thread): fh_proc = open(procimg, "r+b", 0) # Erste Meldung erhalten - meldung = self.rpi.recv(4) + meldung = self.rpi.recv(12) comtime = 0 - while meldung in msgcli: + while meldung[:4] in msgcli: ot = default_timer() - if meldung == b'PICT': + # Meldung zerlegen + command = meldung[:4] + try: + startval = int(meldung[4:-4]) + except: + startval = 0 + try: + lenval = int(meldung[-4:]) + except: + lenval = 0 + + if command == b'PICT': # piCtory Konfiguration senden proginit.logger.debug("transfair pictory configuration") fh_pic = open(configrsc, "rb") @@ -536,27 +546,23 @@ class RevPiSlave(Thread): # Abschlussmeldung self.rpi.send(b'PICOK') - if meldung == b'DATA': - proginit.logger.debug("read process image") - + if command == b'DATA': # Processabbild übertragen - block = 0 - fh_proc.seek(0) - while block < 4: + bcount = 0 + blength = lenval + fh_proc.seek(startval) + while bcount < blength: self.rpi.send(fh_proc.read(1024)) - block += 1 - - if meldung == b'SEND': - proginit.logger.debug("write to process image") + bcount += 1024 + if command == b'SEND': # Ausgänge empfangen - block = self.rpi.recv(1024) - test = pickle.loads(block) - fh_proc.seek(test[0]) - fh_proc.write(test[1]) + block = self.rpi.recv(lenval) + fh_proc.seek(startval) + fh_proc.write(block) # Nächste Meldung erhalten - meldung = self.rpi.recv(4) + meldung = self.rpi.recv(12) # Verarbeitungszeit prüfen comtime = default_timer() - ot