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);
}
Tags:
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
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por