collapse

* Posts Recentes

O que é isto ? por SerraCabo
[12 de Abril de 2024, 14:20]


Amplificador - Rockboard HA 1 In-Ear por almamater
[11 de Abril de 2024, 20:46]


Emulador NES em ESP32 por dropes
[10 de Abril de 2024, 15:30]


Meu novo robô por josecarlos
[29 de Março de 2024, 18:30]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Ajuda->Ethernet Shield + Cartão SD a Servir de Servidor INDEPENDENTE  (Lida 16997 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline blastboot

  • Mini Robot
  • *
  • Mensagens: 15
Re: Ajuda->Ethernet Shield + Cartão SD a Servir de Servidor INDEPENDENTE
« Responder #15 em: 20 de Janeiro de 2013, 18:43 »
Vou ver se consigo obter algum resultado com as dicas que me deste. Java é uma linguagem que só estou a ver agora e assim de início parece mais difícil de perceber do que PHP. Já vi algumas coisas sobre Java, assim como JQuery e AJAX de modo a começar a perceber o que fazem as funções. Depois de testar dou o feedback. Obrigado!

Offline blastboot

  • Mini Robot
  • *
  • Mensagens: 15
Re: Ajuda->Ethernet Shield + Cartão SD a Servir de Servidor INDEPENDENTE
« Responder #16 em: 22 de Janeiro de 2013, 17:24 »
tarquinio tenho estado a tentar perceber as funções e a própria linguagem em si de javascript e AJAX de forma a modificar o código que me deste e fazê-lo trabalhar com o arduino. Durante a semana, devido ao meu trabalho, tenho pouco tempo para testar e focar-me nisto pelo que durante os fins de semana é que consigo obter alguma evolução. Com isto quero dizer que vou reportando conforme for fazendo algo que se veja ou caso tenha alguma dúvida!

Obrigado!

Offline tarquinio

  • Mini Robot
  • *
  • Mensagens: 529
Re: Ajuda->Ethernet Shield + Cartão SD a Servir de Servidor INDEPENDENTE
« Responder #17 em: 22 de Janeiro de 2013, 18:25 »
Sim o projecto é teu, trabalhas quando quiseres ;)
Nãi sei se já correste o ultimo exemplo que te mandei, mas o código javascript acho que já faz exactamente o que tu precisas... É só mudares os valores para baterem certo com as tuas imagens e deve funcionar... Depois é só colocares o arduino a enviar os valores do sensor, em vez de enviar um valor sempre a aumentar...

Offline blastboot

  • Mini Robot
  • *
  • Mensagens: 15
Re: Ajuda->Ethernet Shield + Cartão SD a Servir de Servidor INDEPENDENTE
« Responder #18 em: 28 de Janeiro de 2013, 13:58 »
Boas! Tentei compilar o código que me deste mas não consegui... entretanto estive a tentar perceber um pouco de AJAX para tentar alterar o codigo em javascript que me deste de modo a alterar a altura da água com o valor dos sensores em vez de alterar todos os segundos.

O código que estou a tentar testar para ver se percebo como é que isto faz a conecção é este:
Código: [Seleccione]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script language="javascript" type="text/javascript">

function ajaxInit() {
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
        ajax = new XMLHttpRequest();
        if (ajax.overrideMimeType) {
            ajax.overrideMimeType('text/xml');
        }
    }
    else if (window.ActiveXObject) { // IE
        try {
            ajax = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e) {
            try {
                ajax = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e) {
alert("O browser não suporta AJAX! Impossível satisfazer pedido.");
return false;
}

        }
    }
    return ajax;
}

function AguaTanque()
{
url = "http://196.168.0.3:80/?req=";
ajax = ajaxInit();
if(ajax) {
    ajax.open("GET", "url", true);
    ajax.send(null);
    ajax.onreadystatechange = function() {
    if(ajax.readyState == 4) {
           
                alert(ajax.responseText);
                    }
    }
}
}

</script>
</head>

<body>

</body>
</html>

Já alterei o programa no arduino para quando receber a url com o "/?req=" fazer um HTTP1.1 200OK, um espaço e um client.println (valor da leitura), mas não consegui perceber como é que trato o que o arduino envia para aplicar à altura do tanque.

Offline tarquinio

  • Mini Robot
  • *
  • Mensagens: 529
Re: Ajuda->Ethernet Shield + Cartão SD a Servir de Servidor INDEPENDENTE
« Responder #19 em: 28 de Janeiro de 2013, 17:36 »
O que é que não funcionou no código que eu enviei?
No arduino a linha:
Código: [Seleccione]
a = (a 1) 0;
deveria ser
Código: [Seleccione]
a = (a+1)%60;
deve ter havido um problema qqer qdo fiz copy-paste... Mas de resto parece-me tudo bem. Testei as coisas aqui em casa antes de enviar e estava a funcionar.
Eu sugeri Websockets porque era como eu faria, mas tens várias maneira de fazer a cena... Ajax é uma delas, mas aí vais ter de te desenrascar sozinho... :P
A nível do browser não deve ser mais difícil fazer de uma maneira ou outra, mas imagino que da parte do arduino vá dar mais trabalho...

Offline blastboot

  • Mini Robot
  • *
  • Mensagens: 15
Re: Ajuda->Ethernet Shield + Cartão SD a Servir de Servidor INDEPENDENTE
« Responder #20 em: 29 de Janeiro de 2013, 19:24 »
Citar
Isto funciona melhor no Firefox... No Chrome tem o problema de se fizeres refresh à página deixar de funcionar... Depois fazendo refresh de novo volta a funcionar... E no IE9 não funciona... No 10 deveria funcionar, mas nca testei...

Preciso que funcione no Internet Explorer... daí ter apostado mais em AJAX. De qualquer forma tentei testar o código que me deste mas não consegui compilar, talvez por causa das bibliotecas.
Fiz o download da biblioteca websocket.h, de acordo com o site que me disses-te, mas esta biblioteca precisa de uma outra que é a MD5.h que por sua vez precisa de um gospel.c (acho que é isto...). Podes dizer de que forma fizes-te?
Já consegui fazer o que queria, com um iframe e uma div, o que foi (depois de saber, claro!) relativamente simples. Vou tentar fazer com AJAX de forma a melhorar o layout e a operacionalidade (não ver o site a fazer o refresh do iframe) e ver-se só os valores/imagem a alterar.  ;D

Offline tarquinio

  • Mini Robot
  • *
  • Mensagens: 529
Re: Ajuda->Ethernet Shield + Cartão SD a Servir de Servidor INDEPENDENTE
« Responder #21 em: 29 de Janeiro de 2013, 20:17 »
Pois quando se faz coisas assim mais complicadas, conseguir que funcione tudo bem em todos os browsers é um pesadelo... :s
Se precisas mesmo que aquilo funcione no IE e não há problema em ter um pouco de lag, então ajax é capaz de ser melhor sim, mesmo se for um pouco mais complicado (não muito anyways). Seria mais chato se quisesses uma coisa que respondesse mesmo bastante rápido (pelo que sei, com ajax o que se faz é estar sempre a fazer pedidos, tipo pooling, e receber páginas novas (ou partes das páginas).
Em relação à library, não sei qual será o problema, eu consegui correr aquilo bem... :s O MD5.h e .c fazem parte da library... O outro ficheiro que referiste não faco a mais pequena idéia do que seja... :s

Offline blastboot

  • Mini Robot
  • *
  • Mensagens: 15
Re: Ajuda->Ethernet Shield + Cartão SD a Servir de Servidor INDEPENDENTE
« Responder #22 em: 30 de Janeiro de 2013, 13:44 »
Entretanto já vi mais alguns posts e parece que este código que tenho em AJAX já é "à antiga"  :o  pelos vistos o que ta a dar agora é jQuery com AJAX, que pelo que percebi "dizem" que torna o código mais simples.
De qualquer maneira, queria agradecer-te pela ajuda que me deste e pela tua disponibilidade em estares a arranjar códigos para que eu percebesse. Deste-me uma grande ajuda e conseguiste orientar-me no caminho certo, que para quem começou nestas andanças à pouco tempo e quando olha para códigos enormes sem perceber nada daquilo e muitas vezes sem saber por onde começar, até fica maluco  ;D  OBRIGADO!!   ;)

Offline tarquinio

  • Mini Robot
  • *
  • Mensagens: 529
Re: Ajuda->Ethernet Shield + Cartão SD a Servir de Servidor INDEPENDENTE
« Responder #23 em: 30 de Janeiro de 2013, 15:33 »
No stress... Boa sorte com o resto do projecto! Depois mostra como ficou a versão final! ;)

Offline blastboot

  • Mini Robot
  • *
  • Mensagens: 15
Re: Ajuda->Ethernet Shield + Cartão SD a Servir de Servidor INDEPENDENTE
« Responder #24 em: 31 de Março de 2013, 21:45 »
Boas! Depois de ter apostado primeiro numa página que fosse funcional e de me ter dedicado também à parte do hardware do projecto, resolvi voltar ao estudo de Javascript de forma a tornar o código do arduino mais leve e também modificar a página de forma a não fazer "refreshs" sistemáticos de iframes. Com isto já consegui fazer um código em AJAX que trabalha com o arduino e faz requests de segundo a segundo de forma a modificar a imagem da água dentro do tanque. Ainda falta perceber como coloco a imagem fixa pela parte inferior (no fundo do tanque) e fazê-la auentar. Até agora da maneira que estou a fazer e também pela ajuda que aqui foi dada, tenho que alterar a posição da DIV e a altura para bater certo, mas está-me a dar algum trabalho efectuar a fórmula matemática para que quando o valor recebido é 465 (valor máximo de água) o TOP da DIV seja 186px e quando o valor da água for zero (vazio) o TOP da DIV seja 470px. Da forma como está agora está a funcionar, mas ao contrário... a água vem de cima para baixo conforme o valor vai aumentando (tanque a encher).
O código que fiz foi este:
Código: [Seleccione]
<!DOCTYPE html
<html>
<head>
<title>PAGINA DE TESTE TANQUE COM AJAX</title>

<script language="javascript" type="text/javascript">
<!--
//Browser Support Code
function dadosAlturaAgua(){
nocache = "&nocache="   Math.random() * 1000000;
var request;  // The variable that makes Ajax possible!

try{
// Opera 8.0 , Firefox, Safari
request = new XMLHttpRequest();
} catch (e){
// Internet Explorer Browsers
try{
request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try{
request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e){
// Something went wrong
alert("AJAX nao suportado! Impossivel visualisar dados. Considere actualizar o browser.");
return false;
}
}
}
// Create a function that will receive data sent from the server
request.onreadystatechange = function(){
if(request.readyState == 4){
if(request.status == 200){
if(request.responseText != null){
document.getElementById('valor').innerHTML = request.responseText;
var imgAgua = document.getElementById("agua");
imgAgua.height = (284 * request.responseText) / 465;
var divAgua = document.getElementById("div2");
divAgua.style.top = (186 * request.responseText) / 465;
}
}
}
}
request.open("GET", "&dadosagua", true);
request.send(null);
setTimeout('dadosAlturaAgua()', 1000);

}

//-->
</script>
</head>

<body onload="dadosAlturaAgua()">
<center>
<h1><b>TANQUE DINAMICO - TESTE</b></h1>
<div style="position:relative; width:400; height:400">
<div style="position: absolute; top: 32px; left: 162px"><center><img name="tanque" id="tanque" src="tanque.jpg" width="400" height="450"></center></div>
<div style="position: absolute; top: 470px; left: 189px; width: 265;" id="div2"><center><input type="image" name="agua" id="agua" src="agua.jpg" width="259px" height="284px">
</center></div>
</div>
<table width="100" border="2" align="left" bgcolor="#999999">
  <tr>
    <td><div align="center"><strong>VALOR</strong></div></td>
  </tr>
  <tr>
    <td><div align="center" id="valor"><var>100</var></div></td>
  </tr>
</table>
</center>
</body>
</html>
« Última modificação: 31 de Março de 2013, 21:48 por blastboot »

Offline tarquinio

  • Mini Robot
  • *
  • Mensagens: 529
Re: Ajuda->Ethernet Shield + Cartão SD a Servir de Servidor INDEPENDENTE
« Responder #25 em: 01 de Abril de 2013, 01:00 »
Olá.
O código que te tinha enviado com os Websockets já faz isso tudo... É só veres e alterares de modo a que receba os dados a partir de ajax em vez de websockets, a parte do desendo em javascrip fica exactamente igual.