Wert in einer Repeat/Forever mit Timerzeit ändern?

Für allgemeine Fragen zur Programmierung mit PureBasic.
funker
Beiträge: 33
Registriert: 02.06.2014 12:32

Wert in einer Repeat/Forever mit Timerzeit ändern?

Beitrag von funker »

Hallo, guten Tag.
Ich möchte einen Wert in einer Repeat/Forever mit einer Timerzeit erhöhen.

Wie kann man das machen?
Mit Delay bremse ich mein Programm immer aus.

Danke.
Gruss
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Re: Wert in einer Repeat/Forever mit Timerzeit ändern?

Beitrag von Bisonte »

Da brauchts schon irgendwie ein Beispiel....

Sonst kann man nur ein Lied trällern : "Ich weiß nicht, was soll es bedeuten...."
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Wert in einer Repeat/Forever mit Timerzeit ändern?

Beitrag von STARGÅTE »

funker hat geschrieben:Wie kann man das machen?
Mit AddWindowTimer()
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
funker
Beiträge: 33
Registriert: 02.06.2014 12:32

Re: Wert in einer Repeat/Forever mit Timerzeit ändern?

Beitrag von funker »

Hallo, was unten zwischen if----------- und enfif------------ steht soll Zeitabhängig gemacht werden.

Danke.
Gruss

Code: Alles auswählen

Repeat
  Event = WaitWindowEvent(1)   
  
  ExamineKeyboard()
  result=KeyboardInkey()
  
  Select Event
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      
      If EventGadget = #b_seriell_an 
        If port=-1
          port=OpenSerialPort(#PB_Any, "COM4", 9600, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024,1024)
          If port
            text_s=""
            text_s + "...geöffnet   "+Str(port)
            SetGadgetText(#str_seriell, text_s)
          Else
            text_s=""
            text_s + "...nichts"
            SetGadgetText(#str_seriell, text_s) 
            port=-1
          EndIf
        EndIf  
      EndIf
      
      If EventGadget = #b_seriell_aus 
        If port > 0
          CloseSerialPort(port)
          text_s=""
          text_s + "...geschlossen"
          SetGadgetText(#str_seriell, text_s)
          port=-1
        EndIf
      EndIf
      
      If EventGadget = #b_karte
        lochkarte()
        lochkarte_daten()  
      EndIf  
      
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = #Window_0
        CloseWindow(#Window_0)
        Break
      EndIf
  EndSelect 
  
  If port > 0
    While AvailableSerialPortInput(port)  
      ReadSerialPortData(port, @r_byte, 1) 
    Wend  
  
    If result
      s_byte=Asc(result)
      WriteSerialPortData(port, @s_byte, 1)
    EndIf  
  EndIf
  
 if ----------------------------------------- 
    xz=xz+8
    If xz > 280
      xz=12
      yz=12
    EndIf  
    lochkarte_daten()  
endif ------------------------------------- 
  
  DisplaySprite(#spr_karte1,10,10)
  
  DisplayTransparentSprite(#spr_schab,xz+4,yz-2)
  FlipBuffers()
ForEver
Rebon
Beiträge: 263
Registriert: 20.05.2009 19:13

Re: Wert in einer Repeat/Forever mit Timerzeit ändern?

Beitrag von Rebon »

funker hat geschrieben:Hallo, was unten zwischen if----------- und enfif------------ steht soll Zeitabhängig gemacht werden.
So ungefähr würde ich es machen, habe es aber nicht getestet.

Code: Alles auswählen

Zeit = ElapsedMilliseconds()
Repeat
.......  
 if ElapsedMilliseconds()-Zeit > 100
    xz=xz+8
    If xz > 280
      xz=12
      yz=12
    EndIf  
    lochkarte_daten()  
   Zeit = ElapsedMilliseconds()
endif
.........
ForEver
PB 4.00 | Windows XP Home SP3
funker
Beiträge: 33
Registriert: 02.06.2014 12:32

Re: Wert in einer Repeat/Forever mit Timerzeit ändern?

Beitrag von funker »

Jup danke.

ElapsedMilliseconds() klappt wunderbar.

GRuss
Antworten