Autor Tema: Pic con Python (Solucionado)  (Leído 3779 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Pic con Python (Solucionado)
« en: 01 de Abril de 2016, 04:35:29 »
Buenos días, llevo unos cuantos días jugando con python y los pic's y tengo un pequeño problema el cual no consigo dar con la solución, teniendo este código en python:
Código: Python
  1. #!/usr/bin/env python
  2. # -*- coding: iso-8859-15 -*-
  3.  
  4. # Copyright: (C) 2007 by Juan González Gómez
  5. #            (C) 2007 by Rafael Treviño Menéndez
  6. # Authors: Juan González Gómez     <juan@iearobotics.com>
  7. #          Rafael Treviño Menéndez <skasi.7@gmail.com>
  8.  
  9. # This program is free software; you can redistribute it and/or
  10. # modify it under the terms of the GNU Library General Public
  11. # License as published by the Free Software Foundation; either
  12. # version 2 of the License, or (at your option) any later version.
  13.  
  14. # This program is distributed in the hope that it will be useful,
  15. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  17. # Library General Public License for more details.
  18.  
  19. # You should have received a copy of the GNU General Public License
  20. # along with this program; if not, write to the Free Software
  21. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  22.  
  23. #-----------------------------------------------------------------------
  24. #  Programa de pruebas del servidor generico
  25. #  Se hace parpadear el led de la Skypic
  26. #
  27. # LICENCIA GPL
  28. #-----------------------------------------------------------------------
  29.  
  30. import sys
  31. import time
  32. sys.path = ['..'] + sys.path
  33. import libStargate.Generic
  34. from libStargate.pic16f876 import *
  35.  
  36. #-- Periodo de parpadeo del led, en segundos
  37. PERIODO = 0.3
  38.  
  39. #-----------------------
  40. #-- Mostrar la ayuda
  41. #-----------------------
  42. def help():
  43.   print """
  44. Uso: test-generic <port>
  45.  
  46. <Port>: Nombre del dispositivo serie a utilizar  
  47.  
  48. Ejemplo: ./test-generic /dev/ttyUSB0
  49. """
  50.  
  51. #--------------------------------
  52. #- Leer argumentos
  53. #--------------------------------
  54. def leer_argumentos():
  55.   #- Argumento 1: puerto serie
  56.   try:
  57.     serialName = sys.argv [1]
  58.   except IndexError:
  59.     print "-->Puerto serie no especificado"
  60.     help()
  61.     sys.exit(-1)
  62.  
  63.   return sys.argv[1]
  64.  
  65. #----------------------
  66. #   MAIN
  67. #----------------------
  68. if __name__ == '__main__':
  69.  
  70.   #-- Procesador argumentos
  71.   serialName = leer_argumentos()
  72.  
  73.   #-- Abrir la conexion y devolver el stargate generico
  74.   g=libStargate.Generic.Open_session(serialName)
  75.   if g==None: sys.exit(-1)
  76.    
  77.   #------------------------------------------
  78.   #-- Hacer parpaear el led de la skypic  
  79.   #------------------------------------------
  80.   print "\nLed parpadeando...."
  81.   try:
  82.     while 1:
  83.       g[PORTB]=0x02
  84.       time.sleep(PERIODO/2.0)
  85.       g[PORTB]=0x00
  86.       time.sleep(PERIODO/2.0)
  87.   except libStargate.Generic.Error,msg:
  88.     print msg
  89.   except:
  90.     pass
  91.  
  92.  
  93.   print "TERMINADO"

cuando lo pruebo me sale el aviso de que debo especificar el puerto serie:
Código: Python
  1. #-----------------------
  2. #-- Mostrar la ayuda
  3. #-----------------------
  4. def help():
  5.   print """
  6. Uso: test-generic <port>
  7.  
  8. <Port>: Nombre del dispositivo serie a utilizar  
  9.  
  10. Ejemplo: ./test-generic /dev/ttyUSB0
  11. """
pero no soy capaz de encontrar donde deberia de añadir esta linea, alguien puede decirme donde, he probado en la terminal de linux ejecutando ./test-generic.py /dev/ttyUSB0 pero tampoco consigo abrir el puerto.

Os dejo la carpeta con todo el proyecto por si queréis mirarlo.

Gracias.

« Última modificación: 02 de Abril de 2016, 18:21:38 por Miquel_S »
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Pic con Python
« Respuesta #1 en: 01 de Abril de 2016, 06:10:58 »
El codigo se ejecuta es como si no recibe absolutamente nada desde el USB, tal ves espera un valor exacto, por eso esta dando TIMEOUT y a la 4ta sale.

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Pic con Python
« Respuesta #2 en: 01 de Abril de 2016, 06:39:25 »
No conozco bien linux, pero creo que puerto serie en este caso se refiere a un puerto RS232 ya sea físico o virtual. Es como los puertos COM del windows. ¿Has probado con /dev/ttyS1 u otro número?

Un saludo.

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Re:Pic con Python
« Respuesta #3 en: 01 de Abril de 2016, 08:29:13 »
Gracias a los dos, lo del puerto estoy seguro que es este ya que he realizado comunicación con el como ya postee y funciona bien, ahora estoy con el móvil cuando llegue a casa lo enseñó.
http://www.todopic.com.ar/foros/index.php?topic=45985.0

Saludos.
« Última modificación: 01 de Abril de 2016, 08:51:11 por Miquel_S »
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Re:Pic con Python
« Respuesta #4 en: 02 de Abril de 2016, 18:15:39 »
Al final después de muchas horas, mucho código leído y muchas pruebas fallidas he conseguido hacerlo funcionar, he modificado el programa del Pic el cual funciona como servidor para hacerlo funcionar escribiendo código en python y sea ejecutado en el Pic, después de un par de pruebas mas voy a organizarlo y documentarlo y dejarlo dentro de una carpeta la cual subiré al foro.

Saludos!
« Última modificación: 02 de Abril de 2016, 18:19:14 por Miquel_S »
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.