From 100e23aa26e65cca63311faf656ce3153ab88cdc Mon Sep 17 00:00:00 2001 From: NaruX Date: Thu, 20 Jul 2017 17:05:23 +0200 Subject: [PATCH] Neuen NetworkFileHandler implementiert --- doc/revpipyload.html | 143 ++++++++++++++++++++++++++++++++++--- eric-revpipyload.api | 9 ++- eric-revpipyload.bas | 2 + revpipyload/revpipyload.py | 71 ++++++++---------- 4 files changed, 172 insertions(+), 53 deletions(-) diff --git a/doc/revpipyload.html b/doc/revpipyload.html index 8edc9dc..59ac401 100644 --- a/doc/revpipyload.html +++ b/doc/revpipyload.html @@ -49,12 +49,21 @@ Classes RevPiPyLoad Hauptklasse, die alle Funktionen zur Verfuegung stellt. + +RevPiSlave + + +RevPiSlaveDev +

Functions

- + + + +
None
_zeroprocimgSetzt Prozessabbild auf NULL.


@@ -312,9 +321,6 @@ Methods _spopen Startet das PLC Programm. -_zeroprocimg -Setzt Prozessabbild auf NULL. - newlogfile Konfiguriert die FileHandler auf neue Logdatei. @@ -369,13 +375,7 @@ Prozessliste
subprocess
- -

-RevPiPlc._zeroprocimg

-_zeroprocimg() -

-Setzt Prozessabbild auf NULL. -

+

RevPiPlc.newlogfile

newlogfile() @@ -788,5 +788,126 @@ Statuscode:
Up
+

+ +

RevPiSlave

+ +

+Derived from

+Thread +

+Class Attributes

+ + +
None
+

+Class Methods

+ + +
None
+

+Methods

+ + + + + + + + + + + + + + +
RevPiSlaveInstantiiert RevPiSlave-Klasse.
newlogfileKonfiguriert die FileHandler auf neue Logdatei.
run
stopBeendet Slaveausfuehrung.
+

+Static Methods

+ + +
None
+ +

+RevPiSlave (Constructor)

+RevPiSlave() +

+Instantiiert RevPiSlave-Klasse. +

+

+RevPiSlave.newlogfile

+newlogfile() +

+Konfiguriert die FileHandler auf neue Logdatei. +

+

+RevPiSlave.run

+run() + +

+RevPiSlave.stop

+stop() +

+Beendet Slaveausfuehrung. +

+
Up
+

+ +

RevPiSlaveDev

+ +

+Derived from

+Thread +

+Class Attributes

+ + +
None
+

+Class Methods

+ + +
None
+

+Methods

+ + + + + + + + + + + +
RevPiSlaveDev
run
stop
+

+Static Methods

+ + +
None
+ +

+RevPiSlaveDev (Constructor)

+RevPiSlaveDev(devcon, deadtime) + +

+RevPiSlaveDev.run

+run() + +

+RevPiSlaveDev.stop

+stop() + +
Up
+

+ +

_zeroprocimg

+_zeroprocimg() +

+Setzt Prozessabbild auf NULL. +

+
Up

\ No newline at end of file diff --git a/eric-revpipyload.api b/eric-revpipyload.api index bdcbe29..3c7b587 100644 --- a/eric-revpipyload.api +++ b/eric-revpipyload.api @@ -29,7 +29,6 @@ revpipyload.PipeLogwriter?1(logfilename) revpipyload.RevPiPlc._configureplw?5() revpipyload.RevPiPlc._setuppopen?5() revpipyload.RevPiPlc._spopen?5(lst_proc) -revpipyload.RevPiPlc._zeroprocimg?5() revpipyload.RevPiPlc.newlogfile?4() revpipyload.RevPiPlc.run?4() revpipyload.RevPiPlc.stop?4() @@ -60,6 +59,14 @@ revpipyload.RevPiPyLoad.xml_reload?4() revpipyload.RevPiPyLoad.xml_setconfig?4(dc, loadnow=False) revpipyload.RevPiPyLoad.xml_setpictoryrsc?4(filebytes, reset=False) revpipyload.RevPiPyLoad?1() +revpipyload.RevPiSlave.newlogfile?4() +revpipyload.RevPiSlave.run?4() +revpipyload.RevPiSlave.stop?4() +revpipyload.RevPiSlave?1() +revpipyload.RevPiSlaveDev.run?4() +revpipyload.RevPiSlaveDev.stop?4() +revpipyload.RevPiSlaveDev?1(devcon, deadtime) +revpipyload._zeroprocimg?5() revpipyload.configrsc?7 revpipyload.picontrolreset?7 revpipyload.procimg?7 diff --git a/eric-revpipyload.bas b/eric-revpipyload.bas index 9aaa29e..ca3e92c 100644 --- a/eric-revpipyload.bas +++ b/eric-revpipyload.bas @@ -1,2 +1,4 @@ PipeLogwriter Thread RevPiPlc Thread +RevPiSlave Thread +RevPiSlaveDev Thread diff --git a/revpipyload/revpipyload.py b/revpipyload/revpipyload.py index 0b8beae..7033e9e 100755 --- a/revpipyload/revpipyload.py +++ b/revpipyload/revpipyload.py @@ -499,6 +499,7 @@ class RevPiSlave(Thread): def stop(self): """Beendet Slaveausfuehrung.""" proginit.logger.debug("enter RevPiSlave.stop()") + self._evt_exit.set() self.so.shutdown(socket.SHUT_RDWR) @@ -521,7 +522,7 @@ class RevPiSlaveDev(Thread): def run(self): proginit.logger.debug("enter RevPiSlaveDev.run()") - msgcli = [b'DATA', b'PICT', b'SEND', b'CONF'] + msgcli = [b'DATA', b'PICT', b'SEND'] proginit.logger.info("connected from {}".format(self._addr)) # Prozessabbild öffnen @@ -530,8 +531,8 @@ class RevPiSlaveDev(Thread): while not self._evt_exit.is_set(): # Meldung erhalten try: - netcmd = self._devcon.recv(4) - #proginit.logger.debug("command {}".format(netcmd)) + netcmd = self._devcon.recv(16) + # proginit.logger.debug("command {}".format(netcmd)) except: break @@ -539,10 +540,11 @@ class RevPiSlaveDev(Thread): ot = default_timer() # Wenn Meldung ungültig ist aussteigen - if netcmd not in msgcli: + cmd = netcmd[:4] + if cmd not in msgcli: break - if netcmd == b'PICT': + if cmd == b'PICT': # piCtory Konfiguration senden proginit.logger.debug( "transfair pictory configuration: {}".format(configrsc) @@ -560,49 +562,36 @@ class RevPiSlaveDev(Thread): self._devcon.send(b'PICOK') continue - if netcmd == b'CONF': - meldung = self._devcon.recv(16) - - # Konfiguraiton zerlegen - try: - self._startvalr = int(meldung[0:4]) - except: - self._devcon.send(b'CFGXX') - continue - try: - self._lenvalr = int(meldung[4:8]) - except: - self._devcon.send(b'CFGXX') - continue - try: - self._startvalw = int(meldung[8:12]) - except: - self._devcon.send(b'CFGXX') - continue - try: - self._lenvalw = int(meldung[12:16]) - except: - self._devcon.send(b'CFGXX') - continue - self._devcon.send(b'CFGOK') - - if netcmd == b'DATA': + if cmd == b'DATA': # Processabbild übertragen - fh_proc.seek(self._startvalr) + # CMD_|POS_|LEN_|RSVE = 16 + + position = int(netcmd[4:8]) + length = int(netcmd[8:12]) + + fh_proc.seek(position) try: - self._devcon.sendall(fh_proc.read(self._lenvalr)) + self._devcon.sendall(fh_proc.read(length)) except: break - if netcmd == b'SEND': + if cmd == b'SEND': # Ausgänge empfangen - try: - block = self._devcon.recv(self._lenvalw) - except: - break - fh_proc.seek(self._startvalw) + # CMD_|POS_|LEN_|RSVE = 16 + + position = int(netcmd[4:8]) + length = int(netcmd[8:12]) + +# try: + block = self._devcon.recv(length) +# except: +# break + fh_proc.seek(position) fh_proc.write(block) + # Record seperator + self._devcon.send(b'\x1e') + # Verarbeitungszeit prüfen comtime = default_timer() - ot if comtime > self._deadtime: @@ -611,7 +600,7 @@ class RevPiSlaveDev(Thread): int(self._deadtime * 1000), int(comtime * 1000) ) ) - #break +# break fh_proc.close() self._devcon.close()