Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
vtrx Novato
Registrado: Sábado, 21 de Março de 2015 Mensagens: 12
|
Enviada: Sex Nov 19, 2021 11:32 am Assunto: Delphi Bluetooth Android TThread e Sleep |
|
|
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.
Código: | 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? |
|
Voltar ao Topo |
|
|
vtrx Novato
Registrado: Sábado, 21 de Março de 2015 Mensagens: 12
|
Enviada: Qui Dez 23, 2021 11:26 am Assunto: |
|
|
Achei uma solução vasculhando muito.
Código: | ...
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.
Código: | ...
Sleep(1000);
// Application.ProcessMessages;
... |
|
|
Voltar ao Topo |
|
|
|