Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Bucle infinito

Estas en el tema de Bucle infinito en el foro de Python en Foros del Web. Bueno, nose bien como explicar mi problema, necesito simplemente que mi programa espere comandos recibidos por socket, por un tiempo infinito, sin que se cierre. ...
  #1 (permalink)  
Antiguo 11/02/2013, 18:23
Avatar de ONahuelO  
Fecha de Ingreso: junio-2009
Ubicación: Gualeguaychú, Argentina
Mensajes: 144
Antigüedad: 14 años, 10 meses
Puntos: 4
Bucle infinito

Bueno, nose bien como explicar mi problema, necesito simplemente que mi programa espere comandos recibidos por socket, por un tiempo infinito, sin que se cierre.

Explico un poco mejor, tengo un programa que abre una conexión serial con mi arduino, y se queda esperando recibir instrucciones via socket , dichas instrucciones las procesa y reenvía al arduino.

El problema esta en que cada ves que la comunicación serial se corta, el arduino se resetea, lo que yo necesito es hacer que la comunicación no se corte.

Estos son mis códigos:

Código PHP:
#!/usr/bin/env python
import serial
import time
import sys
import socket

def main
():
    
    print 
"Conectando con ARDUINO"
    
arduino serial.Serial('/dev/ttyACM0'9600)
    
time.sleep(2# waiting the initialization...

    
server socket.socket()
    
server.bind(("192.168.1.105",6969))
    
server.listen(1)
    print 
"Esperando conexion...."
    
socket_clientedatos_cliente server.accept()
    print 
"Esperando Comando...."
    
datos socket_cliente.recv(1000)

    
    print 
"Comando Recivido...."
    
print "Procesando...."
    
    
if(datos == 'H'): 
        print 
"Encendiendo PIN13"
        
arduino.write('H')
    else:
        print 
"Apagando PIN13"
        
arduino.write('L')
    


    
time.sleep(999999999999)
    print 
"Cerrando Programa..."
    
socket_cliente.close()
    
server.close()
    
arduino.close() 
    

if 
__name__ == "__main__":
    
main()
    




Ese es mi codigo.
  #2 (permalink)  
Antiguo 11/02/2013, 18:54
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Bucle infinito

Algo así debería de funcionar.

Código Python:
Ver original
  1. #!/usr/bin/env python
  2. import serial
  3. import time
  4. import sys
  5. import socket
  6.  
  7. def main():
  8.      
  9.     print "Conectando con ARDUINO"
  10.     arduino = serial.Serial('/dev/ttyACM0', 9600)
  11.     time.sleep(2) # waiting the initialization...
  12.  
  13.     server = socket.socket()
  14.     server.bind(("192.168.1.105",6969))
  15.     server.listen(1)
  16.     print "Esperando conexion...."
  17.     socket_cliente, datos_cliente = server.accept()
  18.  
  19.     while True:
  20.         print "Esperando Comando...."
  21.         datos = socket_cliente.recv()
  22.      
  23.         print "Comando Recivido...."
  24.         print "Procesando...."
  25.      
  26.         if(datos == 'H'):  
  27.             print "Encendiendo PIN13"
  28.             arduino.write('H')
  29.         else:
  30.             print "Apagando PIN13"
  31.             arduino.write('L')
  32.      
  33.     print "Cerrando Programa..."
  34.     socket_cliente.close()
  35.     server.close()
  36.     arduino.close()
  37.  
  38. if __name__ == "__main__":
  39.     main()
  #3 (permalink)  
Antiguo 11/02/2013, 19:20
Avatar de ONahuelO  
Fecha de Ingreso: junio-2009
Ubicación: Gualeguaychú, Argentina
Mensajes: 144
Antigüedad: 14 años, 10 meses
Puntos: 4
Respuesta: Bucle infinito

Asi lo tenia antes xD.

Creo que mi error es basico, osea el programa sigue su curso llega a un determinado punto y se cierra.

Lo que yo deberia de lograr es un bucle en la parte donde se reciben los comandos, y una vez finalizado el procesamiento, vuelva a esperar nuevos datos, como una especie de loop
  #4 (permalink)  
Antiguo 11/02/2013, 19:34
Avatar de ONahuelO  
Fecha de Ingreso: junio-2009
Ubicación: Gualeguaychú, Argentina
Mensajes: 144
Antigüedad: 14 años, 10 meses
Puntos: 4
Respuesta: Bucle infinito

Osea lo que necesitaria creo que seria lo siguiente:

Que este codigo quede dentro de un loop infinito y se ejecute n veces hasta que venga un comando que la cierre.

Código PHP:
 print "Esperando Comando...." 
    
datos socket_cliente.recv(1000

     
    print 
"Comando Recivido...." 
    
print "Procesando...." 
     
    
if(datos == 'H'):  
        print 
"Encendiendo PIN13" 
        
arduino.write('H'
    else: 
        print 
"Apagando PIN13" 
        
arduino.write('L'

Etiquetas: bucle, infinito
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:31.