Galera estou com dificuldades em chamar um método que contém uma thread, simplesmente ele só chamar uma vez.
Fiz um for e dentro desse for ele chama o método que contém a thread. Segue o Código
public String conectar(final PtoEquipamento ptoequipamento) {
final String EQUIPAMENTO_IP = ptoequipamento.getIp();
final String EQUIPAMENTO_PORTA = ptoequipamento.getPorta();
int qtde = 0;
int maxTentativas = 5;
boolean retorno = false;
client = new TcpClient(EQUIPAMENTO_IP, Integer.valueOf(EQUIPAMENTO_PORTA));
conectado = client.connect();
if (client.isConnected()) {
for (int i = 0; i < 10; i++) {
executarProcedimento(conectado, ptoequipamento, client);
Msg.addMsgInfo("Dados Recebidos ");
}
} else {
for (qtde = 0; qtde < maxTentativas; qtde++) {
Msg.addMsgError("Tentando Reconectar");
client.connect();
conectado = client.connect();
if (client.isConnected()) {
retorno = executarProcedimento(conectado, ptoequipamento, client);
break;
} else {
conectado = false;
client.disconnect();
retorno = false;
}
}
}
public Boolean executarProcedimento(Boolean seConectado, final PtoEquipamento ptoequipamento, final TcpClient client) {
conectado = seConectado;
new Thread(new Runnable() {
public void run() {
try {
while (conectado) {
int temDados = enviarSolicitacaoRegistroPonto(client, ptoequipamento);
while (temDados > 0) {
char[] temp = client.receiveData(temDados); //RECEBENDO DADOS
String str = "";
for (char chr : temp) {
if (chr == ']') {
str = "";
}
if (Character.isDigit(chr)) {
str += chr;
if (str.length() == 34) {
listaRegistros.add(str);
int var = Integer.valueOf(str.substring(0, 9));
int lastNSRInt = Integer.valueOf(lastNSR);
if (var > lastNSRInt) {
lastNSR = Integer.valueOf(str.substring(0, 9));
nsr = lastNSRInt;
}
str = "";
}
}
}
if (listaRegistros.size() > 0) {
try {
manager.getTransaction().begin();
for (String item : listaRegistros) {
int nsr1 = Integer.valueOf(item.substring(0, 9));
int tipo = Integer.valueOf(item.substring(9, 10));
PtoArquivo arquivo = new PtoArquivo();
String HrsString = item.substring(18, 22);
String pisString = item.substring(22, 34);
Date dataAtual = Data.parse(item.substring(10, 18));
String Equipam = ptoequipamento.getDescricao();
ptoequipamento.setUltimonsr(nsr1);
if (tipo != 2) {
arquivo.setEquipamento(Equipam);
arquivo.setData(dataAtual);
arquivo.setTipo(tipo);
arquivo.setNsr(nsr1);
arquivo.setHora(HrsString);
arquivo.setPis(pisString);
arquivo.setPtooriginal(item);
manager.persist(arquivo);
manager.merge(ptoequipamento);
}
}
manager.getTransaction().commit();
manager.close();
} catch (Exception e) {
}
conectado = false;
client.disconnect();
}
}
Thread.sleep(50); //esperando resposta
}//FIM DO WHILE
} catch (Exception e) {
conectado = false;
}
}
}
).start();
return false;
}
public int enviarSolicitacaoRegistroPonto(TcpClient client, PtoEquipamento ptoequipamento) {
String codigo = "01+RR+00+N]";
String qtdeRegistros = "40]";
String ultimoNSR = String.valueOf(ptoequipamento.getUltimonsr());
String str1 = codigo + qtdeRegistros + ultimoNSR;
char[] data = str1.toCharArray();
String str = textFormat(data);
client.sendData(str.toCharArray());
int dados = client.availableData();
return dados;
}