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?