Delphi Bluetooth Android TThread e Sleep

18/11/2021

0

Estou terminando um aplicativo onde tenho uma rotina que precisa ficar'' pingando'' o dispositivo para verificar se a distancia do celular não esta fora de alcance do dispositivo Bluetooth.
Eu utilizo um Timer e uma TThread anônima dentro do evento do Timer,mas não sei se foi implementado corretamente.
O aplicativo utiliza um Horizontal Scroll Box com um Memo e alguns GroupBox.
O Timer esta setado para 3 segundos e sempre que ocorre o evnto Timer,a digitação do Memo ou o Scroll Box ficam ''travando'' e quero eliminar isso.
O sleep dentro do Timer é de 1 segundo e não pode ser menor sob o risco de fragmentação dos dados vindo pelo Bluetooth.
segue o esboço da rotina.
  
procedure TForm1.Timer1Timer(Sender: TObject);
 begin
  TThread.CreateAnonymousThread(
    procedure
    begin
        TThread.Synchronize(TThread.CurrentThread,
        procedure
        begin
            BTMethod.SendData(ID,#$2);
            Sleep(1000);
            Application.ProcessMessages;
            PING:= BTMethod.Receivedata(ID);
        end);
    end).Start;


Como poderia executar esta rotina em tempos sem interferir na digitação do Memo e o Scroll Box?
Vtrx

Vtrx

Responder

Posts

20/11/2021

Emerson Nascimento

você já tentou retirar à chamada ao método Application.ProcessMessages pra ver o que acontece?

Responder

20/11/2021

Vtrx

você já tentou retirar à chamada ao método Application.ProcessMessages pra ver o que acontece?


Comentei //Application.ProcessMessages; e não alterou em nada.
Responder

21/11/2021

Vtrx

Achei uma solução vasculhando muito.
...
  Blue_ping = class(TThread)
    private
    Lp: Integer;
    protected
     procedure Execute ; override;
  end;
...
{ Blue_ping }

procedure Blue_ping.Execute;
begin

end;
...
procedure TForm1.Timer1Timer(Sender: TObject);
 begin
  with Blue_ping.Create do FreeOnterminate:=true;
end;
...


Uma observação é que seu utilizar um Application.ProcessMessages depois do Sleep não funciona.
...
    Sleep(1000);
   // Application.ProcessMessages;
...
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar