Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   FreePascal (https://www.delphipraxis.net/74-freepascal/)
-   -   Lazarus-Timer-Fahrstuhl (https://www.delphipraxis.net/196717-lazarus-timer-fahrstuhl.html)

Furby123 12. Jun 2018 12:52


Lazarus-Timer-Fahrstuhl
 
Hallo, ich bin gerade dabei mit Lazarus ein Fahrstuhl zu programmieren.
Nun folgendes Problem, ich kann den Fahrstuhl nur von Etage zu Etage springen lassen (indem ich ihm die Pixel sage). Ich würde aber genre dass der fährt. Aber wenn er fährt krieg ich ihn nicht mehr angehalten.

Weiß jemand wie das funktioniert?

Jumpy 12. Jun 2018 13:20

AW: Lazarus-Timer-Fahrstuhl
 
Du kannst den Code etwas lesbarer machen, indem du ihn hier in [ delphi][/ delphi] Tags einschließt (ohne das Leerzeichen).

Zum Problem: Du must in der Timer-Funktion eine Abfrage einbauen, ob das Ziel erreicht wurde.

Furby123 12. Jun 2018 13:26

AW: Lazarus-Timer-Fahrstuhl
 
Zitat:

Zitat von Jumpy (Beitrag 1404616)
Du kannst den Code etwas lesbarer machen, indem du ihn hier in [ delphi][/ delphi] Tags einschließt (ohne das Leerzeichen).

Zum Problem: Du must in der Timer-Funktion eine Abfrage einbauen, ob das Ziel erreicht wurde.

Ja das weiß ich auch, aber ich weiß nicht wie...

Sherlock 12. Jun 2018 13:42

AW: Lazarus-Timer-Fahrstuhl
 
Hinfällig, kann weg. Sorry für den Bitmüll

Sherlock

Jumpy 12. Jun 2018 14:01

AW: Lazarus-Timer-Fahrstuhl
 
Am besten machst du dir erstmal eine Fahrstuhl-Klasse mit ein paar mehr Variablen, z.B. über den Zustand des Fahrstuhls (also steht der gerade oder fährt der und was ist momentan die Richtung und momentane Position. Dann eine Liste, wenn man so will einen Speicher, der gewünschten Etagen, Bsp.:

Fahrstuhl steht in Etage E. 3. Stock wird gedrückt. Es wird gesetzt:
3. Stock in Zielliste eintragen.
Da 3>E: Richtung: 1 = aufwärts
Timer starten, da sich aufzug in Bewegung setzt.

Timer löst aus:
Position um X erhöhen, da Richtung 1
Prüfen, ob mit der Position nächste Zieletage erreicht wurde, wenn ja Timer stoppen, Aufzugtür öffnen usw.

Während der Aufzug fährt wird auf einmal 2. Etage-Knopf gedrückt. Folge:
Neue Etage in Zielliste eintragen, da Richtung nach oben und Aufzuge derzeit z.B. noch zwischen E und 1 wird das Ziel 2. Etage vor dem Ziel 3. Etage eingetragen.

Timer löst wieder aus:
Position um X erhöhen, da Richtung 1
Prüfen, ob mit der Position nächste Zieletage (jetzt 2) erreicht wurde, wenn ja Timer stoppen, Aufzugtür öffnen usw. Wenn Aufzugstür schließt prüfen, ob noch ein Ziel vorliegt, dann dahin weiter fahren. usw.

Furby123 12. Jun 2018 15:49

AW: Lazarus-Timer-Fahrstuhl
 
ich versuch nochmal was, hab gerade ne idee

Furby123 12. Jun 2018 16:12

AW: Lazarus-Timer-Fahrstuhl
 
Ich muss zugeben, ich bin neu in dem Gebiet und versteh manchmal noch nicht so ganz was ihr meint mit den Fachbegriffen.

Hab jetzt folgendes probiert, da die timer irgenwie immer nicht wollten wie ich, hab ich jetzt drei timer erstellt:

Timer1 ist für die Fahrt vom Erdgeschoss in die 1. Etage und vom Erdgeschoss in die 2. etage zuständig
Timer 2 für Etage 1 in den EG und Etage 1 in die 2.Etage
Timer 3 für Etage2 in den EG und Etage2 in Etage1

an sich funktioniert es auch, problem ist jetzt nur, wenn er vom Erdgeschoss in die 1.Etage fährt. Kann ich nicht sagen dass er noch z.B. weiter fahren soll oder wieder zurück fahren soll.

Wenn ich die Timer per hand an und aus mache, also wenn er in Etage 1 schon ist, mach ich nur Timer 2 an, dann geht das.
Ich weiß auch dass man mit Timerxy.Enabled:=true oder false den an und aus macht, aber irgenwie will das nicht oder ich weiß nicht wo man was hinschreiben soll.

Ich hoffe man kann verstehen was ich meine :7

Jumpy 12. Jun 2018 16:16

AW: Lazarus-Timer-Fahrstuhl
 
Mit mehreren Timern machst du es nur unnötig kompliziert. Schau noch mal, was ich oben geschrieben habe. Da geht es nicht um Fachbegriffe sondern um eine Logik, wie so ein Fahrstuhl funktionieren könnte. Welche Variablen braucht man, usw.
Dabei geht es mir noch gar nicht um das Bewegen/Zeichnen des Fahrstuhles, sondern eine reine Logik "auf dem Papier", wenn du so willst.

Furby123 12. Jun 2018 16:21

AW: Lazarus-Timer-Fahrstuhl
 
Ich hab es jetzt mit einem Timer hinbekommen, hatte scheinbar für mehrere Fahrten die gleiche Variable verwendert und das mag Lazarus nicht :D

DP-Maintenance 14. Jun 2018 08:23

Dieses Thema wurde am "14. Jun 2018, 08:23 Uhr" von "MrSpock" aus dem Forum "Lazarus (IDE)" in das Forum "FreePascal" verschoben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:56 Uhr.

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 by Thomas Breitkreuz