Diferencia entre revisiones de «Tutorial:Puerto serie en Linux»
(→Puerto serie y Linux) |
|||
Línea 60: | Línea 60: | ||
| /dev/ttyUSBnn || n-ésimo conversor USB-serie | | /dev/ttyUSBnn || n-ésimo conversor USB-serie | ||
|} | |} | ||
+ | |||
+ | La forma de acceder al puerto serie es la misma que para trabajar con cualquier otro fichero. Se usan las llamadas '''read()''' y '''write()''' para leer y escribir respectivamente. Pero a diferencia de los archivos normales, '''antes de usar el puerto serie es necesario configurarlo''', estableciendo la velocidad de trabajo y su modo de funcionamiento. | ||
== Ejemplo 1: enviar/recibir cadenas == | == Ejemplo 1: enviar/recibir cadenas == |
Revisión del 01:47 20 ene 2009
Contenido
Introducción
Breve tutorial sobre cómo manejar el puerto serie desde Linux. Yo lo utilizo para comunicarme con microcontroladores externos y para el control de mis robots. Aunque nuestro ordenador no disponga de puerto serie, no hay problema. Se pueden utilizar conversores USB-serie.
Los ejemplos de este tutorial se han probado en la distribución de Linux Debian/Lenny (5.0)
Compilación
Para compilar los ejemplos, seguir los siguientes pasos:
- Descargar el paquete con los ejemplos:
- Descomprimirlo
- Entrar en el directorio serial-1.0
- Ejecutar make
$ make gcc -o serial.o -c serial/serial.c gcc -Iserial -c -o send_receive_ex/send_receive.o send_receive_ex/send_receive.c gcc -o send_receive send_receive_ex/send_receive.o serial.o gcc -Iserial -c -o term_ex/term.o term_ex/term.c gcc -Iserial -c -o term_ex/console_io.o term_ex/console_io.c gcc -o term term_ex/term.o term_ex/console_io.o serial.o
Pruebas con el puerto serie
Para probar los ejemplos de este tutorial es necesario tener conectado un dispositivo al puerto serie que nos haga "eco" de todo lo recibido. De esta manera se puede verificar que el software del PC está funcionando correctamente.
Existen varias alternativas:
- Alternativa 1: Utilizar un cable para unir los pines 2 y 3 del puerto serie. Todo lo que se envíe por el pin de transmisión (TX) se recibirá automáticamente por el de recepción (RX).
- Alternativa 2: Utilizar un microcontrolador externo que ejecute un firmware para hacer eco. Esta es la opción que se ha usado para probar los ejemplos de este tutorial. Se ha utilizado la tarjeta Skypic
Pruebas con la tarjeta Skypic
- Tarjeta Skypic, conectada al PC por medio de un cable serie o conversor USB-serie
- El firmware grabado es el Servidor de eco
- Si se conecta la tarjeta Freeleds al puerto B de la Skypic, se podrá ver en binario todo lo que se ha recibido.
- La Skypic se configura muy fácilmente para este ejemplo ejecutando el programa Pydownloader-wx y pulsando el botón de "ECO", que descarga automáticamente el servidor de eco.
Puerto serie y Linux
Los nombres que se dan en Linux a los dispositivos serie son:
Nombre del dispositivo | Descripción |
---|---|
/dev/ttyS0 | Primer puerto serie nativo. (Equivalente a COM1 en Windows) |
/dev/ttyS1 | Segundo puerto serie nativo. (Equivalente a COM2 en Windows) |
/dev/ttySnn | n-ésimo puerto serie nativo |
/dev/ttyUSB0 | Conversor USB-serie 1 |
/dev/ttyUSB1 | Conversor USB-serie 2 |
/dev/ttyUSBnn | n-ésimo conversor USB-serie |
La forma de acceder al puerto serie es la misma que para trabajar con cualquier otro fichero. Se usan las llamadas read() y write() para leer y escribir respectivamente. Pero a diferencia de los archivos normales, antes de usar el puerto serie es necesario configurarlo, estableciendo la velocidad de trabajo y su modo de funcionamiento.
Ejemplo 1: enviar/recibir cadenas
Código fuente
send_receive.c | Fuentes del ejemplo, en el SVN |
Ejemplo 2: Mini-terminal
Código fuente
term.c | Fuentes del terminal, en el SVN |
console_io.c | Fuentes de las Rutinas para control del teclado, en el SVN |
Módulo serial.c
serial.c | Fuentes del módulo para comunicaciones serie (en el SVN) |
serial.h | Ficheros de cabecera |
Descarga de los ejemplos
Versión: 1.0
Fichero | Descripción |
---|---|
[] | Fuentes |
[] | Binarios compilados (Debian Lenny 5.0) |
Licencia
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Spain License. |
El código está liberado bajo licencia GPLv3 |
Autor
Enlaces
Repositorio
- SVN del proyecto http://svn.iearobotics.com/serial/
Para obtener la última versión del SVN:
svn co http://svn.iearobotics.com/serial/trunk
Noticias
- 19/Enero/2009: Comenzada esta página