Sorry, ich verstehe es nicht.
Anbei die Quellcode-Teile
Delphi-Quellcode:
Thread.pas
...
type
Messung = class(TThread)
private
{ Private-Deklarationen }
protected
procedure Execute; override;
public
ComHandle : THandle;
end;
...
procedure Messung.Execute;
...
buffer_len:=ReadDataFromCOMPort(ComHandle,buffer);
...
while frames in buffer do
...
refreshValues(self) <- Diese Funktion soll im Hauptprogramm die Werte aktualisieren
...
---------------------------------------
unit1.pas:
...
procedure TForm1.StartClick(Sender: TObject);
begin
ComHandle := 0;
// Verbindung aufbauen
ok := ConnectToCOMPort(ComHandle,42, 4);
if ok = 0 Then
begin
Start.Enabled := False;
Stop.Enabled := True;
// ErfassungsThread starten
// Dieser aktualisiert auch die Oberfläche
DatenerfassungsThread.ComHandle := ComHandle;
DatenerfassungsThread.Resume;
end;
// Verbindung beenden
ok := DisconnectFromCOMPort(ComHandle);
end;
procedure TForm1.StopClick(Sender: TObject);
begin
Start.Enabled := True;
Stop.Enabled := False;
DatenerfassungsThread.Suspend;
end;
procedure TForm1.RefreshValues(Sender: TObject);
Var j: Integer;
begin
laenge.Text := IntToStr(buffer_len);
checksumme.Text := IntToStr(ist_checksumme);
...
end;
In Ergänzung dazu:
Wie kann ich die Daten aus dem Thread an das Hauptprogramm zurückgeben?