Timer funktion, gibt es die?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
heiße Luft
Beiträge: 45
Registriert: 21.04.2009 12:04
Computerausstattung: Ausreichend. 3 Pc, 1 Laptop
BS: Win 7 (zum spielen),XP (weils noch da ist), Win 2000(laptop) und Linux (Umbuntu und Mint)
Wohnort: NRW

Timer funktion, gibt es die?

Beitrag von heiße Luft »

Hallo Leute,

ich möchte einen Temperatur Messwert, den ich über eine Atmel MEAGA 88 Mikrocontroller Elektronik erfasse, zyklisch auf dem PC abfragen und speichern.
Ich sende über RS232 einen String der eine entsprechende Antwort veranlasst.
Mit einem Klick funktioniert das. Ich finde keine Timer wie in VB.
Muss ich mit ElapsedMilliseconds() selber einen basteln?
Ich habe in einem Post von Kiffi irgendwas von Timer Callback gelesen, finde in der Hilfe aber nichts dazu.
Unter
http://www.purebasic.fr/german/viewtopi ... 22c629d569
gibt’s von HeX0R einen selbst gebauten Timer.
Bissel viel Code nur um alle 10 Minuten eine Lesevorgang zu initialisieren, oder ?

Grüße hL
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag von X360 Andy »

Hier ein kleines Beispiel wie es ganz einfach geht.

Code: Alles auswählen

Zeit = 600000 ; 600 sekunden - 10 Minunten
StartZeit = ElapsedMilliseconds()

Repeat
  
  If ElapsedMilliseconds()-Startzeit>Zeit
    MessageRequester("", "10 Minuten sind um")
    exit = 1
  EndIf
  
Until exit = 1
Oder auch hier ein Thread von mir wo ich eine änliche Frage hatte
http://www.purebasic.fr/german/viewtopi ... ight=timer
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Das beste wäre ein API Timer: http://msdn.microsoft.com/en-us/library/ms644906.aspx
Ansonsten eben auf die nächste PB Version warten.

Lösungen die kein Callback nutzen, bzw. kein Event auslösen wie
EllapsedMilliseconds sind suboptimal, bzw. nicht wirklich verwendbar.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
heiße Luft
Beiträge: 45
Registriert: 21.04.2009 12:04
Computerausstattung: Ausreichend. 3 Pc, 1 Laptop
BS: Win 7 (zum spielen),XP (weils noch da ist), Win 2000(laptop) und Linux (Umbuntu und Mint)
Wohnort: NRW

Beitrag von heiße Luft »

@X360 Andy
Ja, das habe ich jetzt ähnlich gemacht.
Bei den Programmiersprachen die ich sonst benutzte gibt es Timer als Grundrüstzeug.
z.B.
Wenn TimerEingang = 1
TimerWatezeit = 1 ms, 1m, 1h

Dann kann ich irgendwo im Code TimerAusgang auf 1 abfragen.
Sehr bequem. Aber mit ElapsedMilliseconds() geht es natürlich auch.
Kann man ja auch mit einer Procedure lösen.
Ich dachte nur es ginge evtl. etwas eleganter und ich finde nur das richtige Schlagwort für die Hilfe wieder mal nicht.

@ Thomas
Ja ja, ich weiß das Du immer sehr gute Tipps gibst. Aber da ich an meiner letzten selbst gestellten Aufgabe
http://www.purebasic.fr/german/viewtopi ... b21589665e
und
http://www.purebasic.fr/german/viewtopi ... b21589665e
gescheitert bin (ganz aufgegeben habe ich es allerdings noch nicht),
beschränke ich mich bei meiner neuen Aufgabe erstmal auf die von PureBasic vorgegebenen Möglichkeiten. Mein Projekt heißt jetzt „Wetterstation“.
Ich erfasse die Daten (erstmal Temperatur und Luftdruck) über den Atmel Mega88.
Für die zyklische Abfrage reicht die Funktion ElapsedMilliseconds() wohl aus.

Viele Grüße hL :allright:
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

mag sein, dass sie "ausreicht"...

aber keinesfalls so, wie von Andy vorgeschlagen, das ist unnütz mit einer ungebremsten Schleife zu prüfen.
ein kleiner Fenster, ein WaitWindowEvent(100), das tuts genauso, Zehntel-Sekunde ist genau genug.

grundsätzlich ist ein Timer, der über ein Event läuft, wirklich besser, da hat ts schon recht.

und wenn dir ein Timer-Callback über API
http://www.purebasic.fr/german/viewtopi ... 509#248509
zu umständlich ist, warte halt ein paar Wochen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten