Come programmare un dispositivo USB con Debian / Python


29

Il Pi viene promosso come dispositivo educativo principalmente per Python. In linea con questo, ci sono già stati alcuni grandi esempi online di persone che accedono al GPIO da Python.

Tuttavia, la maggior parte delle periferiche standard (piuttosto che della birra fatta in casa) hanno interfacce USB. Come si fa ad accedervi usando la scheda Debian / Python standard? C'è una libreria Python disponibile e un buon tutorial?


1
Penso che questo debba essere più specifico. Cosa stai cercando di fare esattamente con USB?
Jivings,

Questa è un'ottima domanda, mi sono sempre chiesto come realizzare dispositivi USB.
Shane Hudson,

1
L'applicazione specifica che ho in mente è un sistema di tipo JMRI per accedere a un'interfaccia controller DCC modello ferroviario (ad es. Digitrax PR3). Ma è troppo specifico per questo sito! La domanda è rivolta al livello inferiore "come posso parlare con qualsiasi dispositivo su USB da Python" - si presuppone implicitamente che il programmatore abbia la documentazione del protocollo per il dispositivo che desidera programmare.
vinto il

Guarderò attentamente questa domanda. Sto guardando due display touch panel, entrambi con semplici set di comandi ASCII e interfacce USB, che voglio provare con RasPi.
Ray Depew,

Risposte:


11

USB è al centro solo un dispositivo di comunicazione seriale. La modalità di comunicazione dei dati è standard, ma la loro composizione dipende dal dispositivo. Il produttore del controller avrà inventato un'API che consiste di comandi e messaggi del modulo "fai questo" o "sta succedendo"

Se conosci questa API dovresti essere in grado di comunicare. Due collegamenti forse utili sono

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

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

Una preziosa fonte di informazioni è USB Complete


Grazie - sì, questo è il tipo di livello che stavo mirando alla mia domanda. I protocolli / le API del prodotto per periferiche specifiche sono altre domande o una questione relativa alla documentazione del fornitore.
vinto il

2

Incollando questo qui per chiunque altro sulla pista da coniglio che ero oggi (5 ottobre 2014). NOTA: questo proviene da un PoV molto inesperto, quindi potrebbe essere ovvio per molti di voi, ma non è stato per me e ci è voluto del tempo per capire.

Sto cercando di interfacciare un semplice scanner di codici a barre laser a un RaspberryPi B + tramite USB, letteralmente nessuna esperienza con Linux / RBPi ecc. Alla fine la ricerca di Google mi ha portato a questa pagina.

Sono arrivato alla risposta fornita da David Sykes il 15 giugno 2012 con il riferimento PyUSB e da lì ho trovato Installazione di Python & PyUSB di ADAFruit , come parte del loro hacking di un Microsoft Kinect.

Sento che avrei potuto superarlo abbastanza rapidamente se fosse solo sul mio PC. Ma farlo attraverso un RaspberryPi mi ha davvero fatto impazzire. Se leggi quella guida, colpirai lo stesso roadblock che ho fatto dove non puoi scaricare roba e non puoi semplicemente schiacciare le cose che dicono senza i file. Quindi, come si ottengono i file se non è possibile scaricarli? [Forse c'è un modo per scaricare questi file, ma sul mio Pi ho continuato a ricevere un errore 400 sulla fucina di origine e Midori non scaricava i file Tar o Zip.]

Facendo riferimento a PyUSB di Walac , è possibile accedere alla prima parte in LXTerminal per ottenere libusb ma poi il comando successivo dato presuppone che si abbiano i file per PyUSB e che sia possibile individuarli attraverso la directory.

Quindi QUI sono i miei passi alterati per installare LibUSB e PyUSB su un RaspberryPi:

Ordine dei comandi che ho inserito nel Terminale LX:

sudo apt-get install python libusb-1.0

Confermare con Y

sudo apt-get install python-pip

poi

sudo pip install --upgrade pyusb

NOTA: alcuni di questi potrebbero essere già presenti sul tuo RBPi a seconda di ciò che hai fatto prima, ma ripetere i comandi non lo danneggerà, mi ha semplicemente detto che il file era aggiornato.

L'ultimo comando "--upgrade pyusb" mi ha dato quanto segue:

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

Quindi, penso che ora vada tutto bene e posso tornare ai miei tutorial.

Ancora una volta, sto usando un RaspberryPi B +, installazione standard di NOOBS. Ho principalmente fatto riferimento a fonti come il sistema LEARN di ADAFRUIT che è stato realizzato principalmente con il Modello B, ma tutto ciò che ho fatto finora sta lavorando su B +.

Spero che queste informazioni possano aiutare chiunque sia rimasto bloccato nello stesso punto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.