Forum: Mikrocontroller und Digitale Elektronik Zeitverzögerung in switch-case


von Herbert Feuerstein (Gast)


Lesenswert?

Hallo,

ich würde gerne innerhab einer switch-case Anweisung eine zeitliche 
Verzögerung von bestimmmter Zeit einbauen.

Also jeder case würde nur nach einer bestimmten Zeit Befehle ausgeben.

Es gibt hier sicher viele Möglichkeiten das zu machen, und ich habe auch 
schon einige Ideen wie ich das umsetzen könnte, allerdings frage ich 
mich gerade wie man das wohl am elegantesten löst.

Wohlbemerkt soll die Verzögerung über eine einstellbare Zeit 
funktionieren, und nicht nur einen Programmablauf lange verzögern.

Für ein paar Ideen wäre ich euch sehr dankbar.

Das wohl naheliegenste wäre eine Funktion zu implementieren, die in 
jedem case aufgerufen wird, und erst nach ablauf der Zeit eine 
If-Abfrage bedient.

Allerdings könnte man das sicherlich auch durch eine andere Konstruktion 
der switch-case Anweisungen selbst lösen.

Danke für eure Gedankenanstöße

Herbert

von Herbert Feuerstein (Gast)


Lesenswert?

Ich sollte vielleicht noch hinzufügen, daß es sich um C handelt :)

von Oliver J. (skriptkiddy)


Lesenswert?


von Herbert Feuerstein (Gast)


Lesenswert?

Das ist ja echt mal ein Zufall :)

von Herbert Feuerstein (Gast)


Lesenswert?

....der bestehende Thread liefert allerdings auch keine guten Antworten 
:(

wie gesagt. Ich will nur um ein paar Millisekunden (aber die genau 
einstellbar) verzögern und das ganze so elegant und gut lesbar wie 
möglich.

von Oliver J. (skriptkiddy)


Lesenswert?

Was soll das ganze bringen?

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Herbert Feuerstein schrieb:
> wie gesagt. Ich will nur um ein paar Millisekunden (aber die genau
> einstellbar) verzögern und das ganze so elegant und gut lesbar wie
> möglich.

Warum nicht eine Funktion bauen, die aktiv eine einstellbare Zeit 
wartet, und sie in jedem Case-Zweig aufrufen?

von Guido (Gast)


Lesenswert?

Hallo,

Markus W. schrieb:
> Warum nicht eine Funktion bauen, die aktiv eine einstellbare Zeit
> wartet, und sie in jedem Case-Zweig aufrufen?

Oder in jedem Case-Zweig eine Variable mit der Wartezeit definieren und 
nach dem Case-Zweig die Wartefunktion aufrufen?

Mit freundlichen Grüßen
Guido

von Falk B. (falk)


Lesenswert?

Siehe statemachine

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Guido schrieb:
> Oder in jedem Case-Zweig eine Variable mit der Wartezeit definieren und
> nach dem Case-Zweig die Wartefunktion aufrufen?

Stimmt, ist geschickter, aber dann frag ich mich, warum man nicht gleich 
ein Array nimmt, in dem man die Wartezeit definiert. Wäre schneller. 
Andererseits will man ja Zeit verbraten. Aber warum unbedingt per 
switch/case?

Bin mir nicht sicher, ob ich den Thread-Ersteller richtig verstanden 
habe...
"Also jeder case würde nur nach einer bestimmten Zeit Befehle ausgeben."
Das heißt, die Zeitschleife müsste tatsächlich in jeden case-Abschnitt 
eingebaut werden, und zwar immer gleich am Anfang, weil danach noch 
"Befehle ausgegeben" werden.

von Karl H. (kbuchegg)


Lesenswert?

Ehe man da weitermacht, sollte man sich fragen, ob Zeitschleifen 
überhaupt der richtige Weg sind, oder ob nicht eine Uhr, die zu 
bestimmten Zeitpunkten Aktionen auslöst der richtigere Weg wären.

von Herbert Feuerstein (Gast)


Lesenswert?

Danke für die Antworten,

@Karl Heinz Buchegger:

Genau. Ich mache das auch mit einer Uhr und nicht mit Zeitschleifen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.