Seite 1 von 1

Funktion zur Zeitüberwachung gesucht

Verfasst: Sonntag 21. Mai 2017, 15:09
von jbaben
Hallo,

ich suche eine Funktion für die Zeitüberwachung (Timeout) für eine Bewegungsüberwachung.
Antrieb starten
Zeitüberwachung starten
wenn Position erreicht: Antrieb stopp, Zeitüberwachung stopp
wenn Zeitüberwachung erreicht:Fehler, Antrieb stopp

MfG

Juergen B.

:?:

Re: Funktion zur Zeitüberwachung gesucht

Verfasst: Sonntag 21. Mai 2017, 15:33
von snafu
Mit welcher Bibliothek arbeitest du dabei? Oftmals bieten die schon eigene Funktionalität für das Setzen von Timeouts.

Re: Funktion zur Zeitüberwachung gesucht

Verfasst: Sonntag 21. Mai 2017, 15:41
von Alfons Mittelmeyer
from treading import Timer

t = Timer(sometime,alarm_function)

und dann

t.start() oder t.cancel()

Aber Achtung, das ist ein eigener Thread. Da mußt Du durch entsprechenden lock dafür sorgen, daß nicht zwei Threads zur gleichen Zeit auf dasselbe zugreifen oder den Timer zuvor ausschalten

Re: Funktion zur Zeitüberwachung gesucht

Verfasst: Sonntag 21. Mai 2017, 17:24
von jbaben
Hallo,

vielen Dank für den Hinweis.
Also mit "t.start()" kann ich die Überwachung starten.
Aber mit "t.cancel()" kann ich die Überwachung nicht stoppen, ich erhalte die Meldung "AttributeError: 'Thread' object has no attribute 'cancel'.
Wie kann ich den Timer stoppen ?

MfG

Juergen B.

Re: Funktion zur Zeitüberwachung gesucht

Verfasst: Sonntag 21. Mai 2017, 17:43
von BlackJack
@jbaben: Den `Timer` kannst Du mit `cancel()` abbrechen. Dazu musst Du aber auch einen `Timer` starten und keinen `Thread`.

Re: Funktion zur Zeitüberwachung gesucht

Verfasst: Sonntag 21. Mai 2017, 21:18
von Alfons Mittelmeyer
@jbaben: natürlich kannst Du den Timer stoppen. Aber wenn er bereits zugeschlagen hat, dann ist es zu spät!