ich habe ein Problem mit Klassen, ich versuche mein Problem zu beschreiben und vielleicht versteh ich nur die Grundlage nicht genau.
Pixend.py:
Ich habe eine Klasse erstellt.
Code: Alles auswählen
class plc():
"""
Nur zum kommunizieren mit der Pixtend PLC
"""
def __init__(self):
if start.DEBUG_XML == 'False':
from pixtendlib import Pixtend
self.p = Pixtend() # Create instance
else:
print('Pixend.py ==> Pixtend im Modus Debug: ' + str(start.DEBUG_XML))
self.p = None # Create instance
# Open SPI bus for communication
if start.DEBUG_XML == 'False':
try:
self.p.open()
except IOError as io_err:
# On error, print an error text and delete the Pixtend instance.
print("Error opening the SPI bus! Error is: ", io_err)
self.p.close()
self.p = None
def run(self):
....................................
Threading.py:
Threading Klasse:
Code: Alles auswählen
class Pixtend_Thread(threading.Thread):
def __init__(self, threadID, name, delay, Startup, Debug):
threading.Thread.__init__(self)
import Pixtend
self.threadID = threadID
self.name = name
self.delay = delay
self.startup = Startup
self.Debug = Debug
def run(self):
if start.startup_done == True:
while True:
time.sleep(int(self.delay))
tstart = time.time()
if self.Debug == 'True': #Todo korrekte bedingung?
Pixend.pixboard.run()
else:
print ('Threading_PRG.py/Pixtend im Debug Modus')
tstop = time.time()
print("Threading_PRG.py/Zeit für PixendThread - " +str(tstop - tstart))
habe versucht das zu ändern indem ich das Objekt im der Hauptklasse zu initiieren in dem __init__ Block.
Und zwar so:
Code: Alles auswählen
# --- Steuerung der SPS aus dem Programm ---
class Pixtend_Thread(threading.Thread):
pixboard = Pixtend.plc()
def __init__(self, threadID, name, delay, Startup, Debug):
threading.Thread.__init__(self)
import Pixtend
self.threadID = threadID
self.name = name
self.delay = delay
self.startup = Startup
self.Debug = Debug
def run(self):
if start.startup_done == True:
while True:
time.sleep(int(self.delay))
tstart = time.time()
if self.Debug == 'True': #Todo korrekte bedingung?
self.pixboard.run()
#Pixend.self.pixboard.run()
#Threading_PRG.thread_pixtend.start()
Wie kann ich es programmieren, dass wenn ich diese Zeile auskommentiere, alles weg ist?
Hab schon einiges probiert und ich möchte es nicht zu kompliziert machen, wenn es nicht nötig ist bzw. gibt es ja gar keine Lösung.
Danke