# pylibftdi / doc / introduction.rst

 Ben Bass 0b31119 2012-02-02 Ben Bass 67e4b88 2012-12-31 Ben Bass 0b31119 2012-02-02   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 Introduction ============ pylibftdi is a minimal Pythonic interface to FTDI devices using libftdi_. .. _libftdi: http://www.intra2net.com/en/developer/libftdi/ :Features: - Supports Python 2 and Python 3 - Supports parallel and serial devices - Support for multiple devices - File-like interface wherever appropriate - Cross-platform :Limitations: - The API might change prior to reaching a 1.0 release. Usage ----- The primary interface is the Device class in the pylibftdi package; this gives serial access on relevant FTDI devices (e.g. the UM232R), providing a file-like interface (read, write). Baudrate is controlled with the baudrate property. If a Device instance is created with mode='t' (text mode) then read() and write() can use the given encoding (defaulting to latin-1). This doesn't make a lot of difference on Python 2 (and can be omitted), but allows easier integration with passing unicode strings between devices in Python 3. Multiple devices are supported by passing the desired device serial number (as a string) in the device_id parameter - this is the first parameter in both Device() and BitBangDevice() constructors. Alternatively the device 'description' can be given, and an attempt will be made to match this if matching by serial number fails. History & Motivation -------------------- This package is the result of various bits of work using FTDI's devices, primarily for controlling external devices. Some of this is documented on the codedstructure blog, codedstructure.blogspot.com At least two other open-source Python FTDI wrappers exist, and each of these may be best for some projects. * ftd2xx_ - ctypes binding to FTDI's own D2XX driver * pyftdi_ - a C extension libftdi binding .. _ftd2xx: http://pypi.python.org/pypi/ftd2xx .. _pyftdi: http://git.marcansoft.com/?p=pyftdi.git pylibftdi exists in the gap between these two projects; ftd2xx uses the (closed-source) D2XX driver, but provides a high-level Python interface, while pyftdi works with libftdi but is very low-level. The aim for pylibftdi is to work with the libftdi, but to provide a high-level Pythonic interface. Various wrappers and utility functions are also part of the distribution; following Python's batteries included approach, there are various interesting devices supported out-of-the-box - or at least there will be soon! Plans ----- * Add more examples: SPI devices, knight-rider effects, input devices, MIDI... * Perhaps add support for D2XX driver, though the name then becomes a slight liability ;) License ------- Copyright (c) 2010-2013 Ben Bass pylibftdi is released under the MIT licence; see the file "LICENSE.txt" for information. All trademarks referenced herein are property of their respective holders. libFTDI itself is developed by Intra2net AG. No association with Intra2net is claimed or implied, but I have found their library helpful and had fun with it... 
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.