ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Delphi Bluetooth Android TThread e Sleep

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Mobile com Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
vtrx
Novato
Novato


Registrado: Sábado, 21 de Março de 2015
Mensagens: 12

MensagemEnviada: Sex Nov 19, 2021 11:32 am    Assunto: Delphi Bluetooth Android TThread e Sleep Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
vtrx
Novato
Novato


Registrado: Sábado, 21 de Março de 2015
Mensagens: 12

MensagemEnviada: Qui Dez 23, 2021 11:26 am    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Mobile com Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB