the same :-(
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, StdCtrls, LazSerial, Dialogs;
type
{ TForm1 }
TForm1 = class(TForm)
Memo1: TMemo;
LazSerial1: TLazSerial;
procedure FormCreate(Sender: TObject);
procedure LazSerial1RxData(Sender: TObject);
private
FBuffer: string;
const END_STRING = 'end';
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Caption := 'Mein neues Fenster';
Caption := 'COM2 Empfänger - Version 1.0';
Memo1.Clear;
LazSerial1.Active := True;
// LazSerial1.Open;
// COM-Port direkt öffnen
// LazSerial1.Device := 'COM2';
// LazSerial1.BaudRate := TBaudRate.br_19200;
// Integer, TLazSerial akzeptiert das
// LazSerial1.Open;
FBuffer := '';
end;
procedure TForm1.LazSerial1RxData(Sender: TObject);
var
s: string;
p: Integer;
begin
s := LazSerial1.ReadData;
if s = '' then Exit;
// Puffer erweitern
FBuffer := FBuffer + s;
// Daten sofort anzeigen
Memo1.SelStart := Length(Memo1.Text);
Memo1.SelText := s;
// Prüfen, ob END_STRING empfangen wurde
p := Pos(END_STRING, FBuffer);
if p > 0 then
begin
// COM-Port schließen
LazSerial1.Close;
// "end" aus Puffer entfernen
Delete(FBuffer, p, Length(END_STRING));
Memo1.Text := FBuffer;
ShowMessage('Empfang abgeschlossen');
end;
end;
end.