Autor Tema: puerto serial pyphon  (Leído 417 veces)

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

Desconectado dkmar11

  • PIC10
  • *
  • Mensajes: 9
puerto serial pyphon
« en: 05 de Octubre de 2016, 17:10:59 »
Hola estoy iniciando en y quiero hacer una pruebas con su comunicacion serial, pero cuando doy al intructiva : import serial

Código: [Seleccionar]
Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:19:22) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import serial

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    import serial
ImportError: No module named serial

me sale el error que se ve:

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    import serial
ImportError: No module named serial

Pero eh estado viendo en internet y la mayoria lo usa asi y no le das errores, eh busco en las librerias y no hay ninguna libreria con el nombre serial, tengo que descargarlo de algun lugar???

saludos

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5392
    • Picmania by Redraven
Re:puerto serial pyphon
« Respuesta #1 en: 06 de Octubre de 2016, 02:41:47 »
Este es el test de puerto serial que uso en mi Raspberry-Pi-2 y que va perfectamente

Código: Python
  1. import serial
  2. import time
  3.  
  4. # configure the serial connections (the parameters differs on the device you are connecting to)
  5. ser = serial.Serial(
  6.     port='/dev/ttyUSB0',
  7.     baudrate=115200,
  8.     parity=serial.PARITY_NONE,
  9.     stopbits=serial.STOPBITS_ONE,
  10.     bytesize=serial.EIGHTBITS
  11. )
  12.  
  13. ser.open()
  14. ser.isOpen()
  15.  
  16. print 'Enter your commands below.\r\nInsert "exit" to leave the application.'
  17.  
  18. input=1
  19. while 1 :
  20.     # get keyboard input
  21.     input = raw_input("->> ")
  22.         # Python 3 users
  23.         # input = input(">> ")
  24.     if input == 'exit':
  25.         ser.close()
  26.         exit()
  27.     else:
  28.         # send the character to the device
  29.         # (note that I happend a \r\n carriage return and line feed to the characters - this is requested by my device)
  30.         ser.write(input + '\r\n')
  31.         out = ''
  32.         # let's wait one second before reading output (let's give device time to answer)
  33.         time.sleep(3)
  34.         while ser.inWaiting() > 0:
  35.             out += ser.read(1)
  36.  
  37.         if out != '':
  38.             print "<<- " + out
  39.  
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1215
Re:puerto serial pyphon
« Respuesta #2 en: 06 de Octubre de 2016, 12:57:40 »
Hola dkmar11 debes tener la librería serial instalada ya que no viene en python, te dejo la librería y algunos ejemplos.
Código: Python
  1. #!/usr/bin/env python3.5
  2. # -*- coding: iso-8859-15 -*-
  3.  
  4.  #-----------------------------------------------------------------------------
  5.  # Buscar puertos series disposibles.
  6.  # ENTRADAS:
  7.  #   -num_ports : Numero de puertos a escanear. Por defecto 5
  8.  #   -verbose   : Modo verboso True/False. Si esta activado se va
  9.  #                imprimiendo todo lo que va ocurriendo
  10.  # DEVUELVE:
  11.  #    Una lista con todos los puertos encontrados. Cada elemento de la lista
  12.  #    es una tupla con el numero del puerto y el del dispositivo
  13.  #-----------------------------------------------------------------------------
  14.  
  15. import serial
  16. import sys
  17.  
  18.  
  19. def scan(num_puertos=5, verbose=True):
  20.     #-- Lista de los dispositivos serie. Inicialmente vacia
  21.     dispositivos_serie = []
  22.  
  23.     if verbose is True:
  24.         print(("\nEscanenado %d puertos serie:" % num_puertos))
  25.  
  26.     #-- Escanear num_port posibles puertos serie
  27.     for i in range(num_puertos):
  28.         if verbose is True:
  29.             sys.stdout.write("Puerto %d: " % i)
  30.             sys.stdout.flush()
  31.  
  32.     try:
  33.         #-- Abrir puerto serie
  34.         ser = serial.Serial(i)
  35.         print(("PUERTO SERIE ABIERTO"))
  36.         if verbose is True:
  37.             print(("OK --> %s" % ser.portstr))
  38.  
  39.         #-- Si no hay errores, anadir el numero y nombre a la lista
  40.         dispositivos_serie.append((i, ser.portstr))
  41.  
  42.         #-- Cerrar puerto
  43.         ser.close()
  44.  
  45.     #-- Si hay error se ignora
  46.     except:
  47.         #if verbose is True:
  48.             #print(("NO"))
  49.         pass
  50.  
  51.     #-- Devolver la lista de los dispositivos serie encontrados
  52.     return dispositivos_serie
  53.  
  54.  #--------------------------
  55.  # Pruebas del modulo Scan
  56.  #--------------------------
  57. if __name__ == '__main__':
  58.  
  59.     #-- Escanear los puertos.
  60.     #-- Se puede indicar el numero de puertos a escaner
  61.     #-- El modo "verbose" esta activado por defecto. Se desactiva con False
  62.     puertos_disponibles = scan(num_puertos=5, verbose=True)
  63.  
  64.     #-- Recorrer la lista mostrando los que se han podido abrir
  65.     print((""))
  66.     print(("--Puertos detectados: "))
  67.  
  68.     if len(puertos_disponibles) != 0:
  69.         for n, nombre in puertos_disponibles:
  70.             print((" (%d) %s" % (n, nombre)))
  71.     else:
  72.         print(("\nNINGUN PUERTO ABIERTO"))

Código: Python
  1. #!/usr/bin/env python3.5
  2. # -*- coding: iso-8859-15 -*-
  3.  
  4. """
  5. Scan for serial ports. Linux specific variant that also includes USB/Serial
  6. adapters.
  7. """
  8.  
  9. import glob
  10. import serial  # lint:ok
  11.  
  12.  
  13. def scan():
  14.     """
  15.    Found ports:
  16.    /dev/ttyS0
  17.    /dev/ttyS3
  18.    /dev/ttyS2
  19.    /dev/ttyS1
  20.    /dev/ttyACM0
  21.    /dev/serial/by-id/usb-id3_semiconductors_MEABOARD_00000000-if00
  22.    """
  23.     return glob.glob('/dev/ttyS*') + glob.glob('/dev/ttyUSB*')
  24.  
  25. if __name__ == '__main__':
  26.     print(("Puertos disponibles:"))
  27.     for name in scan():
  28.         print((name))

Código: Python
  1. #!/usr/bin/env python3.5
  2. # -*- coding: iso-8859-15 -*-
  3.  
  4. import serial
  5. import sys
  6.  
  7. puerto = '/dev/ttyUSB0'
  8.  
  9. #-- Cadena de pruebas
  10. cadena = 'Prueba SCI'
  11.  
  12. #-- Mensaje inicial
  13. print(("Pruebas con el puerto SCI"))
  14.  
  15. #-------------------------
  16. #-- Abrir puerto serie
  17. #-------------------------
  18. try:
  19.     sg = serial.Serial(puerto, 9600)
  20.     sg.timeout = 1
  21.  
  22. except serial.SerialException:
  23.     #-- Error al abrir el puerto serie
  24.     sys.stderr.write("Error al abrir el puerto " + str(puerto) + "\n")
  25.     sys.exit(1)
  26.  
  27. #-- Mostrar nombre del dispositivo serie utilizado
  28. print(("Puerto en uso: " + str(puerto)))
  29.  
  30. #---------------------------
  31. #-- Prueba del puerto
  32. #----------------------------
  33.  
  34. #-- Enviar cadena de pruebas
  35. print(("ENVIADO: " + str(cadena)))
  36. sg.write(cadena.encode('ascii'))
  37.  
  38. #-- Esperar hasta recibir la cadena
  39. recibido = sg.read(len(cadena.encode('ascii')))
  40.  
  41. #--Comprobar lo recibido
  42. if len(recibido) != 0:
  43.     #-- Imprimir cadena recibida
  44.     print(("RECIBIDO: " + str(recibido, 'ascii') + "\n"))
  45.  
  46. #-- Comprobar si lo recibido es igual que lo enviado
  47.     if recibido == cadena.encode('ascii'):
  48.         print(("OK... Lo recibido coincide con lo enviado" + "\n"))
  49.     else:
  50.         print(("!!ERROR!! Lo recibido no coincide con lo enviado" + "\n"))
  51.  
  52. else:
  53.     #-- No se ha recibido ninguna cadena
  54.     print(("TIMEOUT..."))
  55.  
  56. #-- Cerrar puerto serie
  57. print(("Fin de la prueba..."))
  58. sg.close()

Saludos!

https://mega.nz/#F!vUhVACZS!Okvj8curyaQvmVuLXw7Rbw
« Última modificación: 06 de Octubre de 2016, 13:17:38 por Miquel_S »
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.