function OpenCOMPort: Boolean;
var
DeviceName: array[0..80] of Char;
ComFile: THandle;
begin{ First step is to open the communications device for read/write.
This is achieved using the Win32 "CreateFile" function.
If it fails, the function returns false.
Wir versuchen, COM1 zu offnen.
Sollte dies fehlschlagen, gibt die Funktion false zuruck.
}
StrPCopy(DeviceName, "COM1:");
ComFile := CreateFile(DeviceName,
GENERIC_READ or GENERIC_WRITE,
0,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
if ComFile = INVALID_HANDLE_VALUE then
Result := False
else
Result := True;
end;
function SetupCOMPort: Boolean;
const
RxBufferSize = 256;
TxBufferSize = 256;
var
DCB: TDCB;
Config: string;
CommTimeouts: TCommTimeouts;
begin{ We assume that the setup to configure the setup works fine.
Otherwise the function returns false.
wir gehen davon aus das das Einstellen des COM Ports funktioniert.
sollte dies fehlschlagen wird der Ruckgabewert auf "FALSE" gesetzt.
}
Result := True;
ifnot SetupComm(ComFile, RxBufferSize, TxBufferSize) then
Result := False;
ifnot GetCommState(ComFile, DCB) then
Result := False;
// define the baudrate, parity,... // hier die Baudrate, Paritat usw. konfigurieren
Config := "baud=9600 parity=n data=8 stop=1";
ifnot BuildCommDCB(@Config[1], DCB) then
Result := False;
ifnot SetCommState(ComFile, DCB) then
Result := False;
with CommTimeouts dobegin
ReadIntervalTimeout := 0;
ReadTotalTimeoutMultiplier := 0;
ReadTotalTimeoutConstant := 1000;
WriteTotalTimeoutMultiplier := 0;
WriteTotalTimeoutConstant := 1000;
end;
ifnot SetCommTimeouts(ComFile, CommTimeouts) then
Result := False;
end;
{
The following is an example of using the "WriteFile" function
to write data to the serial port.
Folgendes Beispiel verwendet die "WriteFile" Funktion, um Daten
auf den seriellen Port zu schreiben.
}procedure SendText(s: string);
var
BytesWritten: DWORD;
begin{
Add a word-wrap (#13 + #10) to the string
An den ubergebenen String einen Zeilenumbruch (#13 + #10) hangen
}
s := s + #13 + #10;
WriteFile(ComFile, s[1], Length(s), BytesWritten, nil);
end;
{
The following is an example of using the "ReadFile" function to read
data from the serial port.
Folgendes Beispiel verwendet die "ReadFile" Funktion, um Daten
vom seriellen Port zu lesen.
}procedure ReadText: string;
var
d: array[1..80] of Char;
s: string;
BytesRead, i: Integer;
begin
Result := "";
ifnot ReadFile(ComFile, d, SizeOf(d), BytesRead, nil) thenbegin{ Raise an exception }end;
s := "";
for i := 1 to BytesRead do s := s + d[I];
Result := s;
end;
procedure CloseCOMPort;
begin// finally close the COM Port! // nicht vergessen den COM Port wieder zu schliessen!
CloseHandle(ComFile);
end;
Если Вас заинтересовала или понравилась информация по разработке на Delph - "Читать и писать в последовательный порт", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу: Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!