Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
functionOpenCOMPort: 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; if
not
SetupComm(ComFile, RxBufferSize, TxBufferSize) then
Result := False; if
not
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'; if
not
BuildCommDCB(@Config[1], DCB) then
Result := False; if
not
SetCommState(ComFile, DCB) then
Result := False; with
CommTimeouts do
begin
ReadIntervalTimeout := 0; ReadTotalTimeoutMultiplier := 0; ReadTotalTimeoutConstant := 1000; WriteTotalTimeoutMultiplier := 0; WriteTotalTimeoutConstant := 1000; end
; if
not
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 := ''; if
not
ReadFile(ComFile, d, SizeOf(d), BytesRead, nil
) then
begin
{ 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
;