![]() |
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? |
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. |
AW: Lazarus-Timer-Fahrstuhl
Zitat:
|
AW: Lazarus-Timer-Fahrstuhl
Hinfällig, kann weg. Sorry für den Bitmüll
Sherlock |
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. |
AW: Lazarus-Timer-Fahrstuhl
ich versuch nochmal was, hab gerade ne idee
|
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 |
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. |
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
|
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