var
hCommFile : THandle;
TimeoutBuffer : PCOMMTIMEOUTS;
NumberOfBytesRead : dword;
Buffer :
array[0..255]
of char;
// Gibt das Handle zum Port bzw. der Datei zurück
hCommFile := CreateFile(PChar('
COM1'),
GENERIC_READ,
//Hier evtl. einen anderen Parameter setzen
0,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
if(hCommFile = INVALID_HANDLE_VALUE)
then
// Fehler; Kein gültiges Handle!
// Wenn man vom ComPort liest sollte man auch diese Zeilen benutzen.
// Wenn man darauf schreibt, sollt man auch noch WriteTotalTimeoutMultiplier und WriteTotalTimeoutConstant setzen
GetMem(TimeoutBuffer, sizeof(COMMTIMEOUTS));
GetCommTimeouts(hCommFile, TimeoutBuffer^);
TimeoutBuffer.ReadIntervalTimeout := 100;
TimeoutBuffer.ReadTotalTimeoutMultiplier := 100;
TimeoutBuffer.ReadTotalTimeoutConstant := 100;
SetCommTimeouts(hCommFile, TimeoutBuffer^);
FreeMem(TimeoutBuffer, sizeof(COMMTIMEOUTS));
// Schließlich lesen wir vom Port bzw. der Datei
FillChar(Buffer, sizeof(Buffer), #0);
ReadFile(hCommFile, Buffer, sizeof(Buffer), NumberOfBytesRead,
nil);
// Das Handle zum Port bzw. der Datei wieder schließen,
// und sie somit wieder für andere Programme zugänglich machen.
CloseHandle(hCommFile);