elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


  Mostrar Mensajes
Páginas: [1]
1  Programación / Scripting / Re: Ayuda enviar resultados formulario de una web a un script Python en: 25 Agosto 2017, 22:07 pm
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:

Código:
<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.

Código:
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.

Código:
<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.

Código:
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

Código:
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.

Código:
<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
Código:
<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 :
Código:
 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:

Código:
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:

Código:
$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
2  Programación / Scripting / Ayuda enviar resultados formulario de una web a un script Python en: 25 Agosto 2017, 19:55 pm
Hola, quiero que mi web después de que yo ponga un numero en un slider envié este numero añadiéndole otro detrás a un script Python dándole a un botón. Aquí el código de la web:

Código:
<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>


<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>



Tengo esto. Quiero que cuando pulse el botón la web añada un 1 detrás del numero que esta puesto y se lo envié al scrip Python. Ejemplo: Si esta el 90, envía 901.

Lo necesito para mover unos servos.
3  Programación / PHP / Ayuda con un proyecto [Python] en: 25 Agosto 2017, 15:49 pm
Hola, estoy haciendo un proyecto y necesito ayuda ya que soy bastante nuevo en el tema. Para poneros en situación os explico que quiero hacer:

Mi proyecto se basa en hacer un robot con cámara, ruedas y un brazo mecánico que se pueda controlar a distancia desde una web. Para hacer el proyecto estoy utilizando una Raspberry Pi y un Arduino. La Raspberry Pi se encarga de hacer de servidor de la web y de la cámara mientras que el Arduino se encargara de los motores ya que he leído que con el Arduino es mas fácil. De momento ya tengo hecho el servidor y mi Raspberry Pi ya tiene un punto de acceso así que puedo acceder a el servidor vía wifi.

El problema es el siguiente: Ahora tengo que controlar los servomotores que se encargaran de mover el brazo. La cosa es que ya tengo el código de Arduino que voy a usar:

Código:
/*
   MOVER DOS SERVOS CON ARDUINO
   Este codigo recibe numeros enteros por serial
   y mueve dos servos.
 
   Escrito por Nano en beneficio de los seres humanos <img draggable="false" class="emoji" alt="😉" src="https://s.w.org/images/core/emoji/2.3/svg/1f609.svg">
   www.robologs.net
*/
#include<Servo.h>
 
//Creamos los objetos servo
Servo servo;
Servo servo2;
 
int enviado; //Aqui enviamos el numero completo
int num; //Numero del servo
int posicion; //Posicion del servo
 
void setup()
{
  //Inicializamos los Servos
  servo.attach(9);
  servo2.attach(10);
 
  //Inicializamos la comunicacion por Serial
  Serial.begin(9600);
}
 
void loop()
{
  if(Serial.available() >= 1)
  {
    /*
    1- Leer un numero entero por serial
    2- Calculamos su modulo por 10 (sera el numero del motor)
    3- Dividir el entero inicial por 10
    4- Lo que quede, sera la posicion del motor
    */
    enviado = Serial.parseInt();
    num = enviado%10;
    enviado = enviado/10;
    posicion = enviado;
     
    //Hora de mover los servos!
    if(num == 1)
    {
      servo.write(posicion);
    }
    else if(num == 2)
    {
      servo2.write(posicion);
    }
  }
 
}

Vale, os explico rápido como funciona. Yo a el Arduino le envió la información de una forma muy sencilla. Si quiero que mi servo numero 2 se mueva a 90º simplemente le envió 902 y ya esta. Y luego con esto lo puedo mover fácilmente:

Código:
import serial
ser = serial.Serial('/dev/ttyACM0', 9600)
while True:
    entrada = input("Introduce el angulo: ")
    ser.write(str(entrada).encode())

Hasta aquí perfecto. El problema llega ahora. Ese código en Python no me sirve para poder mover los servos vía web. He estado buscando muchos tutoriales y no he conseguido, lo único que he visto es un vídeo que hace lo que yo quiero pero no hay una explicación clara de como lo hace. Pongo el vídeo para que os hagáis una idea:



Quiero hacer exactamente eso. Un slider donde pueda poner los grados que quiero y luego darle a un botón para que se mueva el servomotor. He visto que necesito el jquery para hacer los sliders pero no he conseguido meterlo... Una cosa importante es que mi servidor es lighttpd y espero que eso no sea un problema a la hora de hacer el proyecto.

Lo que tengo que hacer es sliders que vayan de 0 a 180 y que cuando este envié la información a el Arduino se añada un numero detrás de los grados dependiendo del slider para que así el Arduino sepa cual servo mover. Ejemplo: El slider numero 2 se encarga de mover el servo numero 2 así que cuando envié los grados (vamos a poner de ejemplo 90) al mensaje se le debe añadir un 2 al final para que quede tal que 902 y el Arduino sepa lo que tiene que hacer. Espero que esto se pueda hacer así porque sino tendría que cambiar también el código del Arduino.

 Si me podéis ayudar a escribir los códigos o pasarme guías para que yo pueda hacerlo me ayudarías mucho. Eso si, que sean guías muy básicas a poder ser ya que no se mucho del tema.

Muchas gracia.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines