Wie kann ich ein serielles USB-Gerät anschließen?

12

Ich habe ein Gerät mit einem seriellen USB-Anschlusskabel, das ich an meinen Raspberry Pi anschließen möchte. Der Chipsatz für dieses USB-Seriell-Kabel ist der PL-2303 von Prolific Technology, Inc.

Wie kann ich mit Python Daten von der seriellen Verbindung dieses Geräts lesen?

Betrüger
quelle
1
Interessante Frage. Dies könnte mit dem USB-Teil helfen: raspberrypi.stackexchange.com/questions/258/…
Jivings
1
Sind das zwei Fragen? Insbesondere: "Wie kann ich die Treiber für die seriellen Geräte installieren?" und 'Wie kann ich mich mit einem seriellen Gerät in Python verbinden?'. Die Frage nach Treibern wäre auf dieser Seite lang. Die Python-Frage ist jedoch möglicherweise spezifischer für eine Site wie StackOverflow. Ich gehe davon aus, dass die Kommunikation mit einem seriellen Gerät unter Python unabhängig von der Linux-basierten Architektur oder dem Installationsmechanismus identisch ist.
RLH
Es sollte keinen Unterschied zwischen der Kommunikation mit dem integrierten seriellen Port (UART-Pins) und einem seriellen USB-Port geben.
Alex Chamberlain
Diese Frage lautet: Wie fange ich mit [Configuration \ Litmus Test für PL2303 TTL to Serial] ( raspberrypi.stackexchange.com/questions/41553/… ) an? Sobald die Hardware bestätigt wird, dann kann man von der seriellen Schnittstelle läuft pyserial zu ziehen Daten unterhalten
Gatorback

Antworten:

7

Verwenden Sie das Pyserial-Modul, um mit einem seriellen Gerät über Python zu kommunizieren. Wenn es in Ihrer Distribution nicht verfügbar ist, kann es installiert werden, indem Sie eine Kopie der Quelle von der pyserial-Projektseite abrufen und "python setup.py install" ausführen.

Einfache Beispiele für die Verwendung von Pyserial finden Sie in der kurzen Einführung .

Das Modul für den PL-2303 ist standardmäßig verfügbar (siehe das Firmware-GitHub-Repository ). Wenn Sie das Gerät anschließen, sollte es gestartet werden /var/log/messages. Ich habe eine Verbindung zu einem Arduino hergestellt, und das "funktionierte" nur am Kommunikationsport /dev/ttyUSB0(anderes Gerät, Treiber, Chipsatz usw., sodass Ihre Laufleistung variieren kann ).

Hexelpdkk
quelle
Das Gerät ist angeschlossen und ich sehe jetzt / dev / ttyUSB0. Es sieht also so aus, als gäbe es eine gute Chance, dass es "einfach funktioniert".
Swinders
Wenn pyserial installiert ist und ich das Beispiel-Miniterm verwende, kann ich die Daten vom Gerät sehen :)
Swinders
4

Der PL-2303 wird gut unterstützt und es wird angezeigt als /dev/ttyUSBx. Es werden keine Treiber benötigt. Lesen Sie es wie jede normale serielle Schnittstelle. Ich habe Python nicht verwendet, aber in C ++ öffne () ich es im nicht blockierenden Modus, wähle (), um zu sehen, ob Daten gelesen werden müssen, und lese ().

James Bennet
quelle
4

PySerial herunterladen ( 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

Sie können die Verfügbarkeit von ttyUSB mit der Leitung überprüfen

ls -ltr /dev|grep -i ttyUSB

Verwenden Sie zum Anzeigen der seriellen Ausgabe

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

Strg + c ausbrechen

Erstellen Sie eine Datei testserial.py und fügen Sie diesen Code ein

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