Erro Ethernet Shield Arduino - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)2024-03-29T06:55:09Zhttps://labdegaragem.com/forum/topics/erro-ethernet-shield-arduino?commentId=6223006%3AComment%3A708333&feed=yes&xn_auth=noOlá, Elcids, até deletei minh…tag:labdegaragem.com,2019-05-19:6223006:Comment:7089362019-05-19T14:00:50.629ZEduardohttps://labdegaragem.com/profile/EduardoHenriqueMarcondes
<p>Olá, <span>Elcids, até deletei minha resposta ao tópico logo que vi a sua, muito mais completa e exata. Não sabia dessa do ponteiro "arrow", aprendi(emos) muito. </span></p>
<p><span>Fico(amos) muito tristes caso realmente deixe de participar desse grupo. As suas contribuições são maravilhosas, sentiremos muita falta.</span></p>
<p>Em nome de quem se beneficia com suas postagens (me incluo) gostaria de agradecer imensamente por cada postagem. Muito obrigado !!!</p>
<p>Não sei seus motivos,…</p>
<p>Olá, <span>Elcids, até deletei minha resposta ao tópico logo que vi a sua, muito mais completa e exata. Não sabia dessa do ponteiro "arrow", aprendi(emos) muito. </span></p>
<p><span>Fico(amos) muito tristes caso realmente deixe de participar desse grupo. As suas contribuições são maravilhosas, sentiremos muita falta.</span></p>
<p>Em nome de quem se beneficia com suas postagens (me incluo) gostaria de agradecer imensamente por cada postagem. Muito obrigado !!!</p>
<p>Não sei seus motivos, nem precisamos saber, já que é um trabalho voluntário, mas ficaríamos imensamente honrados se vc ficasse, ainda que com dedicação menor. Sua dedicação exemplar imagino que te toma um grande tempo. </p>
<p></p> olá Varley.
Como eu te…tag:labdegaragem.com,2019-05-18:6223006:Comment:7088152019-05-18T20:37:15.695ZElcids Chagashttps://labdegaragem.com/profile/ElcidsChagas
<p><span style="font-size: 12pt;">olá Varley.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Como eu te disse antes, eu só tratei de te mostrar o seu problema de <strong>compilação</strong>. Não analisei se havia um <strong>erro de lógica</strong> no seu programa (<strong>erro de lógica</strong> é outra coisa completamente diferente).</span></p>
<p><span style="font-size: 12pt;"> Sim, eu percebi que provavelmente havia um <strong>erro de lógica</strong> no seu código. Mas achei…</span></p>
<p><span style="font-size: 12pt;">olá Varley.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Como eu te disse antes, eu só tratei de te mostrar o seu problema de <strong>compilação</strong>. Não analisei se havia um <strong>erro de lógica</strong> no seu programa (<strong>erro de lógica</strong> é outra coisa completamente diferente).</span></p>
<p><span style="font-size: 12pt;"> Sim, eu percebi que provavelmente havia um <strong>erro de lógica</strong> no seu código. Mas achei melhor deixar vc resolver sozinho. Vou explicar porquê. Praticamente todo seu código se originou daquele que o <em><strong>Eduardo Henrique Marcondes</strong></em> mostrou, deste link: <strong><em><a href="http://fabianoallex.blogspot.com/2015/02/arduino-autenticacao-http-de-usuario-e.html" target="_blank" rel="noopener">codigo-base</a></em></strong></span></p>
<p><span style="font-size: 12pt;"> E o que tinha diferente no seu código era mínimo, justamente a parte de <em><strong>lógica</strong></em> na função "<em><strong>loop</strong></em>". Assim, percebi que com um pouco mais de análise, vc iria resolver por conta própria.</span></p>
<p><span style="font-size: 12pt;"> E legal que isso realmente aconteceu, que vc resolveu seu problema de <em><strong>lógica</strong></em> no código (embora tenha sido apenas o excesso da função "<strong><em>exec_ethernet</em></strong>" como vc disse, mas é um <em><strong>erro de lógica</strong></em>).</span></p>
<p></p>
<p><span style="font-size: 12pt;"> E saliento mais uma vez: as duas formas que mostrei acima para acesso via <strong>Ponteiro</strong>, são absolutamente idênticas para o <em><strong>Compilador C++</strong></em>. Apenas para nós seres humanos, é que pode parecer diferente. Mas são a mesma coisa. Alguns programadores preferem uma forma, outros preferem a outra. Eu por exemplo só uso a primeira, sem o "<em><strong>arrow</strong></em>", ou seja, prefiro e uso apenas o "<em><strong>(*server).</strong></em>" pois acho mais claro a utilização do Ponteiro. Mas cada um usa como melhor quiser.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Aproveito para informar, que este seu tópico é o último tópico que participo aqui no <strong>LDG</strong>. Depois deste seu tópico, só irei complementar um ou dois tópicos de amigos que acabei ajudando mais diretamente fora do site, e apenas irei complementar esses tópicos para não ficarem sem conclusão. Mas este seu tópico, será efetivamente o último que participo, o tópico derradeiro.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Assim, já aproveito e me despeço de vc.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Abrçs</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Elcids</span></p>
<p></p> Bom tópico encerrado consegui…tag:labdegaragem.com,2019-05-18:6223006:Comment:7089132019-05-18T03:42:13.568ZVarley Gianinihttps://labdegaragem.com/profile/VarleyGianini
<p>Bom tópico encerrado consegui resolver o problema somente comentei o <strong>"exec_ethernet();" </strong>do "<strong>void loop()" </strong>e tudo funcionou perfeitamente Obrigado Elcids pela ajuda ate agora.</p>
<p>Bom tópico encerrado consegui resolver o problema somente comentei o <strong>"exec_ethernet();" </strong>do "<strong>void loop()" </strong>e tudo funcionou perfeitamente Obrigado Elcids pela ajuda ate agora.</p> Boa noite Elcids bom quebrand…tag:labdegaragem.com,2019-05-18:6223006:Comment:7088102019-05-18T02:06:18.717ZVarley Gianinihttps://labdegaragem.com/profile/VarleyGianini
<p>Boa noite Elcids bom quebrando um pouco a cabeça descobri aonde está acontecendo o problema fica na parte do "<strong>while" </strong>como mostra a imagem abaixo.</p>
<p><a href="https://storage.ning.com/topology/rest/1.0/file/get/2643681097?profile=original" rel="noopener" target="_blank"><img class="align-full" src="https://storage.ning.com/topology/rest/1.0/file/get/2643681097?profile=RESIZE_710x"></img></a></p>
<p></p>
<p>O que acontece é quando clico no botão para acionar a lâmpada ele aciona mas pagina demora pra responder as vezes ela cai ai eu atualizo ela volta e clico no botão para…</p>
<p>Boa noite Elcids bom quebrando um pouco a cabeça descobri aonde está acontecendo o problema fica na parte do "<strong>while" </strong>como mostra a imagem abaixo.</p>
<p><a href="https://storage.ning.com/topology/rest/1.0/file/get/2643681097?profile=original" target="_blank" rel="noopener"><img src="https://storage.ning.com/topology/rest/1.0/file/get/2643681097?profile=RESIZE_710x" class="align-full"/></a></p>
<p></p>
<p>O que acontece é quando clico no botão para acionar a lâmpada ele aciona mas pagina demora pra responder as vezes ela cai ai eu atualizo ela volta e clico no botão para desligar ela demora ai desliga e cai.</p>
<p>eu mexi nessas chaves do <strong>"while"</strong> para poder chegar nesse resultado agora não sei mais o que pode ser :/ </p> Fala Elcids blz?
Bom eu teste…tag:labdegaragem.com,2019-05-17:6223006:Comment:7086002019-05-17T22:04:58.427ZVarley Gianinihttps://labdegaragem.com/profile/VarleyGianini
<p>Fala Elcids blz?</p>
<p>Bom eu testei os dois métodos e o que funcionou 90% foi o "<strong>EthernetClient client = server->available();"</strong></p>
<p>Eu entro no IP ele pede login e senha eu coloco as informações e ele abre a pagina web dos botões porém quando eu clico no botão para acionar a lampada a pagina fica carregando e depois cai quando eu dou F5 a pagina volta com o botão acionado e a lampada acende o mesmo se aplica ao desligar. </p>
<p>Você por ter mais experiência claro sem…</p>
<p>Fala Elcids blz?</p>
<p>Bom eu testei os dois métodos e o que funcionou 90% foi o "<strong>EthernetClient client = server->available();"</strong></p>
<p>Eu entro no IP ele pede login e senha eu coloco as informações e ele abre a pagina web dos botões porém quando eu clico no botão para acionar a lampada a pagina fica carregando e depois cai quando eu dou F5 a pagina volta com o botão acionado e a lampada acende o mesmo se aplica ao desligar. </p>
<p>Você por ter mais experiência claro sem abusar saberia a causa disso?</p> Ah sim, esqueci de dizer:
…tag:labdegaragem.com,2019-05-15:6223006:Comment:7083332019-05-15T06:58:16.347ZElcids Chagashttps://labdegaragem.com/profile/ElcidsChagas
<p><span style="font-size: 12pt;">Ah sim, esqueci de dizer:</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Apenas te mostrei como corrigir o erro de compilação, e também o motivo pelo qual este erro ocorreu.</span></p>
<p><span style="font-size: 12pt;"> Mas n</span><span style="font-size: 12pt;">ão verifiquei se todo o seu código está consistente e se funciona (aí é com vc).</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Abrçs,…</span></p>
<p></p>
<p><span style="font-size: 12pt;">Ah sim, esqueci de dizer:</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Apenas te mostrei como corrigir o erro de compilação, e também o motivo pelo qual este erro ocorreu.</span></p>
<p><span style="font-size: 12pt;"> Mas n</span><span style="font-size: 12pt;">ão verifiquei se todo o seu código está consistente e se funciona (aí é com vc).</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Abrçs,</span></p>
<p><span style="font-size: 12pt;"> Elcids</span></p>
<p></p> olá Varley.
Na linha 5…tag:labdegaragem.com,2019-05-15:6223006:Comment:7085282019-05-15T06:30:49.078ZElcids Chagashttps://labdegaragem.com/profile/ElcidsChagas
<p><span style="font-size: 12pt;">olá Varley.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Na <strong>linha 59</strong> do seu código, "<strong>server</strong>" é declarado como um <em><strong>Ponteiro</strong></em> para um objeto "<em><strong>EthernetServer</strong></em>", como mostro na figura a seguir (<em><strong>seta verde</strong></em> na figura):…</span></p>
<p></p>
<p></p>
<p><span style="font-size: 12pt;">olá Varley.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Na <strong>linha 59</strong> do seu código, "<strong>server</strong>" é declarado como um <em><strong>Ponteiro</strong></em> para um objeto "<em><strong>EthernetServer</strong></em>", como mostro na figura a seguir (<em><strong>seta verde</strong></em> na figura):</span></p>
<p></p>
<p><span style="font-size: 12pt;"><a href="https://storage.ning.com/topology/rest/1.0/file/get/2557102912?profile=original" target="_blank" rel="noopener"><img src="https://storage.ning.com/topology/rest/1.0/file/get/2557102912?profile=RESIZE_710x" class="align-full"/></a></span></p>
<p></p>
<p><span style="font-size: 12pt;"> E ele é só um <em><strong>Ponteiro</strong></em>, e nada mais que isso. Ou seja, pode ser usado para localizar objetos "<em><strong>EthernetServer</strong></em>", que nesta linha do código, ainda não existem. Mas na <strong>linha 68</strong> (<em><strong>seta azul</strong></em> na figura anterior), dentro da função "<em><strong>iniciar_ethernet</strong></em>", o "<em><strong>new</strong></em>" cria um objeto "<em><strong>EthernetServer</strong></em>" e retorna um <em><strong>Ponteiro</strong></em> para este objeto (veja no código da biblioteca "Ethernet.h"). Então a partir daí, "<em><strong>server</strong></em>" (que é um Ponteiro!!!), está apontando um objeto real (que não tem nome, mas existe, pois foi criado pelo "<strong><em>new</em></strong>").</span></p>
<p></p>
<p><span style="font-size: 12pt;"> No <em><strong>loop()</strong></em>, vc está chamando o <em><strong>Método</strong></em> (nome fresco que se dá a uma função de uma classe) de nome "<em><strong>available</strong></em>". Ora, sabemos que basta usar o "<strong>.</strong>" entre o <strong>nome do objeto</strong> e o <strong>nome do Método</strong>, para acessar esse Método. Porém, como eu disse antes, "<em><strong>server</strong></em>" não é o objeto, e sim o <em><strong>Ponteiro</strong></em> para este. Devido a isso, a sintaxe seria esta:</span></p>
<p></p>
<p><span style="font-size: 12pt;"> <em><strong>EthernetClient client = (*server).available();</strong></em></span></p>
<p></p>
<p><span style="font-size: 12pt;"> Note que os <strong>parêntesis</strong> tem que ser obrigatoriamente usados, pois o operador "<strong>.</strong>" tem precedência sobre o operador "<strong>*</strong>". Para simplificar a escrita da sintaxe, em <strong>C++</strong> usa-se o operador "<strong>arrow</strong>" (seta, ou "<strong>-></strong>"), substituindo assim os parêntesis e o próprio operador "<strong>*</strong>". Ou seja: </span><span style="font-size: 12pt;"> <em><strong>(*server).</strong></em> é o mesmo que <em><strong>server-></strong></em></span></p>
<p><span style="font-size: 12pt;"> Dessa forma vc pode escrever assim que terá o mesmo resultado:</span></p>
<p></p>
<p><span style="font-size: 12pt;"> <em><strong>EthernetClient client = server->available();</strong></em></span></p>
<p></p>
<p><span style="font-size: 12pt;"> No seu código basta usar uma forma ou outra. Na figura abaixo mostro o seu código para a primeira opção:</span></p>
<p><span style="font-size: 12pt;"><a href="https://storage.ning.com/topology/rest/1.0/file/get/2557140652?profile=original" target="_blank" rel="noopener"><img src="https://storage.ning.com/topology/rest/1.0/file/get/2557140652?profile=RESIZE_710x" class="align-full"/></a></span></p>
<p></p>
<p><span style="font-size: 12pt;"> E na próxima figura, o mesmo código usando a segunda opção:</span></p>
<p><span style="font-size: 12pt;"><a href="https://storage.ning.com/topology/rest/1.0/file/get/2557146206?profile=original" target="_blank" rel="noopener"><img src="https://storage.ning.com/topology/rest/1.0/file/get/2557146206?profile=RESIZE_710x" class="align-full"/></a></span></p>
<p></p>
<p><span style="font-size: 12pt;"> Qualquer uma das duas opções vai compilar sem erros, e resultam no mesmo código para o <strong>Arduino</strong>.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> <span style="text-decoration: underline;"><em><strong>Resumindo</strong></em></span>: vc não pode escrever "<em><strong>server.available()</strong></em>" como está no seu código original (na linha 333), pois "<em><strong>server</strong></em>" <span style="text-decoration: underline;"><em>não é</em></span> o <strong>objeto</strong>, mas sim o <em><strong>Ponteiro para o objeto</strong></em>.</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Abrçs,</span></p>
<p></p>
<p><span style="font-size: 12pt;"> Elcids</span></p>
<p></p>