Zeitgesteuerte Ampelphasen

puma752

Newbie
Registriert
Aug. 2015
Beiträge
1
Moin Moin,

für ein eigens entwickeltes Projekt möchte ich eine Ampelphase über einen Timer steuern.
Leider bin ich noch am Start meiner C#-Karriere und benötige daher EURE Hilfe.
Es geht darum, dass ich es einfach nicht hinbekomme, eine Ampehlphase zu programmieren die sich alle paar Sekunden wiederholt. Mein Code schaft es bisher nur, überhaupt eine wechselnde Ausgabe zu geben.
Hier ein teil meines bisherigen Codes:

private void btnWeiter_Click(object sender, EventArgs e)
{ // Timer starten, Interval anlegen
timer1.Start();
timer1.Interval = 2000;
}

private void timer1_Tick(object sender, EventArgs e)
{
timer1.Interval = 2000;
timer1.Tick += new EventHandler(labelDich);
}

int timerCount = 0;
private void labelDich(object sender, EventArgs e)
{
timerCount++;
Timer t2 = new Timer();

if (timerCount < 2)
{
label1.BackColor = Color.Red;
label2.BackColor = Color.Yellow;
label3.BackColor = Color.Black;
}
else if (timerCount > 2 && timerCount < 8)
{
label1.BackColor = Color.Red;
label2.BackColor = Color.Yellow;
label3.BackColor = Color.Green;
}
else if (timerCount > 8 && timerCount < 10 && timerCount < 12)
{
label1.BackColor = Color.Black;
label2.BackColor = Color.Yellow;
label3.BackColor = Color.Black;
}

// Und hier sollte die Ampehphase sich jetzt wiederholen!!!!!
Update();
}

Bestimmt könnt Ihr mir helfen und daher schon mal vielen Dank im Vorraus ;)
 
die 3 Label Zeilen sollen die 4 Ampelzustände beschreiben ? ... hm liegt da nicht schon nen Fehler begraben ?

btw sowas macht man aber eher über SPS .
 
Wenn sich etwas (selbstständig) wiederholen soll, steht es oft in einer Schleife. Alternativ könnte man den Timer mit Modulo quasi wieder zurücksetzen (bei einer externen Schleife).

puma752 schrieb:
timerCount < 10 && timerCount < 12
Hmm...
 
Zuletzt bearbeitet:
Schleifen bringen hier nicht viel. Der Zähler muss irgendwann wieder zurückgesetzt werden, wahlweise über Modulo oder mit einer einfachen if-Abfrage:
Code:
if (timerCount > 12)
  timerCount = 0;

Ansonsten sieht der Code zumindest so aus, als würde er funktionieren. Was sich mir nicht erschließt:
Code:
 Timer t2 = new Timer();
Wofür ist das? Das erstellt doch nur einen Timer und wirft ihn weg, bevor er benutzt wird. timer1 tut schon das, was du willst.
 
Zurück
Oben