Hallo zusammen,
eine Frage bezüglich threading im Python.
Ich habe ein C Programm welches einen Wert vom 433mhz Empfänger an Python_1 Script übergibt.
Dies wird mithilfe von Startparametern realisiert: Starte Script 1 mit Parameter (./script1.py 1337)
Im Script1.py wird der Startparameter übernommen und diverse Bedingunen geprüft.
Hier wird dann ein weiteres Python_2 Script gestartet falls erfüllt.
In diesem Python_2 Script wird via threading und sleep eine Pause eingelegt. Im Anschluss wird eine Bedingung überprüft und mit If / Else verarbeitet. Das ganze funktioniert wirklich klasse bis auf eine kleinigkeit.
Wärend Script_2 in Pause läuft, kann mein Script_1 keine weiteren Werte empfangen und schläft sozusagen mit.
Script1 startet script2 via:
In Script2 wird sleep so realisiert:
import MySQLdb as mdb
import sys
import os
import time, threading
def wecker(gestellt):
print "20 Sekunden sind abgelaufen, nun wird der Status ereut überprüft!!!"
con = mdb.connect('localhost', 'XXXXXX', 'XXXXXXX', 'database');
with con:
cur = con.cursor()
cur.execute("SELECT status from status WHERE Name='Alarmanlage' ")
data = cur.fetchone()
statusalarmanlage = data[0]
inaktiv = 'deaktiviert'
if [font="Monaco, Consolas, Courier, monospace"]statusalarmanlage [/font]== inaktiv:
print "Alarm wird nicht mehr ausgelÃoest."
else:
print "Alarm wird ausgeloest"
timer = threading.Timer(20, wecker,
[time.strftime("%H:%M:%S")])
timer.start()
Alles anzeigen
Der aufmerksame Leser merkt nun das es sich um eine Alarmanlage handelt.
Hier sollen einzelne Sensoren erst nach einer Verzögerung von X Sekunden den Aussenalarm aktivieren , falls man doch mal vergisst die Anlage zu entschärfen... Im Prinzip muss also das C Programm weiterhin in der Lage sein die Alarmanlage zu entschärfen, wärenddessen der Timer abläuft. Nach XX Sekunden wird der Status der Alarmanlage abgefragt und entsprechend gehandelt.