unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, SetupAPI;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var Port : String;
befehl : Char;
ComHandle : THandle;
DCB : TDCB;
TimeOut : TCommTimeouts;
i1,i2 : integer;
begin
SetCommState(ComHandle,DCB);
Port := 'Com5';
ComHandle := CreateFile(pChar(Port), GENERIC_READ OR GENERIC_WRITE,
0, nil, OPEN_EXISTING, 0, 0);
//if ComHandle = INVALID_HANDLE_VALUE then begin ShowMessage('INVALID
HANDLE VALUE '); end;
if ComHandle <> INVALID_HANDLE_VALUE then begin
//if ComHandle > 0 then begin
DCB.DCBlength := SizeOf(DCB);
DCB.ByteSize := 8;
DCB.Parity := NoParity;
DCB.StopBits := TWOSTOPBITS;
DCB.BaudRate := 2400;
GetCommTimeOuts(ComHandle, TimeOut);
TimeOut.ReadIntervalTimeOut := 100;
TimeOut.ReadTotalTimeoutMultiplier := 0;
TimeOut.ReadTotalTimeoutConstant := 1;
TimeOut.WriteTotalTimeoutMultiplier := 0;
TimeOut.WriteTotalTimeoutConstant := 0;
SetCommTimeouts(ComHandle, TimeOut);
end;
befehl := chr(97); // Befehl für globales Abschalten der Gleisspannung
i1 := FileWrite(ComHandle, befehl, 1);
sleep(2000); // Damit Meine langsamen Augen die Anzeige auf der Control
Unit auch sehen
befehl := chr(96); // Gleisspannung wieder freigeben
i2 := FileWrite(ComHandle, befehl, 1);
ShowMessage(IntToStr(ComHandle) + ', ' + IntToStr(i1) + ',' + IntTostr(i2)); // Nur zur Überprüfung
FileClose(ComHandle);
ComHandle := 0;
end;
end.