unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
ExtCtrls, Spin, synaser;
type
{ TForm1 }
TForm1 =
class(TForm)
Button1: TButton;
Button2: TButton;
ButtonConnect: TButton;
ButtonSend: TButton;
ComboBox1: TComboBox;
ComboBoxPorts: TComboBox;
Edit1: TEdit;
EditTextToSend: TEdit;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
GroupBoxConnection: TGroupBox;
GroupBoxSend: TGroupBox;
LabelTextToSend: TLabel;
Memo1: TMemo;
MemoLog: TMemo;
procedure ButtonConnectClick(Sender: TObject);
procedure ButtonSendClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
connection1: TBlockSerial;
// Globale Variable für die serielle Verbindung
connected: boolean;
// Verbindungsstatus
port:
string;
// Gewählter Port
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
var
portNames:
string;
i: integer;
begin
// Liste der verfügbaren seriellen Ports abrufen
portNames := getSerialPortNames;
port := '
';
for i := 1
to Length(portNames)
do
begin
if portNames[i] = '
,'
then
begin
ComboBoxPorts.Items.Add(port);
// :!::!::!: [COLOR="Lime"]hier sitzt das Problem[/COLOR]
port := '
';
end
else
port := port + portNames[i];
end;
ComboBoxPorts.Items.Add(port);
ComboBoxPorts.Text := '
Wähle Port';
connected := False;
end;
procedure TForm1.ButtonConnectClick(Sender: TObject);
begin
if connected
then
begin
// Verbindung trennen
connection1.CloseSocket;
connection1.Free;
connected := False;
MemoLog.Lines.Add('
Verbindung mit ' + port + '
getrennt.');
ButtonConnect.Caption := '
Verbinden';
ComboBoxPorts.Enabled := True;
end
else
begin
if ComboBoxPorts.ItemIndex <> -1
then
begin
port := ComboBoxPorts.Text;
// Verbindung erstellen
connection1 := TBlockSerial.Create;
connection1.Connect(port);
connection1.Config(9600, 8, '
N', SB1, False, False);
MemoLog.Lines.Add('
Verbunden mit Port: ' + port);
connected := True;
ButtonConnect.Caption := '
Trennen';
ComboBoxPorts.Enabled := False;
end
else
ShowMessage('
Bitte wählen Sie einen Port aus.');
end;
end;
procedure TForm1.ButtonSendClick(Sender: TObject);
var
textToSend:
string;
begin
if connected
then
begin
textToSend := edit1.text;
if textToSend <> '
'
then
begin
// Text senden
connection1.SendString(textToSend + #13#10);
// Senden mit Zeilenumbruch
MemoLog.Lines.Add('
Gesendeter Text: ' + textToSend);
end
else
ShowMessage('
Bitte geben Sie einen Text ein, der gesendet werden soll.');
end
else
ShowMessage('
Es besteht keine Verbindung.');
end;
end.
end; ;
procedure TForm1.ButtonConnectClick(Sender: TObject);
begin
if connected
then
begin
// Verbindung trennen
connection1.CloseSocket;
connection1.Free;
connected := False;
MemoLog.Lines.Add('
Verbindung mit ' + port + '
getrennt.');
ButtonConnect.Caption := '
Verbinden';
ComboBoxPorts.Enabled := True;
end
else
begin
if ComboBoxPorts.ItemIndex <> -1
then
begin
port := ComboBoxPorts.Text;
// Verbindung erstellen
connection1 := TBlockSerial.Create;
connection1.Connect(port);
connection1.Config(9600, 8, '
N', SB1, False, False);
MemoLog.Lines.Add('
Verbunden mit Port: ' + port);
connected := True;
ButtonConnect.Caption := '
Trennen';
ComboBoxPorts.Enabled := False;
end
else
ShowMessage('
Bitte wählen Sie einen Port aus.');
end;
end;
procedure TForm1.ButtonSendClick(Sender: TObject);
var
textToSend:
string;
begin
if connected
then
begin
textToSend := edit1.text;
if textToSend <> '
'
then
begin
// Text senden
connection1.SendString(textToSend + #13#10);
// Senden mit Zeilenumbruch
MemoLog.Lines.Add('
Gesendeter Text: ' + textToSend);
end
else
ShowMessage('
Bitte geben Sie einen Text ein, der gesendet werden soll.');
end
else
ShowMessage('
Es besteht keine Verbindung.');
end;
end.
end;