Wątki i COMy

0

Witam.
Próbuje napisać program, który co jakiś czas bedzie sprawdzal czy można otwożyć port COM. Do tego chcialem użyć wątków ponieważ przy otwieraniu COMa program przestaje na chwilkę reagować, ale nawet gdy ich używam program się wiesza. Co robie nie tak ???

procedure TTestTel.Execute;
var
   hCOM:THandle;
begin
  inherited;
  FreeOnTerminate:=True;
  hCOM:=CreateFile('COM4',GENERIC_WRITE OR GENERIC_READ,0,nil,OPEN_EXISTING,0,0);
  if hCOM<>INVALID_HANDLE_VALUE then
  begin
    Synchronize(pisz_jest);
  end
  else
  begin
   Synchronize(pisz_brak);
  end;
  CloseHandle(hCOM);
end;

Program sie wiesza gdy uda mu się otwożyć port, jeśli się nie uda idzie gładko :P

0
  1. po co Ci inherited w Execute??
  2. co masz w pisz_jest
0
  1. inherited - kompilator wpisał mi to gdy tworzyłem nowy wątek więc zostawiłem.
procedure TTestTel.pisz_brak;
begin
  form1.pisz('brak telefonu');
end;

procedure TTestTel.pisz_jest;
begin
  form1.pisz('Telefon OK');
end;

procedura pisz;

procedure TForm1.pisz(text: String);
begin
  memo1.Lines.Add(text);
end;

wywolanie wątku :

procedure TForm1.Button2Click(Sender: TObject);
begin
  TestTel:=TTestTel.Create(True);
  TestTel.Priority:=tpIdle;
  TestTel.Resume;
end;

Ten kod działa tyle, że "czuć" otwieranie COM :)
Może to wina MsVisy ???

1 użytkowników online, w tym zalogowanych: 0, gości: 1