AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi schnell, schneller, 2 fast 2 furius / TimerProblem
Thema durchsuchen
Ansicht
Themen-Optionen

schnell, schneller, 2 fast 2 furius / TimerProblem

Ein Thema von KoRn117 · begonnen am 9. Feb 2004 · letzter Beitrag vom 10. Feb 2004
Antwort Antwort
Seite 1 von 2  1 2      
KoRn117

Registriert seit: 24. Sep 2003
Ort: Hessen
50 Beiträge
 
Delphi 7 Enterprise
 
#1

schnell, schneller, 2 fast 2 furius / TimerProblem

  Alt 9. Feb 2004, 16:58
hi,

ich hab ein problem ich möchte von dem com-port etwas auslesen und das soll bitteschön schneller gehen als diese pseudo 1ms beim normalen timer!

ich brauche sowas in der größenordnung von 0,889ms!!! gib es das? irgendwie muss das ja jemand hinbekommen haben den com so schnell auslesen zu können, denn ich habe mir einen ir-receiver nachgebaut (IR-Receiver) und hab nun diese seite gefunden (rc5 oder so) und ich dachte mir na dann versuch mal ob du nur auch einen code aus dem ding interpretieren kannst.
naja, mir ist egal ob das sinnvoll ist es nachzuprogrammieren oder nicht, aber ich brauche aufjedenfall (meiner meinung nach) einen sehr schnellen timer!

mit dem programm girder funktioniert das ganze auch super - nur wie gesagt ich will mal selber versuchen ein paar (richtige) codes abzufangen.

dankeschön für eure hilfe!

m.f.g.

korn117


p.s.: ich empfange schon signale, nur wie gesagt die normale timer-koponente ist einfach zu lahm!
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#2

Re: schnell, schneller, 2 fast 2 furius / TimerProblem

  Alt 9. Feb 2004, 17:14
na es gibt noch einen Multimedia Timer in der unit mmsystem.
such mal nach TimeSetEvent.

der normale TTimer kommt als wm_timer botschaft an Dein PRogramm.
Über TimeSetEvent wird eine Callbackfunktion aufgerufen.

Dennoch ist Windows kein Realtime Betriebssystem
Nach meinem Wissen wird ein Thread sowieso nur alle 25 ms bedient (Weiss nicht ob die Zahl richtig ist, was sagen die Fachleute ? )
Wenn also windows gerade was auf der Festplatte sucht, kann wiedermal länger dauern
  Mit Zitat antworten Zitat
KoRn117

Registriert seit: 24. Sep 2003
Ort: Hessen
50 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: schnell, schneller, 2 fast 2 furius / TimerProblem

  Alt 9. Feb 2004, 17:32
hab dich noch nicht so ganz verstanden, aber ich werd mich mal drum bemühen.

*gggrrr*, es muss doch etwas schnelleres geben, ich frag mich wie der das gemacht hat der das plugin für girder geschrieben hat oder ich müsste ne andere komponente haben die jedesmal wenn was ankommt - ein event oder so auslößt. nur die andere komponente die ich vorher gefunden habe kann ich nicht installieren


bitte helft mir weiter

danke @stoxx

korn117
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#4

Re: schnell, schneller, 2 fast 2 furius / TimerProblem

  Alt 9. Feb 2004, 17:49
Timer 1ms

Meines Wissens nach kannst du ihn soweit runter stellen, wie du willst aber unter 50ms wirst du mit dem nicht kommen !

Mit dem MultiMediaTimer hab ich mich noch nicht beschaft,
aber du solltest auch bedenken, was in diesem Timer erledigt werden soll, das sich die Timer-Aufrufe nicht überschneiden !
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#5

Re: schnell, schneller, 2 fast 2 furius / TimerProblem

  Alt 9. Feb 2004, 17:50
hier ein Beispiel, aber ob das Deinem Problem hilft, keine Ahnung

(noch ein kleiner Nachtrag, für solche Sachen würde ich lieber einen extra Thread verwenden.
Der aussschließlich die Überwachung übernimmt) Der wird auch durch keine sonstigen Benutzereingaben oder Form neu zeichnen Botschaften abgehalten



Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, MMSystem;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  FID : integer; // ID des MMTimers--
  procedure TimerCallback( TimerID, Msg : UINT; dwUser, dw1, dw2 : DWord); pascal;

implementation

{$R *.dfm}

//////////////////////////////////////////////////////////////////////////////////

procedure TimerCallback( TimerID, Msg : UINT; dwUser, dw1, dw2 : DWord); pascal;
begin
  showmessage('Timer');
end; // von timercallback

/////////////////////////////////////////////////////////////////////////////////

procedure TForm1.Button1Click(Sender: TObject);
begin
// Aufruf
 FID := TimeSetEvent ( 1000,0, @TimerCallback, 0, TIME_PERIODIC);

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if FID <> 0 then timeKillEvent(FID);
end;

end.
  Mit Zitat antworten Zitat
Gandalfus

Registriert seit: 19. Apr 2003
407 Beiträge
 
Delphi 2006 Professional
 
#6

Re: schnell, schneller, 2 fast 2 furius / TimerProblem

  Alt 9. Feb 2004, 18:31
Zitat von stoxx:
na es gibt noch einen Multimedia Timer in der unit
Dennoch ist Windows kein Realtime Betriebssystem
Nach meinem Wissen wird ein Thread sowieso nur alle 25 ms bedient (Weiss nicht ob die Zahl richtig ist, was sagen die Fachleute ? )
Wenn also windows gerade was auf der Festplatte sucht, kann wiedermal länger dauern
Kann ich mir nicht vorstellen.

Normaler Timer basiert auf der Interrupt 1ch der wird 18,2 mal pro Sekunde aufgerufen daraus ergiebt sich ein maximales Interval von 55.
Mit WinXp ist der Timer noch etwas schneller geworden dazu weiss ich aber nichts näheres.

Ich bevorzuge Threads für Timer:


Delphi-Quellcode:
type
  TTimer = class(TThread)
  private
    FCount: word;
  public
    constructor create();
    destructor destroy; override;
    procedure Execute; override;
    procedure start;
  published
      
  end;

implementation

procedure TTimer.Execute;
begin
  while not Terminated do
  begin
    Sleep(Fcount);
    .........machewas..................

  end;
end;

constructor TTimer.create();
begin
  inherited create(true);

  FCount := 10;
  

  //FreeOnTerminate := true;
  start;
end;

destructor TTimer.destroy;
begin
  terminate;
  inherited destroy;
end;

procedure TTimer.start;
begin
  resume;
end;
Das dürfte auf eine 1ms genau sein.
Genauere Ergebnisse könnte man noch damit erzielen hat dann aber 100% CPU belastung:
Delphi-Quellcode:
procedure TTimer.Execute;
var c : int64;
begin
  while not Terminated do
  begin
    QueryPerformanceCounter(c);
    if C>=Intervall+altezeit then
    begin
      QueryPerformanceCounter(altezeit);
      ....................MAche was...................
    end;
  end;
end;
  Mit Zitat antworten Zitat
Jörn

Registriert seit: 5. Sep 2003
Ort: Helmstedt
312 Beiträge
 
#7

Re: schnell, schneller, 2 fast 2 furius / TimerProblem

  Alt 9. Feb 2004, 21:42
Ich weiss das is vielleicht bissel zu einfach, aber der Timer von DelphiX läuft sehr schnell.
1 ms, vielleicht sogar besser. Vielleicht hilft dir das...
  Mit Zitat antworten Zitat
KoRn117

Registriert seit: 24. Sep 2003
Ort: Hessen
50 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: schnell, schneller, 2 fast 2 furius / TimerProblem

  Alt 9. Feb 2004, 21:50
vielen dank für eure tipps - danke leute
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#9

Re: schnell, schneller, 2 fast 2 furius / TimerProblem

  Alt 9. Feb 2004, 22:50
Wie schnellist eigentlich der Hardwaretimer im Durchschnitt bei den aktuellen Boards ?
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Gandalfus

Registriert seit: 19. Apr 2003
407 Beiträge
 
Delphi 2006 Professional
 
#10

Re: schnell, schneller, 2 fast 2 furius / TimerProblem

  Alt 10. Feb 2004, 14:23
Zitat von Jörn:
Ich weiss das is vielleicht bissel zu einfach, aber der Timer von DelphiX läuft sehr schnell.
1 ms, vielleicht sogar besser. Vielleicht hilft dir das...
Der basiert auf dem onidle Ereignis (zum nachbauen).
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 00:15 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