                            USPP Library

		 Universal Serial Port Python Library	
	(Librera en Python para el acceso universal al puerto serie)

              Copyright 2006 Isaac Barona <ibarona@gmail.com>


Contenidos
----------
 1. Introduccin
 2. Motivacin
 3. Dnde encontrar la librera
 4. Caractersticas
 5. Pre-requisitos
 6. Utilizacin y documentacin
 7. Dnde funciona
 8. Problemas pendientes
 9. Tareas pendientes
10. Portado a otras plataformas
11. Licencia
12. Autor
13. Versin 


1. Introduccin
---------------

La librera USPP es un mdulo desarrollado en Python para el acceso
multiplataforma al puerto serie. En el momento, slo funciona en Linux
Windows y MacOS, pero como est escrita completamente en Python 
(no es nicamente un recubrimiento en Python de una librera desarrollada 
en C/C++) espero que pueda ser ampliada para que soporte otras plataformas.


2. Motivacin
-------------

A m me gusta mucho hacer pequeos cacharros electrnicos con 
microcontroladores, especialmente aquellos que pueden ser conectados a
un ordenador para enviar y recibir datos.
Hace un par de meses descubr Python y realmente me encant.
Empez a jugar con l y v que poda utilizarlo para hacer prototipos
de protocolos de comunicacin entre el ordenador y los microcontroladores 
de manera mucho ms fcil y rpida que utilizando C (que era el lenguaje
que sola utilizar). Al mismo tiempo, estaba interesado en poder utilizar
los desarrollos bajo diferentes arquitecturas.
Empez a buscar en la red mdulos de Python que accedieran al puerto serie
y encontr los siguientes:

	* win32comport_demo que viene junto a la extensin win32.
	* Mdulo win32comm de wheineman@uconect.net.
	* Sio Module de Roger Rurnham (rburnham@cri-inc.com)
	* pyxal (Python X10 Abstraction Layer) de Les Smithson 
	  (lsmithson@open-networks.co.uk)

pero no eran multiplataforma, eran nicamente un recubrimiento de una librera
propietaria o eran simples ejemplos de acceso al puerto serie bajo una 
determinada plataforma.
Por estas razones, y tambin por supuesto, por aprender ms Python, decid
empezar este proyecto. Por supuesto, he utilizado los mdulos indicados
anteriormente como referencia para realizar mi librera y por tanto, me
creo en la obligacin de felicitar a sus autores por su excelente trabajo y
por haberlo compartido con los dems.

Espero que disfrutes utilizndo el mdulo uspp tanto como yo lo 
he hecho hacindolo.


3. Dnde encontrar la librera
------------------------------

Puedes encontrarla en:
 * http://ibarona.googlepages.com/uspp
 * http://www.telefonica.net/web/babur

como un fichero tar.gz o como un fichero .zip.


4. Caractersticas
------------------

Este mdulo tiene las siguientes caractersticas destacadas:

	- acceso de alto nivel al puerto serie bajo diversas plataformas.
	- autodetecta la plataforma en la que se est ejecutando y 
	  carga las clases adecuadas para esa plataforma.
	- Orientado a objetos.
	- Las operaciones sobre el puerto serie tienen la misma semntica
	  que las operaciones sobre objetos de tipo fichero.
	- permite utilizar el puerto serie con diferentes velocidades y
	  caractersticas.
	- permite la utilizacin del puerto bajo dos modos de funcionamiento:
	  RS-232 y RS-485 (de momento, slo RS-232). En modo 485 la 
	  comunicacin es half-duplex y se utiliza la lnea RTS para controlar 
	  la direccin de la transferencia.
	- lecturas en modo bloqueante, no bloqueante o con timeout.


5. Pre-requisitos
----------------

Se necesita los siguiente para utilizar la librera:

	- Python 2.1 o superior
	- En windows los mdulos win32


6. Utilizacin y documentacin
------------------------------

nicamente tienes que importar en tu programa el mdulo uspp y automticamente
l se encarga de cargar las clases adecuadas para la plataforma en la que
se est ejecutando el programa.

Lo primero de todo, tendrs que crear un objeto de tipo SerialPort con las
caractersticas que desees. Si no se genera ninguna excepcin del tipo
SerialPortException, puedes utilizar los mtodos de lectura y escritura
del objeto para leer y escribir en el puerto serie.

Ejemplo:

>>> from uspp import *
>>> tty=SerialPort("COM2", 1000, 9600)  
>>> # Abre el puerto serie COM2 a 9600 bps y con un timeout de 1 segundo.
>>> tty.write("a")  # Enva el carcter 'a' al puerto serie.
>>> # Ahora suponemos que recibimos el string 'abc'
>>> tty.inWaiting()
3
>>> tty.read()
'a'
>>> tty.inWaiting()
2
>>> tty.read(2)
'bc'


La documentacin de las diferentes clases y mtodos que componen el mdulo
puede encontrarse en el string de documentacin del mdulo uspp.


7. Dnde funciona 
-----------------

La librera ha sido probada en una mquina con Windows 95, Windows XP y
Windows 2000 con Python 2.1+ y en un Linux (con el kernel 2.0.34) con Python
2.1+.


8. Problemas pendientes 
-----------------------




9. Tareas pendientes
--------------------

Esta es la lista de tareas pendientes:

	- implementar el modo RS-485.
	- portar la librera a otras plataformas de forma que sea 
	  realmente multiplataforma.


10. Portado a otras plataformas
-------------------------------

Si quieres portar la librera a otras plataformas slo tienes que seguir
los siguientes pasos:

* Crear un nuevo fichero en python llamado SerialPort_XXX.py en el que
implementes las mismas clases y mtodos pblicos que aparecen en los 
mdulos SerialPort_win y SerialPort_linux.
* Aadir la nueva plataforma en el fichero uspp.py.


11. Licencia
------------

Este cdigo se libera bajo la licencia "LGPL" que puedes encontrar en 
http://www.gnu.org/copyleft/lesser.html o en el fichero lesser.txt que 
acompaa a la librera.
Si utilizas este software estara muy agradecido de saberlo.


12. Autor
---------

Esta librera ha sido creada por Isaac Barona Martnez <ibarona@gmail.com>.


13. Versin
----------

0.1 - 01/09/2001
0.2 - 13/05/2003
1.0 - 24/02/2006

