Comment puis-je me connecter à un périphérique série USB?


12

J'ai un appareil avec un câble de port série USB que je voudrais connecter à mon Raspberry Pi. Le chipset pour ce câble USB vers série est le PL-2303 de Prolific Technology, Inc.

Comment lire les données de la connexion série de cet appareil à l'aide de Python?


1
Question interessante. Cela pourrait aider avec la partie USB: raspberrypi.stackexchange.com/questions/258/…
— Jivings

1
Est-ce deux questions? Plus précisément, "comment puis-je installer les pilotes pour les périphériques série?" et 'comment puis-je me connecter à un périphérique série dans Python?'. La question des chauffeurs serait longue sur ce site. Cependant, la question Python peut être plus spécifique à un site comme StackOverflow. Je suppose que la communication avec un périphérique série sur Python est la même, quelle que soit l'architecture basée sur Linux ou le mécanisme d'installation.
— RLH

Il ne devrait y avoir aucune différence entre communiquer avec le port série intégré (broches UART) et un port série USB.
— Alex Chamberlain

Cette question se lit comme suit: comment démarrer avec [Configuration \ Test Litmus pour PL2303 TTL vers série] ( raspberrypi.stackexchange.com/questions/41553/… )? Une fois que le matériel est confirmé, alors on peut divertir l'exécution de pyserial pour extraire les données du port série
— gatorback

Réponses:


7

Pour parler à un périphérique série à l'aide de Python, utilisez le module pyserial. S'il n'est pas disponible dans votre distribution, il peut être installé en obtenant une copie de la source à partir de la page du projet physique et en exécutant "python setup.py install"

Des exemples simples d'utilisation de pyserial sont disponibles dans la courte introduction .

Le module du PL-2303 est disponible par défaut - voir le référentiel du firmware GitHub - lorsque vous branchez l'appareil, vous devriez le voir s'allumer /var/log/messages. Je me suis connecté à un Arduino, et cela "a juste fonctionné" sur le port de communication /dev/ttyUSB0(périphérique différent, pilote, chipset, etc., donc votre kilométrage peut varier ).


J'ai connecté l'appareil et je vois maintenant / dev / ttyUSB0, il semble donc qu'il y a de fortes chances que cela "fonctionne juste".
— Swinders

Avec pyserial installé et en utilisant l'exemple de miniterm, je peux voir les données de l'appareil :)
— Swinders

4

Le PL-2303 est bien pris en charge et il apparaîtra comme /dev/ttyUSBx. Aucun pilote n'est nécessaire. Lisez-le comme vous le feriez pour n'importe quel port série normal. Je n'ai pas utilisé Python, mais en C ++, je l'ouvre () en mode non bloquant, sélectionne () pour voir s'il y a des données à lire, puis fais une lecture ().


4

Téléchargez 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

Vous pouvez vérifier la disponibilité de ttyUSB avec la ligne

ls -ltr /dev|grep -i ttyUSB

Pour afficher la sortie série, utilisez

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

Pour décomposer crtl + c

Créer un fichier testserial.py coller ce code

#!/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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.