Einzelnen Beitrag anzeigen

lilmnm

Registriert seit: 2. Feb 2025
1 Beiträge
 
#1

Projekt hat exception-klasse external:sigsev ausgelöst

  Alt Heute, 12:39
Hallo liebe Community,

Ich bin gerade dabei ein Programm zu schreiben, welches einen Text an einen Ardunio über einen Com-Port weiterleitet. Jedoch bin ich auf den bereits in diesem Forum thematisierten SIGSEV-Fehler gestoßen (Zeile 65). Ich komme nicht weiter und würde mich über eine Antwort freuen. Hier der Code:

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); // hier sitzt das Problem
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;
  Mit Zitat antworten Zitat