Bueno el form esta así porque lo quite ya que me pasaban cosas muy raras y se me olvido quitarlo. La cosa es que tenia esto:
<html>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" />
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
<form action="/cgi-bin/ola.py" method="post" id="form1">
<input type="range" name="slider-fill" id="slider-fill" value="90" min="0" max="180" data-highlight="true">
<input type="submit" value="Submit" id="boton1">
</form>
</html>
Cuando le doy al botón me sale Error Loading Page... Si ves que tengo algo exageradamente mal es porque soy bastante novato en esto.
En Python tengo esto. La verdad ya no se si esta bien o no porque me he pasado horas buscando por Internet y que toqueteado muchisimo.
import cgi
import serial
import time
arguments = cgi.FieldStorage()
ser=serial.Serial('/dev/ttyACM0',9600)
entrada = def funcion (req, form1):
ser.write(str(entrada).encode())
Eso si, lo de añadir un 1 detrás no he sabido hacerlo aun.
Bueno he hecho unos cambios.
<html>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" />
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
<form action="/cgi-bin/script.py" method="post" id="form1">
<label for="slider-fill">Input slider:</label>
<input type="range" name="slider-fill" id="slider-fill" value="90" min="0" max="180" data-highlight="true">
<input type="submit" value="Submit">
</form>
</html>
Y en Python es donde tengo más dudas ya que tu me has dicho que use urllib2 pero he visto que la gente usa cgi.
import urllib2
import serial
request=urllib2.request("http://192.168.2.1")
ser=serial.Serial('/dev/ttyACM0',9600)
ser.write(str(request).encode())
Este es con urllib2 y me sale el error: Error Loading Page
import cgi
import serial
arguments = cgi.FieldStorage()
ser=serial.Serial('/dev/ttyACM0',9600)
while True:
ser.write("arguments")
En este me sale el mismo error: Error Loading Page
No entiendo mucho este error. Lo único que he encontrado por Internet es esto:
en la etiqueta form no se usa action=”" ni method=”". Los datos que se pueden manejar mas facilmente con $(“#id_del_form”).serialize(); en javascript con jquery para enviar los datos por medio de $.ajax(); saludos!
No entiendo muy bien lo que quiere decir la respuesta. Seguiré buscando información.
He cambiado la web y ahora no me sale ese error pero sigue sin funcionar.
<html>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" />
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js" ></script>
<script type="text/javascript">
$(document).ready(function() {
$('#boton1').click(function(){
var dataString = $('#slider-fill').serialize();
alert('Datos serializados: '+dataString);
$.ajax({
type: "post",
url: "http://192.168.2.1/cgi-bin/script.py",
success: successResponse,
}
});
});
});
</script>
<label for="slider-fill">Input slider:</label>
<input type="range" name="slider-fill" id="slider-fill" value="90" min="0" max="180" data-highlight="true">
<input type="submit" value="Submit" id="boton1">
</html>
Perdón por hacer varios posts. Ahora colocare todo de forma más ordenada. He hecho unos avances y unos cambios pero sigo sin conseguir mi objetivo. Dejo los codigos aqui y explico lo que me pasa:
Web
<html>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" />
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js" ></script>
<script type="text/javascript">
$(document).ready(function()
{
$('#boton1').click(function()
{
$.ajax({
url: 'http://192.168.2.5:8080/cgi-bin/script.py?port='+$('#form1').val()
type: 'get',
success: successResponse,
error: errorResponse
});
</script>
<form id="form1">
<label for="slider-fill">Input slider:</label>
<input type="range" name="slider-fill" id="slider-fill" value="90" min="0" max="180" data-highlight="true">
<input type="submit" value="Submit" id="boton1">
</form>
</html>
Quiero enviar el formulario vía ajax ya que usando solamente el form me da error la pagina. Tambien en url he puesto :
url: 'http://192.168.2.5:8080/cgi-bin/script.py?port='+$('#form1').val()
porque así envía el valor de form1 a parte ya que quiero poner varios y eso me ayudara.
Python:
import cgi
import serial
import time
arguments = cgi.FieldStorage()
ser=serial.Serial('/dev/ttyACM0',9600)
while True:
ser.write(arguments['form1'].value)
Me gustaria pensar que por lo menos tengo el script de python bien ya que ha sido lo que menos me ha costado de encontrar. Eso si, aun me falta lo de añadir un 1 detrás del numero del slider y eso la verdad no tengo ni idea de como hacerlo.
Cuando pulso el botón de la web lo único que pasa es que me envía a
http://192.168.2.1/?slider-fill=90. El 90 es el numero que tenga asignado en el slider. No quiero que me envié a esta pagina y no se como evitarlo.
Ahora empezamos con mas errores... He visto en un tutorial que para que funcione el cgi necesito agregar en /etc/lighttpd/lighttpd.conf lo siguiente:
$HTTP["url"] =~ "/cgi-bin/" {
cgi.assign = ( ".py" = "/usr/bin/python" )
}
El problema es que si pongo eso el servidor directamente deja de funcionar. Mirare a ver si encuentro alguna solución.
· No hagas doble post
>aquí las reglas del foro
-Engel Lex