[EDIT]
Hab grad gesehen das ich DoOnSignal ja mit Synchronize aufrufen...
Werd mal drüber schlafen und morgen dann weiter dran rumwerkeln.
Falls ihr noch nen Tipp oder nen Tutorial habt wär ich auch dankbar...
[/EDIT]
Danke für die schnelle Antwort aber es funzt nit
Ich hab noch recht wenig (null-) Plan vom Threading.
Habe ich da vielleicht etwas falsch gemacht? -- sicher, or?
...
Hier mein Kot:
Delphi-Quellcode:
constructor TM32Thread.Create(
Handle: THandle; Adress: Word; AOwner: TCustomMidi32);
begin
FOwner := AOwner;
FAdress := Adress;
inherited Create(True);
Priority := tpLowest;
//tpTimeCritical;
FHandle :=
Handle;
Resume;
end;
//die Execute procedure:
procedure TM32Thread.Execute;
var
oldState: Byte;
begin
repeat
oldState := FStatus;
FStatus := PortIn(FAdress);
if oldState <> FStatus
then begin
Synchronize(DoOnSignal);
end;
until Terminated;
end;
//die DoOnSignal procedure:
procedure TM32Thread.DoOnSignal;
begin
if NOT Configurated
then begin
FRightPedal := FStatus - 16;
Configurated := True;
Exit;
end;
if FStatus = FRightPedal + 16
then begin
if Assigned(FOwner.FOnStop)
then begin
FOwner.FOnStop(Self);
end;
end else if FStatus = FRightPedal - 16
then begin
if Assigned(FOwner.FOnPlay)
then begin
FOwner.FOnPlay(Self);
end;
end else if FStatus = FRightPedal - 32
then begin
if Assigned(FOwner.FOnForward)
then begin
FOwner.FOnForward(Self);
end;
end else if FStatus = FRightPedal
then begin
if Assigned(FOwner.FOnReward)
then begin
FOwner.FOnReward(Self);
end;
end;
end;