Ajax - Request

2 respostas
A

Galera, boa tarde.

Preciso de uma ajuda referente a página abaixo.
Ela conversa com um Arduíno onde mostra um sensor e possui um botão de liga e desliga porém gostaria de separar o request pois o sensor gostaria de fosse em 30 em 30 segundos e o botão fosse acionado assim que clicado.
Alguém pode dar uma luz?

Obrigado.

<!DOCTYPE html>
<html>
    <head>
        <title>Arduino Ajax I/O</title>
        <script>
		strLED1 = "";
		strLED2 = "";
		strLED3 = "";
		strLED4 = "";
		var LED3_state = 0;
		var LED4_state = 0;
		function GetArduinoSensor()
		{
			nocache = "&nocache=" + Math.random() * 1000000;
			var request = new XMLHttpRequest();
			request.onreadystatechange = function()
			{
				if (this.readyState == 4) {
					if (this.status == 200) {
						if (this.responseXML != null) {
							// Arquivo XML recebido - contém os valores analógicos, os valores de switch e LED estados
							var count;
							// obter entradas analógicas
							var num_an = this.responseXML.getElementsByTagName('analog').length;
							for (count = 0; count < num_an; count++) {
								document.getElementsByClassName("analog")[count].innerHTML =
									this.responseXML.getElementsByTagName('analog')[count].childNodes[0].nodeValue;
							}
							// obter entrada dos interruptores
							var num_an = this.responseXML.getElementsByTagName('switch').length;
							for (count = 0; count < num_an; count++) {
								document.getElementsByClassName("switches")[count].innerHTML =
									this.responseXML.getElementsByTagName('switch')[count].childNodes[0].nodeValue;
							}
						}
					}
				}
			}
			
			// enviar solicitação HTTP GET com LEDs para ligar / desligar, se houver
			request.open("GET", "ajax_inputs" + strLED1 + strLED2 + strLED3 + strLED4 + nocache, true);
			request.send(null);
			setTimeout('GetArduinoSensor()', 1000);
			strLED1 = "";
			strLED2 = "";
			strLED3 = "";
			strLED4 = "";
		}
		function GetArduinoBotao()
		{
			nocache = "&nocache=" + Math.random() * 1000000;
			var request = new XMLHttpRequest();
			request.onreadystatechange = function()
			{
				if (this.readyState == 4) {
					if (this.status == 200) {
						if (this.responseXML != null) {
							// Arquivo XML recebido - contém os valores de estados dos LEDs

							// LED 1
							if (this.responseXML.getElementsByTagName('LED')[0].childNodes[0].nodeValue === "checked") {
								document.LED_form.LED1.checked = true;
							}
							else {
								document.LED_form.LED1.checked = false;
							}
							// LED 2
							if (this.responseXML.getElementsByTagName('LED')[1].childNodes[0].nodeValue === "checked") {
								document.LED_form.LED2.checked = true;
							}
							else {
								document.LED_form.LED2.checked = false;
							}
							// LED 3
							if (this.responseXML.getElementsByTagName('LED')[2].childNodes[0].nodeValue === "on") {
								document.getElementById("LED3").innerHTML = "LED 3 is ON (D8)";
								LED3_state = 1;
							}
							else {
								document.getElementById("LED3").innerHTML = "LED 3 is OFF (D8)";
								LED3_state = 0;
							}
							// LED 4
							if (this.responseXML.getElementsByTagName('LED')[3].childNodes[0].nodeValue === "on") {
								document.getElementById("LED4").innerHTML = "LED 4 is ON (D9)";
								LED4_state = 1;
							}
							else {
								document.getElementById("LED4").innerHTML = "LED 4 is OFF (D9)";
								LED4_state = 0;
							}
						}
					}
				}
			}
			
			// enviar solicitação HTTP GET com LEDs para ligar / desligar, se houver
			request.open("GET", "ajax_inputs" + strLED1 + strLED2 + strLED3 + strLED4 + nocache, true);
			request.send(null);
			setTimeout('GetArduinoBotao()', 1000);
			strLED1 = "";
			strLED2 = "";
			strLED3 = "";
			strLED4 = "";
		}
		// serviço de LEDs quando caixa de seleção marcada / desmarcada
		function GetCheck()
		{
			if (LED_form.LED1.checked) {
				strLED1 = "&LED1=1";
			}
			else {
				strLED1 = "&LED1=0";
			}
			if (LED_form.LED2.checked) {
				strLED2 = "&LED2=1";
			}
			else {
				strLED2 = "&LED2=0";
			}
		}
		function GetButton1()
		{
			if (LED3_state === 1) {
				LED3_state = 0;
				strLED3 = "&LED3=0";
			}
			else {
				LED3_state = 1;
				strLED3 = "&LED3=1";
			}
		}
		function GetButton2()
		{
			if (LED4_state === 1) {
				LED4_state = 0;
				strLED4 = "&LED4=0";
			}
			else {
				LED4_state = 1;
				strLED4 = "&LED4=1";
			}
		}
	</script>
	<style>
		.IO_box {
			float: left;
			margin: 0 20px 20px 0;
			border: 1px solid blue;
			padding: 0 5px 0 5px;
			width: 120px;
		}
		h1 {
			font-size: 120%;
			color: blue;
			margin: 0 0 10px 0;
		}
		h2 {
			font-size: 85%;
			color: #5734E6;
			margin: 5px 0 5px 0;
		}
		p, form, button {
			font-size: 80%;
			color: #252525;
		}
		.small_text {
			font-size: 70%;
			color: #737373;
		}
	</style>
    </head>
    <body onload="GetArduinoSensor()">
        <h1>Arduino Ajax :: S E N S O R</h1>
        <div class="IO_box">
			<h2>Analog Inputs</h2>
			<p class="small_text">A0 used by Ethernet shield</p>
			<p class="small_text">A1 used by Ethernet shield</p>
			<p>A2: <span class="analog">...</span></p>
			<p>A3: <span class="analog">...</span></p>
			<p>A4: <span class="analog">...</span></p>
			<p>A5: <span class="analog">...</span></p>
		</div>
		<div class="IO_box">
			<h2>Switch Inputs</h2>
			<p class="small_text">D0: used by serial RX</p>
			<p class="small_text">D1: used by serial TX</p>
			<p>Switch 1 (D2): <span class="switches">...</span></p>
			<p>Switch 2 (D3): <span class="switches">...</span></p>
			<p class="small_text">D4: used by Ethernet shield</p>
			<p>Switch 3 (D5): <span class="switches">...</span></p>
		</div>
		<div class="IO_box">
			<h2>LEDs Using Checkboxes</h2>
			<form id="check_LEDs" name="LED_form">
				<input type="checkbox" name="LED1" value="0" onclick="GetCheck()" />LED 1 (D6)<br /><br />
				<input type="checkbox" name="LED2" value="0" onclick="GetCheck()" />LED 2 (D7)<br /><br />
			</form>
		</div>
		<div class="IO_box">
			<h2>LEDs Using Buttons</h2>
			<button type="button" id="LED3" onclick="GetButton1()">LED 3 is OFF (D8)</button><br /><br />
			<button type="button" id="LED4" onclick="GetButton2()">LED 4 is OFF (D9)</button><br /><br />
			<p class="small_text">D10 to D13 used by Ethernet shield</p>
		</div>
		
		
    </body>
    <body onload="GetArduinoBotao()">
        <h1>Arduino Ajax :: L E D</h1>
        <div class="IO_box">
			<h2>Analog Inputs</h2>
			<p class="small_text">A0 used by Ethernet shield</p>
			<p class="small_text">A1 used by Ethernet shield</p>
			<p>A2: <span class="analog">...</span></p>
			<p>A3: <span class="analog">...</span></p>
			<p>A4: <span class="analog">...</span></p>
			<p>A5: <span class="analog">...</span></p>
		</div>
		<div class="IO_box">
			<h2>Switch Inputs</h2>
			<p class="small_text">D0: used by serial RX</p>
			<p class="small_text">D1: used by serial TX</p>
			<p>Switch 1 (D2): <span class="switches">...</span></p>
			<p>Switch 2 (D3): <span class="switches">...</span></p>
			<p class="small_text">D4: used by Ethernet shield</p>
			<p>Switch 3 (D5): <span class="switches">...</span></p>
		</div>
		<div class="IO_box">
			<h2>LEDs Using Checkboxes</h2>
			<form id="check_LEDs" name="LED_form">
				<input type="checkbox" name="LED1" value="0" onclick="GetCheck()" />LED 1 (D6)<br /><br />
				<input type="checkbox" name="LED2" value="0" onclick="GetCheck()" />LED 2 (D7)<br /><br />
			</form>
		</div>
		<div class="IO_box">
			<h2>LEDs Using Buttons</h2>
			<button type="button" id="LED3" onclick="GetButton1()">LED 3 is OFF (D8)</button><br /><br />
			<button type="button" id="LED4" onclick="GetButton2()">LED 4 is OFF (D9)</button><br /><br />
			<p class="small_text">D10 to D13 used by Ethernet shield</p>
		</div>
		
		
    </body>
</html>

2 Respostas

drsmachado

Edite teu tópico e coloque o código entre as tags [code]. Isso vai permitir que a leitura fique mais adequada e o problema torne-se inteligível.

A

drsmachado, editado.

Vlw pela dica.

Criado 21 de agosto de 2013
Ultima resposta 21 de ago. de 2013
Respostas 2
Participantes 2