Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Ampelkreuzung (https://www.delphipraxis.net/111667-ampelkreuzung.html)

Dani 9. Apr 2008 19:43

Re: Ampelkreuzung
 
Zitat:

Zitat von mkinzler
Zitat:

2. 30 Timer sind vllt. ein bissel viel, währnd 30 TThread auch nicht grade weniger sind.
Wobei 30 Timer auch 30 Threads sind.

Also mein Task-Manager sagt, dass das nicht stimmt :duck:

mkinzler 9. Apr 2008 19:50

Re: Ampelkreuzung
 
Seit wann sieht man Threads im Taskmanager :gruebel:

Apollonius 9. Apr 2008 19:53

Re: Ampelkreuzung
 
Das kann man einstellen. Und der TTimer der VCL arbeitet mit SetTimer, also ohne Thread.

Fussball-Robby 9. Apr 2008 19:54

Re: Ampelkreuzung
 
Zitat:

Zitat von mkinzler
Seit wann sieht man Threads im Taskmanager :gruebel:

Seitdem man im Taskmanager auf Ansicht -> Spalten auswählen.. geklickt hat und Threadanzahl aktiviert hat :wink:

oldmax 10. Apr 2008 08:36

Re: Ampelkreuzung
 
Hi
Für die Ampelsteuerung brauchst du exakt 1 Timer. Ja nach Ampel ( Kreuzung mit/Ohne Abbieger, Fußgänger) hast du feste Schritte
Z. einfache Kreuzung
1.Ausgang Quer Grün, Kreuz Rot
2. Quer Gelb, Kreuz Rot
3. Quer Rot, Kreuz Rot
4. Quer Rot, Kreuz Rot-Gelb
5. Quer Rot, Kreuz Grün
6. Quer Rot, Kreuz Gelb
7. Quer Rot, Kreuz Rot
8. Quer Rot-Gelb, Kreuz Rot
9.=1.
Im Ampel-Timer incrementierst du einen Schrittzähler. Wenn du nun hinter die Schritte deine Schrittzeit einträgst, kannst du in deiner Auswertung dem Timerintervall diese Zeit zuweisen und er wird diese Zeit bis zum nächsten Schritt ruhe geben
Am einfachsten baust du für jede Ampelphase eine eigene Procedure. Im Timerevent rufst du diese dann aus einer Case - Anweisung heraus auf
im Timer
Delphi-Quellcode:
Case Schritt of 1: Gruen_Rot;
dann die Procedure
Delphi-Quellcode:
Procedure TMyForm.GruenRot;
Begin
  Timer.Intervall:=2000; // 2 Sek z.B. ist nächste Pause
  Ampel_1_QuerRot.Brush.Color:=ClBlack;   // bedenke, Die Lampen in der Ampel
  Ampel_1_QuerGelb.Brush.Color:=ClBlack; // gehen aus, sie ändern nicht die Farbe
  Ampel_1_QuerGruen.Brush.Color:=ClLime;
  Ampel_2_QuerRot.Brush.Color:=ClBlack;  // 2. Ampel , gleiche Richtung
  Ampel_2_QuerGelb.Brush.Color:=ClBlack;
  Ampel_2_QuerGruen.Brush.Color:=ClLime;
  Ampel_1_KreuzRot.Brush.Color:=ClRed;   // 1. Ampel Kreuzverkehr
  Ampel_1_KreuzGelb.Brush.Color:=ClBlack;
  Ampel_1_KreuzGruen.Brush.Color:=ClBlack;
  Ampel_2_KreuzRot.Brush.Color:=ClRed;   // 2. Ampel Kreuzverkehr
  Ampel_2_KreuzGelb.Brush.Color:=ClBlack;
  Ampel_2_KreuzGruen.Brush.Color:=ClBlack;
end;
So kanst du die einzelnen Schritte besser übesehen.
Mit Timern für Fußgaänger und 2 für Fahrzeuge ( langsam und schnell sowie ein bischen Mathematik ) bist du schon auf 5 Timer geschrumpft und dürftest eine relativ dynamische Ansicht erreichen.
Gruß oldmax

Danül 10. Apr 2008 19:27

Re: Ampelkreuzung
 
uiiiii

vielen Dank für deine Mühe, ich werds direkt ausprobieren. Hab auch nun einige Timer schon streichen können ;)

grüße Danül

bordon5 26. Nov 2008 13:35

Re: Ampelkreuzung
 
hey leute...

also ich brauche die zeiten einer ampelkreuzung,da ich keine lust habe sie zu stoppen ;D
deswegen wollte ich euch mal fragen ob sie jemand für mich perrat hat...?

ToFaceTeKilla 26. Nov 2008 14:06

Re: Ampelkreuzung
 
Siehe eine Seite weiter vorn:
Zitat:

Zitat von Danül
Sagen wir Grün soll 30sek dauern, orange dann 5 und rot 15.


himitsu 26. Nov 2008 14:33

Re: Ampelkreuzung
 
Zitat:

Zitat von Danül
Sagen wir Grün soll 30sek dauern, orange dann 5 und rot 15. Wie realisier ich dass dort mit dem Timer?

Dafür gibt es 2 "einfache" Lösungen:

- den "Timer" nicht mit einem gleichmäßigem Intervall laufen lassen, sondern jeweils mit nötigem TimeOut (aktuelle Zeit bis zur nächsten Umschaltung) starten.

- einen Timer mit maximal dem größten gemeinsamen Teiler laufen lassen und und die einzelnen Zeitabschnitte in entsprechende Intervalle umsetzen
Zitat:

Timer-Intetvall = 5s

6x Grün (30s)
1x Gelb (5s)
3x Rot (15s)
ja und wo kommt bitte das Orange, bei 'ner Ampel, her? :gruebel:

Frankfurtoder 26. Nov 2008 14:36

Re: Ampelkreuzung
 
Wenn die Ampel von rot auf grün wechselt, wird auch erst rot einzeln, dann rot zusammen mit gelb und anschließend nur grün angezeigt. Von grün auf rot werden die Farben nur einzeln angezeigt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:07 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz