Einzelnen Beitrag anzeigen

BAMatze

Registriert seit: 18. Aug 2008
Ort: Berlin
759 Beiträge
 
Turbo Delphi für Win32
 
#1

Wegmessung in Thread -> v und a berechnen Theoriefrage

  Alt 22. Okt 2009, 10:23
Hallo und guten Tag an alle DP´ler,

Mal eine rein theoretische Frage zu der Berechnung von Geschwindigkeit und Beschleunigung eines sich bewegenden Objektes mittels Thread. Wobei eigentlich die Genauigkeit einer solchen Berechnung interessant für mich ist, da ich ja schon oft gelesen hab, dass Windows ja keine "Echtzeit-BS" ist. Die restliche Theorie betreffend Geschwindigkeit ist Ableitung des Weges nach der Zeit, Beschleunigung ist Ableitung der Geschwindigkeit nach der Zeit oder die zweite Ableitung des Weges nach der Zeit, ist mir schon klar.

Also ich verwende folgende Execute-Fkt in meinem Thread:

Delphi-Quellcode:
procedure TControlCardControlThread.Execute;
var c, iIndex: integer;
begin
  for iIndex := 1 to 5 do (Form3.findcomponent('CheckBox' + inttostr(iIndex+8)) as TCheckBox).Checked:= fabDigChannelSignals[iIndex];
  repeat
  c := GetTickCount;
  // hier soll nun eine Wegmessung erfolgen und diese soll mit der vorhergegangenen Messung des Threaddurchlaufes verglichen werden und über das Intervall in Geschwindigkeit und Beschleunigung überführt werden.
  bUpdateDataForm1 := ComportSearch(FsLComport);
  Synchronize(UpdateForms);
  c := {interval}50 - (GetTickCount - c);
  if c > 0 then Sleep(c);
until Terminated;
if assigned(FsLComport) then FsLComport.Free;
end;
Meine Frage ist nun: Ich habe das Intevall des Threads ja auf 50ms festgesetzt. Wie genau werden diese 50ms denn eingehalten? Es ist ja bekannt, dass die Threads immer einen zuteilungsfähigen Status und einen ruhenden Status haben. Wird wirklich nach 50ms die repeat-Schleife des Threads neu gestartet, so dass ich exakt sagen kann, v = ((Differenz der Wegmessung)/ 50ms) oder ist das eher nach dem Motto 50ms +/- Tolleranz (mir ist schon bewusst, dass ein Teil meines Intervalls durch das Abarbeiten meiner Routinen im Thread verbraucht werden)?

Hoffe jemand kann mir da eine genaue Auskunft geben.
Vielen Dank
BAMatze
2. Account Sero
  Mit Zitat antworten Zitat