¿Cómo puedo conectarme a un dispositivo serial USB?

12

Tengo un dispositivo con un cable de puerto serie USB que me gustaría conectar a mi Raspberry Pi. El chipset para este cable USB a serie es el PL-2303 de Prolific Technology, Inc.

¿Cómo puedo leer datos de la conexión en serie de este dispositivo usando Python?

Swinders
fuente
1
Interesante pregunta. Esto podría ayudar con la parte USB: raspberrypi.stackexchange.com/questions/258/…
Jivings
1
¿Son estas dos preguntas? Específicamente, '¿cómo puedo instalar los controladores para los dispositivos en serie?' y '¿cómo puedo conectarme a un dispositivo serial dentro de Python?'. La pregunta con respecto a los conductores sería larga en este sitio. Sin embargo, la pregunta de Python podría ser más específica para un sitio como StackOverflow. Supongo que la comunicación con un dispositivo serie en Python es la misma, independientemente de la arquitectura basada en Linux o el mecanismo de instalación.
RLH
No debería haber diferencia entre comunicarse con el puerto serie integrado (pines UART) y un puerto serie USB.
Alex Chamberlain
Esta pregunta dice: ¿cómo empiezo con [Configuración \ Prueba de tornasol para PL2303 TTL a serie] ( raspberrypi.stackexchange.com/questions/41553/… )? Una vez que se confirma el hardware, se puede entretener la ejecución de pyserial para extraer datos del puerto serie
gatorback

Respuestas:

7

Para hablar con un dispositivo en serie usando Python, use el módulo pyserial. Si no está disponible en su distribución, se puede instalar obteniendo una copia de la fuente de la página del proyecto pyserial y ejecutando "python setup.py install"

Ejemplos simples de uso de pyserial están disponibles en la breve introducción .

El módulo para el PL-2303 está disponible de forma predeterminada; consulte el repositorio de firmware de GitHub ; cuando conecte el dispositivo, debería verlo encenderse /var/log/messages. Me he conectado a un Arduino, y eso "simplemente funcionó" en el puerto de comunicaciones /dev/ttyUSB0(dispositivo diferente, controlador, chipset, etc., por lo que su kilometraje puede variar ).

Hexelpdkk
fuente
Conecté el dispositivo y ahora veo / dev / ttyUSB0, así que parece que hay una buena posibilidad de que "simplemente funcione".
Swinders
Con pyserial instalado y usando el miniterm de ejemplo, puedo ver los datos del dispositivo :)
Swinders
4

El PL-2303 está bien soportado, y aparecerá como /dev/ttyUSBx. No se necesitan controladores. Léalo como lo haría con cualquier puerto serie normal. No he usado Python, pero en C ++, lo abro () en modo sin bloqueo, selecciono () para ver si hay datos para leer y luego hago una lectura ().

James Bennet
fuente
4

Descargar pySerial ( https://pypi.python.org/pypi/pyserial )

wget http://pypi.python.org/packages/source/p/pyserial/pyserial-2.7.tar.gz?raw=true -O pyserial-2.7.tar.gz
tar -xzf pyserial-2.7.tar.gz
cd pyserial-2.7
sudo python setup.py install

Puede verificar la disponibilidad de ttyUSB con la línea

ls -ltr /dev|grep -i ttyUSB

Para ver la salida en serie, use

tail -f /dev/ttyUSB<NUMBER FROM ABOVE>

Para romper crtl + c

Crea un archivo testserial.py pega este código

#!/usr/bin/python
from time import sleep
import serial

# Establish the connection on a specific port
ser = serial.Serial('/dev/ttyUSB0', 9600) 

x = 1 while True:
       print ser.readline() # Read the newest output 
       x += 1
Veggie Vampiro
fuente