AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zeitabfrage im timer

Ein Thema von stexxy · begonnen am 14. Sep 2007 · letzter Beitrag vom 14. Sep 2007
Antwort Antwort
stexxy

Registriert seit: 12. Sep 2007
15 Beiträge
 
#1

Zeitabfrage im timer

  Alt 14. Sep 2007, 09:42
HI
ich habe ein fahrstuhl programm hergestellt der von etage zu etage fährt und dann die tür öffnet und stehen bleibt.
ich möchte aber nun das die tür nachdem er 3-5 sec steht wieder zu geht .

habt ihr ein paar ideen wie sich das realisieren lässt?

Delphi-Quellcode:
unit Fahrstuhl;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, StdCtrls, jpeg, RackCtls, MPlayer;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Image1: TImage;
    Timer1: TTimer;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton;
    Button11: TButton;
    Button12: TButton;
    Button13: TButton;
    Button14: TButton;
    Image2: TImage;
    Image3: TImage;
    Label1: TLabel;
    Image4: TImage;
    Timer12: TTimer;
    Image5: TImage;
    btn_open: TButton;
    btn_close: TButton;
    Button16: TButton;
    Button7: TButton;
    procedure Timer1Timer(Sender: TObject);
    procedure Button14Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Timer12Timer(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button12Click(Sender: TObject);
    procedure Button13Click(Sender: TObject);
    procedure Button16Click(Sender: TObject);
    procedure btn_closeClick(Sender: TObject);
    procedure btn_openClick(Sender: TObject);
    procedure Button7Click(Sender: TObject);




private
    { Private-Deklarationen }

public
    { Public-Deklarationen }
end;

var
  Form1: TForm1;
  z: integer;
  a: integer;

implementation

{$R *.DFM}




procedure TForm1.Timer1Timer(Sender: TObject); // Timer für auf bzw ab Bewegung

var
  x : integer;

begin

  x:=-2;
  if image1.top>z then //muss runterfahren
   Image1.top:=Image1.top+x; //bild fahrstuhl

  if image1.top<z then //muss rauffahren
   Image1.top:=Image1.top-x;



  if image4.top>z then //muss runterfahren
   Image4.top:=Image1.top+x; //bild Tür

  if image4.top<z then //muss rauffahren
   Image4.top:=Image1.top-x;



  if image5.top>z then //muss runterfahren
   Image5.top:=Image1.top+x; //bild gehäuse

  if image5.top<z then //muss rauffahren
   Image5.top:=Image1.top-x;

  timer12.enabled:=true;



 case Image1.Top of
  120: Label1.Caption := '4';
    0: Label1.Caption := '5'; //anzeige fahrstuhl der etagen
  240: Label1.Caption := '3';
  360: Label1.Caption := '2';
  480: Label1.Caption := '1';
  600: Label1.Caption := '0';
 end;



end;




procedure TForm1.Button14Click(Sender: TObject); // Programm verlassen
begin
  close;
end;



procedure TForm1.Timer12Timer(Sender: TObject); // Timer zum Türen öffnen bzw schliessen
var
   y : integer;

begin


  y:=2;

  {
  case not Image1.Top of
  120: timer12.enabled:=false;
    0: timer12.enabled:=false;
  240: timer12.enabled:=false;
  360: timer12.enabled:=false;
  480: timer12.enabled:=false;
  600: timer12.enabled:=false;
  end;
  }


  if not ( (a=2 ) or (a=1 ) ) then // tür auf oder zu knöpf gedrückt?
  begin
    if z <> Image4.top then //ziel nicht erreicht?
    begin
      if image4.left>=100 then //tür geschlossen?
      begin
        timer1.enabled:=true;
        timer12.enabled:=false;
        image4.left:=100;
        exit;
      end;
      Image4.left:=Image4.left+y; //tür schliessen
    end
    else
      if (z = Image4.top) then //ziel erreicht
      begin
        if image4.left<=30 then
        begin
          timer12.enabled:=false;
          timer1.enabled:=false;
          image4.left:=30;
          exit;
        end;
        Image4.left:=Image4.left-y; //tür öffnet
      end;
    end
    else
    begin
      if a=2 then // tür zu knöpf gedrückt?
      begin
        if image4.left>=100 then // tür auf geschlossen position?
        begin
          timer12.enabled:=false;
          image4.left:=100;
          a:=0; // zurückgesetzt der globalen variablen a
          exit;
        end;
         Image4.left:=Image4.left+y; // tür wird geöffnet
      end
      else if a=1 then // tür auf knopf gedrückt?
        begin
          if image4.left<=30 then // tür auf offen position?
          begin
            timer12.enabled:=false;
            image4.left:=30;
            a:=0;
            exit;
          end;
           Image4.left:=Image4.left-y; //tür wird geschlossen
        end;
      end;
end;


procedure TForm1.Button8Click(Sender: TObject); // Fahrstuhlknopf innen EG
begin

  timer12.enabled:=true;
  z:=600;

end;

procedure TForm1.Button9Click(Sender: TObject); // 1.OG

begin

  timer12.enabled:=true;
  z:=480;



end;

procedure TForm1.Button10Click(Sender: TObject); // 2.OG
begin

  timer12.enabled:=true;
  z:=360;

end;

procedure TForm1.Button11Click(Sender: TObject); // 3.OG
begin

  z:=240;
  timer12.enabled:=true;
  timer1.enabled:=false;

end;

procedure TForm1.Button12Click(Sender: TObject); // 4.OG
begin

  timer12.enabled:=true;
  z:=120;

end;

procedure TForm1.Button13Click(Sender: TObject); // 5.OG
begin

  timer12.enabled:=true;
  z:=0;

end;






procedure TForm1.Button16Click(Sender: TObject); // notruf
var
s: string;
begin
windows.Beep(900,300); // piepton aus dem speaker 900 macht die höhe und 300 die länge des tones


S:= '"Ein Mitarbeiter ist unterwegs! bitte bewahren sie ruhe!"';
showmessage (s) ;
end;

procedure TForm1.btn_closeClick(Sender: TObject); // Tür zu
begin

 a:=2;

  case Image1.Top of
    120: timer12.enabled:=true;
      0: timer12.enabled:=true; // wenn fahrstuhl nicht auf einer der etagen
    240: timer12.enabled:=true; // dann button deaktiviert
    360: timer12.enabled:=true;
    480: timer12.enabled:=true;
    600: timer12.enabled:=true;
  end;

end;

procedure TForm1.btn_openClick(Sender: TObject); // Tür auf
begin

 a:=1;

  case Image1.Top of
    120: timer12.enabled:=true;
      0: timer12.enabled:=true;
    240: timer12.enabled:=true; // wenn fahrstuhl nicht auf einer der etagen
    360: timer12.enabled:=true; // dann button deaktiviert
    480: timer12.enabled:=true;
    600: timer12.enabled:=true;
  end;

end;

procedure TForm1.Button7Click(Sender: TObject); // notaus schaltet timer ab
begin
windows.Beep(900,300); // piepton aus dem speaker 900 macht die höhe und 300 die länge des tones
  timer1.enabled:=false;
  timer12.enabled:=false;

end;



end.
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Zeitabfrage im timer

  Alt 14. Sep 2007, 09:54
Du musst hier nicht jede Deklaration und sonstige Funktion posten. Die wichtigen Zeilen reichen wirklich.
Wenn du den Aufzug eine Zeitlang aufhalten willst, kannst du einfach eine Integervariable benutzen.

Delphi-Quellcode:
onTimer:
if (Wartezeit>0) then
begin
 Wartezeit--;
 return;
end;
Das oben in den Timer und sobald du unten die Wartezeit auf einen positiven Wert setzt, wird in den nächsten TimerAufrufen nur die Wartezeit runtergezählt.
(Ich versteh dein Problem nicht ganz und habe auch keine Lust mit den ganzen Code reinzuziehen, aber mit diesem Ansatz wirst du sicher was passendes basteln können)
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Zeitabfrage im timer

  Alt 14. Sep 2007, 09:56
Niklas, kann man in Delphi jetzt schon C-Syntax verwenden?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Zeitabfrage im timer

  Alt 14. Sep 2007, 09:59
Tschuldigung. Ich musste in den letzten Wochen für die Uni C++ und Java lernen...


Delphi-Quellcode:
onTimer:
if Wartezeit>0 then
begin
Wartezeit:= Wartezeit -1;
exit;
end;
//Edit: ich hoffe so ist's jetzt Pascal...
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Zeitabfrage im timer

  Alt 14. Sep 2007, 10:16
exit
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
stexxy

Registriert seit: 12. Sep 2007
15 Beiträge
 
#6

Re: Zeitabfrage im timer

  Alt 14. Sep 2007, 11:06
danke für die hilfe war nix passendes bei ^^
hab es jetzt anders gelöst.

Delphi-Quellcode:
begin
         
          timer1.enabled:=false;
          image4.left:=30;
          inc(Fdoortimer);
          if Fdoortimer>=100 then
          begin
            a:=2 ;
            fdoortimer:=0;
            exit;
funktioniert einwandfrei.

trotzdem danke
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz