#!/usr/bin/env python # -*- coding: iso-8859-15 -*- #---------------------------------------------------------------------------- # sg-eco1.py Ejemplo de manejo del puerto serie desde python utilizando la # libreria multiplataforma pyserial.py (http://pyserial.sf.net) # # Se envia una cadena por el puerto serie y se muestra lo que se recibe # # (C)2002 Chris Liechti (cliechti@gmx.net) # (C)2007 Juan Gonzalez # # LICENCIA GPL #---------------------------------------------------------------------------- import sys import serial #-- Valor por defecto del puerto a usar #-- Para que sea multiplataforma hay que emplear numeros entre 0 y 255 #-- Pero tambien se pueden usar cadenas ej. /dev/ttyUSB0 en Linux Puerto = 0 #-- Cadena de pruebas a enviar Cadena = "Hola como estas" #-- Sacar mensaje inicial print "Pruebas del puerto serie" #---------------------------------------------------------- #-- Abrir el puerto serie. Si hay algun error se termina #---------------------------------------------------------- try: s = serial.Serial(Puerto, 9600) s.timeout=1; except serial.SerialException: #-- Error al abrir el puerto serie sys.stderr.write("Error al abrir puerto (%s)\n" % str(Puerto)) sys.exit(1) #-- Mostrar el nombre del dispositivo serie utilizado print "Puerto (%d): %s" % (Puerto,s.portstr) #------------------------------------------------- #-- Aqui empieza la prueba #------------------------------------------------- #-- Enviar la cadena de pruebas print "ENVIADO : " + Cadena s.write(Cadena); #-- Esperar hasta recibir la cadena enviada... #-- O hasta que haya un timeout recibido = s.read(len(Cadena)); #-- Comprobar lo recibido if len(recibido)!=0: #--Cadena recibida. Imprimirla print "RECIBIDO: " + recibido #-- Comprobar si lo que se ha recibo es exactamente lo mismo que lo ##-- enviado if recibido==Cadena: print "OK!" else: print "Error!" else: #-- No se ha recibido ninguna cadena: timeout print "TIMEOUT"; #-- Cerrar puerto serie s.close()