145 lines
4.3 KiB
Plaintext
145 lines
4.3 KiB
Plaintext
PyUSB - USB Access from Python
|
|
==============================
|
|
|
|
The PyUSB module provides Python with easy access to the host
|
|
machine's Universal Serial Bus (USB) system. Although not yet
|
|
complete, PyUSB does provide a core set of functionality around which
|
|
useful applications can be developed.
|
|
|
|
As with most Python modules, PyUSB's documentation is based on Python
|
|
doc strings and can therefore be manipulated by tools such as pydoc.
|
|
|
|
PyUSB was developed and tested on the Slackware GNU/Linux
|
|
distribution and Windows XP Professional. Some testing has been done on Ubuntu,
|
|
Mac OS X and FreeBSD.
|
|
|
|
If you have any question about PyUSB, you can contact the author at
|
|
wander (dot) lairson (at) gmail (dot) com.
|
|
|
|
Installing PyUSB on GNU/Linux Systems
|
|
=====================================
|
|
|
|
These instructions are for Debian-based systems. Instructions for
|
|
other flavors of GNU/Linux should be similar.
|
|
|
|
You will first need to install the following packages:
|
|
|
|
1) python (PyUSB is useless without it)
|
|
2) gcc (the compiler, linker, etc.)
|
|
3) python-dev (includes header files needed to compile PyUSB)
|
|
4) libusb-dev (C library upon which PyUSB is based)
|
|
|
|
For example, the command
|
|
|
|
sudo apt-get install python gcc python-dev libusb-dev
|
|
|
|
should install all these packages on most Debian-based systems with
|
|
access to the proper package repositories.
|
|
|
|
Once the above packages are installed, you can build and install PyUSB
|
|
with the command
|
|
|
|
python setup.py install
|
|
|
|
run as root from within the same directory as this README file.
|
|
|
|
Installing PyUSB on Windows
|
|
===========================
|
|
|
|
These instructions are for installing PyUSB in a Cygwin environment.
|
|
See the end of this section for notes on installing in a Visual C++
|
|
environment.
|
|
|
|
You will first need to install the following software:
|
|
|
|
1) Cygwin: A Linux-like environment for Windows available from
|
|
http://www.cygwin.com. Be sure to include GCC and Python with the
|
|
Cygwin installation.
|
|
|
|
2) libusb-win32: a Windows version of the libusb C library available
|
|
from http://libusb-win32.sourceforge.net.
|
|
|
|
From within a Cygwin terminal, copy the libusb.a file from the
|
|
libusb-win32 lib/ directory to $(CYGWINDIR)/usr/lib/, and copy the
|
|
usb.h file from the libusb-win32 include/ directory to
|
|
$(CYGWINDIR)/usr/include/. You can build and install PyUSB with the
|
|
command
|
|
|
|
python setup.py install
|
|
|
|
run from within the same directory as this README file.
|
|
|
|
To build PyUSB using Visual C++, use Python's distutils tool, which
|
|
might request that .NET SDK Framework be installed first.
|
|
Alternatively, you can use the Visual C++ .NET 2005 project solution
|
|
included in the same directory as this README file. In this case, you
|
|
will need to manually change the project settings to include the
|
|
Python and libusb-win32 headers and libraries in the Visual C++ path.
|
|
|
|
USAGE
|
|
=====
|
|
|
|
This Python program is an example of how PyUSB can be used.
|
|
|
|
#
|
|
# Open a device, look at the alternate interfaces, use the device, and
|
|
# then close the connection.
|
|
#
|
|
|
|
import usb # import the usb module
|
|
|
|
bus = usb.busses() # get a list of all available busses
|
|
|
|
dev = bus[0].devices[0] # choose the first device on the first bus
|
|
|
|
handle = dev.open() # open the device
|
|
|
|
for alt in dev.configurations[0].interfaces[0]:
|
|
print alt # look at the alternate settings.
|
|
|
|
handle.setConfiguration(0) # choose the first configuration
|
|
|
|
handle.claimInterface(0) # choose the first interface
|
|
|
|
### Use the device here. ###
|
|
|
|
handle.releaseInterface() # also called automatically on __del__
|
|
|
|
|
|
TODO/ROADMAP
|
|
============
|
|
|
|
- more tests
|
|
- more samples
|
|
- better documentation
|
|
- utility functions to find devices
|
|
|
|
|
|
ACKNOWLEDGEMENTS
|
|
================
|
|
|
|
Thanks to the following people for their help and contributions to the
|
|
PyUSB project. Where possible, there contributions are noted in the
|
|
source code.
|
|
|
|
- Damian Staniforth
|
|
- Brenno Diegoli
|
|
- Israel Florentino
|
|
- Xiaofan Chen
|
|
- Mario Olimpio de Menezes
|
|
- Renato Manzan
|
|
- Ray Schumacher
|
|
- Mark Rages
|
|
- James Barabas
|
|
- Andrew Rogers
|
|
- Juha Torkkel
|
|
- Josh Lifton
|
|
- David Merrill
|
|
- Srikanth Jandhyala
|
|
- Alexander Krause
|
|
- Yael Maguire
|
|
- Lucio Torre
|
|
- Simeon Miteff
|
|
|
|
PS: this great README file was written by Josh Lifton... :-)
|