Jak mogę podłączyć się do urządzenia szeregowego USB?

12

Mam urządzenie z kablem portu szeregowego USB, który chciałbym podłączyć do mojego Raspberry Pi. Chipset tego kabla USB do portu szeregowego to PL-2303 firmy Prolific Technology, Inc.

Jak mogę odczytać dane z połączenia szeregowego tego urządzenia za pomocą Pythona?

Oszuści
źródło
1
Interesujące pytanie. Może to pomóc w części USB: raspberrypi.stackexchange.com/questions/258/…
Jivings,
1
Czy to dwa pytania? W szczególności „jak mogę zainstalować sterowniki urządzeń szeregowych?” i „jak mogę połączyć się z urządzeniem szeregowym w Pythonie?”. Pytanie dotyczące sterowników byłoby długie na tej stronie. Jednak pytanie w języku Python może być bardziej szczegółowe dla witryny takiej jak StackOverflow. Zakładam, że komunikacja z urządzeniem szeregowym w Pythonie jest taka sama, niezależnie od architektury opartej na systemie Linux lub mechanizmu instalacji.
RLH
Nie powinno być różnicy między komunikacją z wbudowanym portem szeregowym (styki UART) a portem szeregowym USB.
Alex Chamberlain,
To pytanie brzmi: jak zacząć z [Konfiguracja \ Litmus test dla PL2303 TTL na szeregowy] ( raspberrypi.stackexchange.com/questions/41553/… )? Gdy sprzęt zostanie potwierdzony, można zabezpieczyć uruchomioną aplikację pyserial, aby pobrać dane z portu szeregowego
gatorback

Odpowiedzi:

7

Aby rozmawiać z urządzeniem szeregowym za pomocą Pythona, użyj modułu pyserial. Jeśli nie jest dostępny w Twojej dystrybucji, można go zainstalować, pobierając kopię źródła ze strony projektu Pyserial i uruchamiając „Python setup.py install”

Proste przykłady użycia pyserial są dostępne w krótkim wstępie .

Moduł dla PL-2303 jest domyślnie dostępny - zobacz repozytorium oprogramowania układowego GitHub - po podłączeniu urządzenia powinieneś zobaczyć, jak się uruchamia /var/log/messages. Połączyłem się z Arduino i to „po prostu działało” na porcie komunikacyjnym /dev/ttyUSB0(inne urządzenie, sterownik, mikroukład itp., Więc przebieg może się różnić ).

Hexelpdkk
źródło
Podłączyłem urządzenie i teraz widzę / dev / ttyUSB0, więc wygląda na to, że istnieje spora szansa, że ​​„po prostu zadziała”.
Swinders,
Z zainstalowanym pyserial i korzystając z przykładowego miniterma widzę dane z urządzenia :)
Swinders
4

PL-2303 jest dobrze obsługiwany i będzie wyglądał jak /dev/ttyUSBx. Nie są potrzebne sterowniki. Przeczytaj to tak jak każdy normalny port szeregowy. Nie korzystałem z Pythona, ale w C ++ otwieram () w trybie nieblokującym, wybieram (), aby sprawdzić, czy są dane do odczytania, a następnie wykonuję read ().

James Bennet
źródło
4

Pobierz 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

Możesz sprawdzić dostępność ttyUSB za pomocą linii

ls -ltr /dev|grep -i ttyUSB

Aby wyświetlić wyjście szeregowe, użyj

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

Aby przełamać crtl + c

Utwórz plik testserial.py wklej ten kod

#!/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
źródło