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?

Swinders
la source
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 ).

Hexelpdkk
la source
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 ().

James Bennet
la source
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
VeggieVampire
la source