| 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 |  | 
	
		|  | 
	
		|  |