Bom dia pessoal,

Postei alguns dias atras, sobre como comunicar um comando com um painel, pois bem... encontrei a maneira de comunicar, porém, ele esta estranho.

Vou explicar o funcionamento:

No comando, existe um cronometro para eventos, nele, tenho um tempo pré configurado e um start/stop.

No painel, tenho os dígitos que vão mostrar o tempo percorrido.

Como falei antes, eu fiz funcionar.. porém.. o cronometro trava, se perde, esta perdendo o sincronismo.

Alguém tem alguma ideia de como corrigir? Tenho que alterar delay, buffer, ou porta??

Segue o código:

void loop()
{
int cb = udp.parsePacket();
if (!cb)
{
//If serial data is recived send it to UDP
if(Serial.available()>0)
{
udp.beginPacket(ServerIP, 123); //Send Data to Master unit
//Send UDP requests are to port 2000

char a[1];
a[0]=char(Serial.read()); //Serial Byte Read
udp.write(a,1); //Send one byte to ESP8266
udp.endPacket();
}
}
else {
// We've received a UDP packet, send it to serial
udp.read(packetBuffer, 1); // read the packet into the buffer, we are reading only one byte
Serial.print(packetBuffer);
delay(1);

Exibições: 983

Responder esta

Respostas a este tópico

Se a thread do cronometro estiver na mesma thread do servidor.. realmente faz sentido  pois o servidor bloqueia a espera de requisições, por fim travando o cronometro.

Acho que não tem nada de errado com o programa do arduino, mas sim da outra ponta.. 

Não da pra se dizer com 100% de certeza, pq falta bastante informação ai..

a theread esta certa, pois funciona via RF....

O que eu estou utilizando é, duas placas ESP8266.

1 placa eu liguei no comando e a outra no display...

esse código que eu coloquei é o que estou usando nas placas..

O que falta ali é somente o código para conectar na rede.

essa é a string que o cronometro envia  04 1b 87 20 82 d7, então eu preciso ler ela sem perder pacote

Pois é cara, não sei se você estudou redes.

Mas vc está utilizando o protocolo UDP.. Este protocolo orientado a datagramas, e não garante que a mensagem será entregue o destinatário..

Se vc quer garantir que o pacote sera entregue, utilize o protocolo TCP ai

estudei redes sim... mas estou utilizando UDP pois preciso que os pacotes sejam enviados para outros equipamentos...

Vou tentar fazer TCP com broadcast...

A minha dúvida era, se funciona desta forma ou não.. ou precisaria alterar alguma coisa... 

Agora, estamos em um fórum para tirar dúvidas e não em um bar para trocar farpas.

Faz um broadcast utilizando UDP para descobrir os dispositivos na rede..

E depois de uns três broadcasts, você obtera a lista de devices conectados..

Com essa lista, você acessa um por um via Socket e envia a informação

Obs: Não abra muita conexão via socket, pois há um limite nisso.

Foca no problema....

essa que era minha dúvida.. o que fazer.. um norte.. sou novo em programação... sei mais a parte técnica da coisa....

Boa noite,

Você deve estar perdendo pacotes.

Use TCP em vez de UDP.

Boa sorte,

  'Eiju

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço