Einzelnen Beitrag anzeigen

valjah

Registriert seit: 13. Nov 2006
19 Beiträge
 
Delphi 7 Personal
 

Re: Parallelport-Abfrage mit Timeout

  Alt 26. Mär 2009, 11:13
Frei nach dem Motto "keep it simple, stupid" frage ich mich gerade: was wäre das Problem bei folgendem Vorgehen?

Delphi-Quellcode:
procedure WaitLPT;
begin
  QueryPerformanceFrequency(Frequency);
  QueryPerformanceCounter(StartTime);
  repeat
    GetState := Inp32($379);
    CheckFlag(GetState, Buffer, BufferFull);
    QueryPerformanceCounter(StopTime);
    WaitTime := (StopTime - StartTime) * 1000 div Frequency;
  until BufferFull or WaitTime >= TimeOut;
end;
CheckFlag prüft hier, ob das Buffer Bit gesetzt ist.

Delphi-Quellcode:
procedure CheckFlag(Value, Flag: Byte; out Check: Boolean);
begin
  if (Value and Flag) = Flag then
    Check := True
  else
    Check := False;
end;
Als Output (von WaitLPT) benötige ich lediglich die exakte Zeit, die zwischen Aufruf und BufferFull vergangen ist. Während ich darauf warte, soll das Programm (und das ganze System) nichts anderes machen.

Also: wozu Timer bzw. Threads? Oder mache ich es mir hier zu einfach?
  Mit Zitat antworten Zitat