Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Proggi bremst game aus (https://www.delphipraxis.net/96374-proggi-bremst-game-aus.html)

ghost007 23. Jul 2007 13:51


Proggi bremst game aus
 
Hallo,
ich hab folgendes problem. Mein proggram, welches mit winamp zusammenarbeitet und infos, etc. auf einem LCD display anzeigt, bringt das game (counterstrike source, wem das was sagt) dazu, zu zuckeln. Dies drückt sich so aus, das es unteranderem beim schreiben ingame stockt, oder auch beim drehen der perspektive mit der maus, und auch beim laufen. Kurz, es stockt alles. Ich hab schon CPU last und Speicherusage geprüft, daran liegt es nicht. Was kann ich nun noch versuchen/ändern?

MfG - Ghost007

mr.winkle 23. Jul 2007 15:32

Re: Proggi bremst game aus
 
du könntest es ja mal mit nem anderen timer versuchen - falls einer im Programm in Benutzung ist. Verschiedene Timer haben meiner Erfahrung nach verschiedene Auswirkungen auf andere Programme. Bei manchen kann man ja auch z.b. die Priorität festlegen. Vielleicht hilfts.

ghost007 23. Jul 2007 22:02

Re: Proggi bremst game aus
 
hi,
wie die priorität? des timers oder meines proggis?
Wenn, des timers, dann wie mach ich das?

MfG - Ghost007

Luckie 23. Jul 2007 22:13

Re: Proggi bremst game aus
 
Was macht denn dein Programm eigentlich?

Christian Seehase 23. Jul 2007 22:39

Re: Proggi bremst game aus
 
Moin Christian,

benötigst Du für die Ansteuerung Interrupts?
Da könnte es zu Problemen kommen.

ghost007 24. Jul 2007 17:43

Re: Proggi bremst game aus
 
Zitat:

Zitat von Luckie
Was macht denn dein Programm eigentlich?

->
Zitat:

Zitat von Ghost007
Mein proggram, welches mit winamp zusammenarbeitet und infos, etc. auf einem LCD display anzeigt,

Interrupts?

MfG - Ghost007

jmd anders 24. Jul 2007 18:09

Re: Proggi bremst game aus
 
Wenn du wenig zu deinem Programm sagst, kann man leider nicht feststellen woran es liegen könnte.
du müsstest schon ein bißchen genauer beschreiben was dein programm macht und wie es das macht. es könnte sogar helfen, mal ne stelle aus deinem source zu zeigen, welcher dafür verantwortlich dafür ist was mit winamp passiert oder was mit den lcd display passiert.

ghost007 24. Jul 2007 21:17

Re: Proggi bremst game aus
 
also,
es wird mit einem timer auf das LCD der logitech G15 tastatur gezeichnet, in einem 900ms interval, in diesem interval werden auch immer die neuen winamp daten ausgelesen und das ganze auf das LCD gemalt.

MfG - Ghost007

matashen 24. Jul 2007 22:26

Re: Proggi bremst game aus
 
Lass mich raten,

alle 900ms zuckelt das Game...

es liegt definitiv andeinem Timer, jedesmal wenn der in den Prozessablauf eingreift muss dein Conterstrike solange auf das System warten bis dein Prog alle Arbeiten beendet hat. Und dann darf Counterstrike wieder...


Gruß Matthias

ghost007 25. Jul 2007 08:57

Re: Proggi bremst game aus
 
Hi,
wie kann ich das mit dem timer beheben?

MfG - Ghost007

s-off 25. Jul 2007 09:12

Re: Proggi bremst game aus
 
Hi,
Zitat:

Zitat von ghost007
Wenn, des timers, dann wie mach ich das?

Nicht böse gemeint, eher im Gegenteil: den Satzbau finde ich sehr geil :hello:
Erinnert mich so an if..then.. :chat:

ghost007 25. Jul 2007 17:47

Re: Proggi bremst game aus
 
danke für deinen sehr hilfreichen beitrag :D
aber nu ma ernsthaft, hat jmd ne ahnung?

MfG - Ghost007

Luckie 25. Jul 2007 18:00

Re: Proggi bremst game aus
 
Lager das ganze in einen Thread aus mit der untersten Prioritätsstufe.

ghost007 25. Jul 2007 21:12

Re: Proggi bremst game aus
 
kann ich auch dem prozzes meines programms eine priorität zuordnen?

MfG - Ghost007

bitsetter 25. Jul 2007 21:45

Re: Proggi bremst game aus
 
die Priorität eines Prozesses ändern?

ghost007 30. Jul 2007 00:47

Re: Proggi bremst game aus
 
Hi,
ich hab das nun ma getestet. Jedoch kann ich keine besserung feststellen. Selbst wenn ich die priorität auf niedrigst mach, wird das LCD zwar nicht mehr neu gemalt, aber Counterstrike ist immer noch verzögert :(

MfG - Ghost007

P.S.: *helpme* :wall:

ghost007 31. Jul 2007 12:24

Re: Proggi bremst game aus
 
#1. *PUSH*

#2. wenn ich den timer aus schalte, dann gehts, also es liegt sicher an dem timer ... aber wie kann ich den fehler beheben?


MfG - Ghost007

ghost007 1. Aug 2007 18:07

Re: Proggi bremst game aus
 
*PUSH*

phreax 1. Aug 2007 19:17

Re: Proggi bremst game aus
 
Hallo ghost007,
Ich würde dir empfehlen nen neuen thread zu erzeugen und in dem dann mittels
Delphi-Quellcode:
if GetTickCount-t >= Interval then
     begin
       //Hier was passieren soll
       t := GetTickCount;
     end;
deine zeichenmethode auszulösen, ich denke mal das diese "Genauigkeit" für das zeichnen ausreicht...

Die ThreadPirorität kannst du mit
Delphi-Quellcode:
Self.Priority := tpLower; //getippt nicht getestet...
einstellen

mfg Phreax

ManuMF 1. Aug 2007 21:04

Re: Proggi bremst game aus
 
Wenn die CPU-Last nicht steigt, würde ich sagen, es liegt am Zeichnen. Wie machst du das denn?

ghost007 1. Aug 2007 21:35

Re: Proggi bremst game aus
 
Zitat:

Zitat von ManuMF
Wenn die CPU-Last nicht steigt, würde ich sagen, es liegt am Zeichnen. Wie machst du das denn?

Hi,
gezeichnet wird über eine komponente.Hierfür zeichne ich alles was ich auf dem LCD haben will auf ein image per canvas und kann dann das image der komponente assignen und dann per send befehlt auf das LCD malen.
(ich kann mal alles außer das senden machen, dann wissen wir ja ob es das malen is,oder?)

@phreax: danke für deine antowrt, über einen threat wollte ich als letzte möglichkeit gehen ... da ich ehrlichgesagt keine ahnung davon hab, wie das mit den threats funktioniert.

MfG - Ghost007

P.S.: Ich teste das mit der malroutine eben mal aus.

[EDIT]
Ok, an dem senden liegts nicht, habs grade getestet.
[/EDIT]

phreax 2. Aug 2007 10:53

Re: Proggi bremst game aus
 
Tja da es wohl nicht am zeichnen liegt musst du wohl oder übel dich an den "bösen" Threads versuchen ;)
Das ist eigentlich recht einfach, in deinem Fall jedenfalls:
Delphi-Quellcode:
{Einfach mit Neu->Thread-Objekt einen neuen VCL Thread erstellen}

//Hier deine methode die das zeichnen auslösen soll (OHNE Parameter)
procedure Zeichnen;
begin
  //TODO: Code einfügen ;)
end;

procedure TZeichenThread.Execute;
var t: Cardinal;
begin
  repeat
    sleep(1); //demit keine hohe Prozessorauslastung enststeht (aber ungenau)
    if GetTickCount-t >= 900 then
     begin
       Synchronize(Zeichnen);  
       t := GetTickCount;
     end;
  until Self.Terminated; //Bis zum Thread ende
Das ist so das simpelste was man so machen kann...
Wenn du globale Variablen hast auf die zur gleichen zeit ein anderer Thread zugreift (z.B. Hauptprogramm) musst du noch mit critical Sections arbeiten...
Dazu dieses kurze Tutorial

mfg phreax

ghost007 2. Aug 2007 20:18

Re: Proggi bremst game aus
 
hi,
werde das gleich mal testen.

MfG - Ghost007

P.S.: Kurze frage, wo soll dann das mit der priorität hin?


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:27 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