Cómo programar un dispositivo USB con Debian / Python

29

El Pi se promociona como un dispositivo educativo principalmente para Python. En línea con esto, ya ha habido algunos excelentes ejemplos en línea de personas que acceden al GPIO desde Python.

Sin embargo, la mayoría de los periféricos comerciales (en lugar de cerveza casera) tienen interfaces USB. ¿Cómo se accede a estos utilizando la tarjeta Debian / Python estándar? ¿Hay una biblioteca de Python disponible y un buen tutorial?

winwaed
fuente
1
Creo que esto debe ser más específico. ¿Qué estás tratando de hacer con USB exactamente?
Jivings
Esta es una muy buena pregunta, siempre me he preguntado cómo hacer dispositivos USB.
Shane Hudson
1
La aplicación específica que tengo en mente es un sistema de tipo JMRI para acceder a un modelo de interfaz de controlador de ferrocarril DCC (por ejemplo, como Digitrax PR3). ¡Pero eso es demasiado específico para este sitio! La pregunta está dirigida al nivel inferior "¿cómo puedo hablar con cualquier dispositivo en USB desde Python"? Se supone implícitamente que el programador tiene la documentación del protocolo para el dispositivo que desean programar.
winwaed
Voy a ver esta pregunta con cuidado. Estoy mirando dos pantallas táctiles, ambas con conjuntos de comandos ASCII simples e interfaces USB, que quiero probar con el RasPi.
Ray Depew

Respuestas:

11

USB es en esencia un dispositivo de comunicación en serie. La forma en que se comunican los datos es estándar, pero en qué consisten esos datos depende del dispositivo. El fabricante de su controlador habrá inventado una API que consta de comandos y mensajes de la forma 'hacer esto' o 'esto está sucediendo'

Si conoce esta API, debería poder comunicarse. Dos enlaces posiblemente útiles son

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

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

Una fuente valiosa de información es USB Complete

David Sykes
fuente
Gracias, sí, ese es el tipo de nivel al que apuntaba mi pregunta. Los protocolos / API de productos para periféricos específicos son otras preguntas o un asunto para la documentación del proveedor.
winwaed
2

Pegar esto aquí para cualquier otra persona en el camino del conejito que estaba hoy (5 de octubre de 2014). NOTA: esto es de un punto de vista muy inexperto, por lo que esto puede ser obvio para muchos de ustedes, pero no fue para mí y tardé un tiempo en descubrirlo.

Estoy tratando de conectar un escáner láser de código de barras simple a un RaspberryPi B + a través de USB, literalmente no tengo experiencia con Linux / RBPi, etc. Finalmente, la búsqueda en Google me llevó a esta página.

Llegué a la respuesta proporcionada por David Sykes el 15 de junio de 2012 con la referencia de PyUSB y desde allí encontré la instalación de ADAFruit Python y PyUSB , como parte de su pirateo de un Microsoft Kinect.

Siento que podría haberlo superado bastante rápido si solo estuviera en mi PC. Pero hacer esto a través de un RaspberryPi realmente me estaba volviendo loco. Si lees esa guía, encontrarás el mismo obstáculo que hice donde no puedes descargar cosas y no puedes simplemente mezclar las cosas que dicen sin los archivos. Entonces, ¿cómo obtienes los archivos si no puedes descargarlos? [Quizás haya una manera de descargar estos archivos, pero en mi Pi seguía recibiendo un Error 400 en la falsificación de origen y Midori no descargaba los archivos Tar o Zip.]

Haciendo referencia a PyUSB de Walac , puede ingresar a la primera parte en el terminal LX para obtener libusb, pero luego el siguiente comando supone que tiene los archivos para PyUSB y que puede ubicarlos a través del directorio.

Así que AQUÍ están mis pasos alterados para obtener LibUSB y PyUSB instalados en un RaspberryPi:

Orden de comandos que ingresé en el LXTerminal:

sudo apt-get install python libusb-1.0

Confirmar con Y

sudo apt-get install python-pip

luego

sudo pip install --upgrade pyusb

NOTA: es posible que parte de esto ya esté en su RBPi dependiendo de lo que haya hecho antes, pero hacer los comandos nuevamente no lo dañará, simplemente me dijo que el archivo estaba actualizado.

El último comando "--upgrade pyusb" me dio lo siguiente:

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

Entonces, creo que todo está bien ahora y puedo volver a mis tutoriales.

Nuevamente, estoy usando un RaspberryPi B +, instalación NOOBS estándar. La mayoría de las veces hice referencia a fuentes como el sistema LEARN de ADAFRUIT que se hizo principalmente con el Modelo B, pero todo lo que he hecho hasta ahora está funcionando en B +.

Esperemos que esa información ayude a cualquier otra persona que se haya quedado atascada en ese mismo punto.

B1llaB0ng23
fuente