Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit Unit1;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls;
- type
- TForm1 = class(TForm)
- Button1: TButton;
- procedure Button1Click(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- var
- Form1: TForm1;
- comfile:THandle;
- implementation
- {$R *.dfm}
- 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 öffnen.
- Sollte dies fehlschlagen, gibt die Funktion false zurück.
- }
- 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 Rückgabewert 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, Parität 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 übergebenen String einen Zeilenumbruch (#13 + #10) hängen
- }
- 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.
- }
- function ReadText: string;
- var
- d: array[1..80] of Char;
- s: string;
- BytesRead, i: cardinal;
- 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;
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- showmessage('hi');
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement