Menu bzw Event Fragen - Zeitproblem

Anfängerfragen zum Programmieren mit PureBasic.
amiga123
Beiträge: 88
Registriert: 17.02.2009 18:05

Beitrag von amiga123 »

ts-soft hat geschrieben:Thread halte ich für unnötig (wie meist)
Ein Timer der die Dinge unabhängig vom Eventloop macht sollte doch reichen.
Hier mal im Sekundentakt:

Code: Alles auswählen

Procedure mytimercallback(a,b,c,d)
  Debug "diesen code werde ich jede sekunde ausführen"
EndProcedure

If OpenWindow(0, #PB_Ignore, #PB_Ignore, 400, 300, "bla")
  ; menü und gadgets erstellen
  
  SetTimer_(WindowID(0), 1, 1000, @mytimercallback())
  
  Repeat
    Select WaitWindowEvent()
    
      Case #PB_Event_CloseWindow
        Break
    EndSelect
  ForEver
EndIf
Hallo
Wollte das gerade mal ausprobieren. Es kommt allerdings immer eine Fehlermeldung.
Bild
woran liegt das?

mfg. Herb
Pure Basic 4.60 Vollversion
http://www.Sundisp.de
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> woran liegt das?

an der Demo.

hab die Demo jetzt nicht zur Hand, deswegen kenn ich den genauen Wortlaut nicht, aber die Einschränkungen der Demo sind:
- Maximal 600 (oder 800) Zeilen Code
- Debugger nicht abschaltbar
- Kein API-Zugriff

Punkt 3 ist dein Problem.
SetTimer_() ist eine Windows-API-Funktion, d.h. eine Funktion der Schnittstelle des Betriebssystems.
alle Funktionen die mit einem Underscore enden, sind Funktionen externer (d.h. nicht PureBasic-eigener) Bibliotheken.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
amiga123
Beiträge: 88
Registriert: 17.02.2009 18:05

Beitrag von amiga123 »

Danke hatte ich fast schon befürchtet.

mfg. Herb
Pure Basic 4.60 Vollversion
http://www.Sundisp.de
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

je nachdem was du machen willst, kannst du auf eine selbstgestrickte Timer-Lösung zurückgreifen:
http://www.purebasic.fr/german/viewtopic.php?t=19394
dieser Beispielcode müßte eigentlich in der Demo lauffähig sein.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
amiga123
Beiträge: 88
Registriert: 17.02.2009 18:05

Beitrag von amiga123 »

Hallo
Ich habe hier ein kleines Programm geschrieben das mir die Werte meiner Webbox (Solarlogger) ausliest und am Bildschirm darstellt. Das Problem ist das das Programm nur einmal pro Sekunde die Daten holen soll. Ich habe das zwar mit einer Verzögerungsschleife gelöst, jedoch ist nicht jeder Rechner gleich schnell. Jetzt suche ich noch nach einer passenden Lösung ohne viel Rechenpower zu verschwenden.
Die meisten Lösungen die hier gefunden habe sind halt bei der Demoversion von Purebasic nicht möglich.

mfg. Herb

Bild
Pure Basic 4.60 Vollversion
http://www.Sundisp.de
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

amiga123 hat geschrieben:Jetzt suche ich noch nach einer passenden Lösung ohne viel Rechenpower zu verschwenden.
du könntest die Refresh-Zeit der Seite auf 60 Sekunden stellen und dann
#PB_EventType_DownloadEnd abfragen.

Grüße ... Kiffi
a²+b²=mc²
amiga123
Beiträge: 88
Registriert: 17.02.2009 18:05

Beitrag von amiga123 »

Kiffi hat geschrieben:
amiga123 hat geschrieben:Jetzt suche ich noch nach einer passenden Lösung ohne viel Rechenpower zu verschwenden.
du könntest die Refresh-Zeit der Seite auf 60 Sekunden stellen und dann
#PB_EventType_DownloadEnd abfragen.

Grüße ... Kiffi
Nicht böse sein aber mit welchem Befehl kann ich die Ändern ?
Ich finde leider nix in der Anleitung. (DELAY())?

Gruß Herb
Pure Basic 4.60 Vollversion
http://www.Sundisp.de
amiga123
Beiträge: 88
Registriert: 17.02.2009 18:05

Beitrag von amiga123 »

Kaeru Gaman hat geschrieben:je nachdem was du machen willst, kannst du auf eine selbstgestrickte Timer-Lösung zurückgreifen:
http://www.purebasic.fr/german/viewtopic.php?t=19394
dieser Beispielcode müßte eigentlich in der Demo lauffähig sein.
Also danke erstmal. Hab den Timer mal bei mir eingebaut. Leider mit mäßigem Erfolg. Schluckt fast 50 % Rechenpower (eigener Timer 5 %).
Ausserdem ist das in meiner Programm mit 1 Sekunde nicht gelaufen. Hat immer 3-4 Sekunden für einen Durchlauf gebraucht.

mfg. Herb
Pure Basic 4.60 Vollversion
http://www.Sundisp.de
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

amiga123 hat geschrieben:Ausserdem ist das in meiner Programm mit 1 Sekunde nicht gelaufen. Hat immer 3-4 Sekunden für einen Durchlauf gebraucht
Eine Sekunde? :shock:
(habe da oben irrtümlich 1 Minute gelesen)
Benötigst Du wirklich so ein kleines Intervall?

Grüße ... Kiffi
a²+b²=mc²
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Hab den Timer mal bei mir eingebaut. Leider mit mäßigem Erfolg.
> Schluckt fast 50 % Rechenpower (eigener Timer 5 %).
> Ausserdem ist das in meiner Programm mit 1 Sekunde nicht gelaufen.
> Hat immer 3-4 Sekunden für einen Durchlauf gebraucht.

irgendwie falsch eingebaut?
mein Beispiel lastet keinesfalls einen Core aus, und der Intervall ist auch genau genug um 1sek. zu treffen.
da muss was falsch geschraubt worden sein, sprich, Mängel eingebaut beim übertragen.


... und tatsächlich bleibt die Frage, die Kiffi gestellt hat:
1x pro Sekunde?
wie ist das Gerät dann angebunden, oder handelt es sich gar um einer Übertragung über Netz?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten