Nao consigo enviar numero double para o arduino usando socket em java

Bom dia pessoal, sou novo aqui no forum, mas tenho pesquisado algumas coisas por qui e conseguido resolver. Bom..mas estou com um problema e não consigo resolver, estou tentando enviar numeros double para o arduino usando socket em java mas nao estou conseguindo, a unica coisa que eu consigo e enviar um character .A conexao do socket esta ok. O Codigo que estou testando e esse:

void loop()
  {
    
    EthernetClient client = server.available();
    if (client)
    {
     
      while (client.connected())
      {
        if(client.available())
        {
          double var = client.read();

          client.print(var);

          Serial.println(var);
         
          client.stop();
          delay(10);
          }
       }
     }  
    delay(1);
    client.stop();
  }

 

O valor que esta sendo impresso e outro completamente diferente. Se alguem poder me ajudar eu agradeço. Obrigado.

 

Exibições: 611

As respostas para este tópico estão encerradas.

Respostas a este tópico

Provavelmente o problema é pela diferença com que o double é representado nos dois ambientes. Explico: na realidade, em um ambiente digital, não existem números double "por definição", quer dizer, o processador lida sempre com números inteiros. Para representação de números ponto flutuante, recorre-se a artifícios, normalmente específicos para cada tipo de processador ou linguagem, daí a dificuldade de vc enviar esse tipo de dado de um ambiente pro outro.

Sugestões: 

- Se o número for "pequeno" (até o máximo inteiro dos dos ambientes) e vc puder fixar o número de casas decimais, converta para inteiro (por ex: multiplicando por 100 e pegando a parte inteira, caso queira duas casas decimais) e mande, depois converta para real de novo no Arduino, dividindo por 100.

- Se assim não der, converta para string e mande, depois converta para float no Arduino.

Caro Mauro obrigado pelo ajuda consegui resolver valew.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço