Jak zaprogramować urządzenie USB w Debian / Python

29

Pi jest promowany jako urządzenie edukacyjne przede wszystkim dla Pythona. W związku z tym istnieje już kilka świetnych przykładów osób uzyskujących dostęp do GPIO z Pythona.

Jednak większość gotowych urządzeń peryferyjnych (a nie domowych napojów) ma interfejsy USB. Jak można uzyskać do nich dostęp za pomocą standardowej karty Debian / Python? Czy dostępna jest biblioteka Python i dobry samouczek?

winwaed
źródło
1
Myślę, że to musi być bardziej szczegółowe. Co dokładnie próbujesz zrobić z USB?
Jivings
To bardzo dobre pytanie, zawsze zastanawiałem się, jak zrobić urządzenia USB.
Shane Hudson,
1
Konkretną aplikacją, którą mam na myśli, jest system typu JMRI, aby uzyskać dostęp do interfejsu kontrolera DCC modelu kolejowego (np. Takiego jak Digitrax PR3). Ale to jest zbyt specyficzne dla tej strony! Pytanie skierowane jest na niższy poziom „jak rozmawiać z dowolnym urządzeniem na USB z Pythona” - domyślnie zakłada się, że programista posiada dokumentację protokołu dla urządzenia, które chce zaprogramować.
wygrał
Będę uważnie obserwować to pytanie. Patrzę na dwa ekrany dotykowe, oba z prostymi zestawami poleceń ASCII i interfejsami USB, które chcę wypróbować z RasPi.
Ray Depew,

Odpowiedzi:

11

USB jest sercem tylko szeregowym urządzeniem komunikacyjnym. Sposób przekazywania danych jest standardem, ale to, z czego te dane się składają, zależy od urządzenia. Producent kontrolera wymyśli interfejs API składający się z poleceń i komunikatów w postaci „zrób to” lub „to się dzieje”

Jeśli znasz ten interfejs, powinieneś być w stanie się komunikować. Dwa potencjalnie pomocne linki to

https://walac.github.io/pyusb/

https://web.archive.org/web/20130327005316/http://www.digitalmihailo.com/post/usb-programming-with-python-on-linux

Cennym źródłem informacji jest USB Complete

David Sykes
źródło
Dzięki - tak, to był poziom, na który chciałem zadać pytanie. Protokoły / interfejsy API produktów dla określonych urządzeń peryferyjnych to inne pytania lub kwestie dotyczące dokumentacji dostawcy.
wygrał
2

Wklejam to tutaj dla każdego innego na tropie króliczka, którym byłem dzisiaj (5 października 2014 r.). UWAGA: pochodzi od bardzo niedoświadczonego PoV, więc może to być oczywiste dla wielu z was, ale nie było to dla mnie i zajęło mi to trochę czasu, aby się zorientować.

Próbuję podłączyć prosty laserowy skaner kodów kreskowych do RaspberryPi B + przez USB, dosłownie nie ma doświadczenia z Linux / RBPi itp. W końcu wyszukiwanie Google przywiodło mnie na tę stronę.

Dotarłem do odpowiedzi udzielonej przez Davida Sykesa 15 czerwca 2012 r. Z referencją PyUSB i stamtąd znalazłem ADAFruit's Installing Python & PyUSB , jako część hakowania Microsoft Kinect ..

Wydaje mi się, że mógłbym sobie z tym poradzić dość szybko, gdyby był na moim komputerze. Ale robienie tego przez RaspberryPi naprawdę rzuciło mnie na pętlę. Jeśli przeczytasz ten przewodnik, trafisz na tę samą przeszkodę, którą zrobiłem, w której nie możesz pobierać rzeczy i nie możesz po prostu mieszać rzeczy, które mówią bez plików. Jak zdobyć pliki, jeśli nie możesz ich pobrać? [Być może istnieje sposób na pobranie tych plików, ale na moim Pi ciągle pojawiał się błąd 400 w źródłowej kuźni i Midori nie pobierał plików Tar ani Zip.]

Odwoływanie Walac za PyUSB , można wprowadzić do pierwszej części do LXTerminal aby uzyskać libusb ale potem następnego polecenia podane zakłada masz pliki do PyUSB i że można je zlokalizować za pośrednictwem katalogu.

Więc TUTAJ są moje zmienione kroki, aby zainstalować LibUSB i PyUSB na RaspberryPi:

Kolejność poleceń, które wprowadziłem do LXTerminal:

sudo apt-get install python libusb-1.0

Potwierdź za pomocą Y

sudo apt-get install python-pip

następnie

sudo pip install --upgrade pyusb

UWAGA: niektóre z nich mogą już być na twoim RBPi w zależności od tego, co zrobiłeś wcześniej, ale ponowne wykonanie poleceń nie zaszkodzi, po prostu powiedziałem, że plik jest aktualny.

Ostatnie polecenie „- upgrade pyusb” dało mi następujące informacje:

Downloading/unpacking pyusb
Downloading pyusb-1.0.0b1.tar.gz (44Kb): 44Kb downloaded
Running setup.py egg_info for package pyusb

Installing collected packages: pyusb
Running setup.py install for pyusb

Successfully installed pyusb
Cleaning up...

Więc myślę, że teraz wszystko jest dobrze i mogę wrócić do moich samouczków.

Ponownie używam RaspberryPi B +, standardowej instalacji NOOBS. Najczęściej odwoływałem się do źródeł, takich jak system LEARN ADAFRUIT, który został wykonany głównie z modelem B, ale wszystko, co do tej pory zrobiłem, działa na B +.

Mam nadzieję, że te informacje pomogą każdemu, kto utknął w tym samym momencie.

B1llaB0ng23
źródło