So programmieren Sie ein USB-Gerät mit Debian / Python

29

Der Pi wird vor allem für Python als Lehrmittel beworben. In diesem Zusammenhang gab es bereits einige großartige Online-Beispiele für Benutzer, die von Python aus auf das GPIO zugreifen.

Die meisten handelsüblichen Peripheriegeräte (anstelle von handelsüblichen Geräten) verfügen jedoch über USB-Schnittstellen. Wie kann man mit der Standard-Debian / Python-Karte darauf zugreifen? Gibt es eine Python-Bibliothek und ein gutes Tutorial?

winwaed
quelle
1
Ich denke, das muss genauer sein. Was genau versuchst du mit USB zu tun?
Jivings
Das ist eine sehr gute Frage, ich habe mich immer gefragt, wie man USB-Geräte herstellt.
Shane Hudson
1
Die spezielle Anwendung, an die ich denke, ist ein JMRI-System für den Zugriff auf eine DCC-Controller-Schnittstelle für Modelleisenbahnen (z. B. Digitrax PR3). Aber das ist viel zu spezifisch für diese Seite! Die Frage richtet sich an die untere Ebene "Wie spreche ich mit einem USB-Gerät von Python aus?". Es wird implizit davon ausgegangen, dass der Programmierer über die Protokolldokumentation für das Gerät verfügt, das er programmieren möchte.
winwaed
Ich werde diese Frage genau beobachten. Ich schaue auf zwei Touchscreen-Displays, beide mit einfachen ASCII-Befehlssätzen und USB-Schnittstellen, die ich mit dem RasPi ausprobieren möchte.
Ray Depew

Antworten:

11

USB ist im Kern nur ein serielles Kommunikationsgerät. Wie die Daten übertragen werden, ist Standard, aber woraus diese Daten bestehen, ist geräteabhängig. Ihr Controller-Hersteller hat eine API erfunden, die aus Befehlen und Meldungen der Form "do this" oder "this is happening" besteht.

Wenn Sie diese API kennen, sollten Sie in der Lage sein zu kommunizieren. Zwei möglicherweise hilfreiche Links sind

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

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

Eine wertvolle Informationsquelle ist USB Complete

David Sykes
quelle
Danke - ja, das ist die Art von Level, die ich für meine Frage angestrebt habe. Protokolle / Produkt-APIs für bestimmte Peripheriegeräte sind andere Fragen oder eine Angelegenheit der Dokumentation des Herstellers.
winwaed
2

Das hier einfügen für alle anderen auf der Bunny-Spur, die ich heute war (5. Oktober 2014). HINWEIS: Dies ist von einem sehr unerfahrenen PoV, so dass dies für viele von Ihnen offensichtlich sein kann, aber es war nicht für mich und hat eine Weile gedauert, um herauszufinden.

Ich versuche, einen einfachen Laser-Barcode-Scanner über USB an ein RaspberryPi B + anzuschließen, praktisch keine Erfahrung mit Linux / RBPi usw. Schließlich brachte mich die Google-Suche auf diese Seite.

Ich habe die Antwort von David Sykes am 15. Juni 2012 mit der PyUSB-Referenz erhalten und von dort aus ADAFruits Installation von Python & PyUSB als Teil des Hackings eines Microsoft Kinect gefunden.

Ich glaube, ich hätte es ziemlich schnell schaffen können, wenn es nur auf meinem PC gewesen wäre. Aber dies durch einen RaspberryPi zu tun, warf mich wirklich für eine Schleife. Wenn Sie diesen Leitfaden durchlesen, werden Sie auf die gleiche Straßensperre stoßen, auf der Sie keine Inhalte herunterladen können, und Sie können die darin enthaltenen Informationen nicht einfach ohne die Dateien mischen. Wie erhält man die Dateien, wenn man sie nicht herunterladen kann? [Vielleicht gibt es eine Möglichkeit, diese Dateien herunterzuladen, aber auf meinem Pi wurde immer wieder ein Fehler 400 in Source Forge angezeigt, und Midori hat die Tar- oder Zip-Dateien nicht heruntergeladen.]

Referenzierung Walac des PyUSB , können Sie zum ersten Teil in die LXTerminal bekommt Libusb eingeben , aber dann der gegebenen nächste Befehl vorausgesetzt , dass Sie die Dateien für PyUSB haben und dass Sie sie durch das Verzeichnis suchen können.

Also HIER sind meine geänderten Schritte, um LibUSB und PyUSB auf einem RaspberryPi zu installieren:

Reihenfolge der Befehle, die ich in das LXTerminal eingegeben habe:

sudo apt-get install python libusb-1.0

Bestätigen Sie mit Y

sudo apt-get install python-pip

dann

sudo pip install --upgrade pyusb

HINWEIS: Je nachdem, was Sie zuvor getan haben, ist möglicherweise bereits ein Teil davon auf Ihrem RBPi vorhanden. Wenn Sie die Befehle jedoch erneut ausführen, wird dies nicht schaden. Es wurde lediglich gemeldet, dass die Datei auf dem neuesten Stand war.

Der letzte Befehl "--upgrade pyusb" gab mir folgendes:

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...

Ich denke, jetzt ist alles in Ordnung und ich kann zu meinen Tutorials zurückkehren.

Auch hier verwende ich eine RaspberryPi B + -Standard-NOOBS-Installation. Ich habe meistens auf Quellen wie das LEARN-System von ADAFRUIT verwiesen, das hauptsächlich mit dem Modell B erstellt wurde, aber alles, was ich bisher getan habe, funktioniert auf dem B +.

Hoffentlich helfen diese Informationen allen anderen, die an diesem Punkt feststeckten.

B1llaB0ng23
quelle