Skip to content
An object-oriented interface for the Comedi drivers
Python Shell
Branch: master
Clone or download
Pull request Compare This branch is even with wking:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.be
doc
pycomedi
.gitignore
.mailmap
.update-copyright.conf
COPYING
MANIFEST.in
README
setup.py
test.sh

README

This package provides an object-oriented interface to the Comedi_
drivers.  The standard Python interface bundled with Comedilib is a
simple SWIG clone of the C interface.  In pycomedi, we convert the
functions into class methods (see ``pycomedi.classes``), so you don't
have to worry about dragging around opaque types like ``comedi_t *``
device pointers.  We also bundle related constants together in
``_Enums`` and ``_Flags`` (see ``pycomedi.constants``), to make
handling common operations like flag manipulations simpler.  Finally,
there are a number of utility classes (see ``pycomedi.utility``) to
make common tasks like creating instructions or reading hardware-timed
analog input easier.


Installation
============

Packages
--------

Gentoo
~~~~~~

I've packaged pycomedi for Gentoo.  You need layman_ and my `wtk
overlay`_.  Install with::

    # emerge -av app-portage/layman
    # layman --add wtk
    # emerge -av dev-python/pycomedi


Dependencies
------------

If you're installing by hand or packaging pycomedi for another
distribution, you'll need the following dependencies:

============  ===================  ================  ==============================
Package       Purpose              Debian_           Gentoo_
============  ===================  ================  ==============================
NumPy_        ?                    python-numpy      dev-python/numpy
SciPy_        testing              python-scipy      sci-libs/scipy
Comedi_       Comedilib interface  python-comedilib  sci-libs/comedilib [#wtk]_
nose_         testing              python-nose       dev-python/nose
Cython_       Comedilib interface  cython            dev-python/cython
python-kmod_  Optional ext. info.                    dev-python/python-kmod [#wtk]_
============  ===================  ================  ==============================

.. [#wtk] In the `wtk overlay`_.

If python-kmod is installed, you will get additional module
information from the ``info.py`` demo program.  If it is not
installed, everything will still work, but ``info.py`` will only be
able to get the module version, not the kernel version, staging-ness,
parameters, etc.


Installing by hand
------------------

Pycomedi is available as a Git_ repository::

    $ git clone git://tremily.us/pycomedi.git


See the homepage_ for details.  To install the checkout, run the
standard::

    $ python setup.py install


Usage
=====

See the examples in the ``doc`` directory.


Testing
=======

Run integration tests with::

    $ nosetests --with-doctest --doctest-extension=txt doc

The analog integration tests read from analog input channels 0 through
3, and write to analog output channels 0 and 1, so you'll need a board
with that many channels.  You should also make sure that the analog
output channels aren't plugged into anything sensetive, since the
tests sweep their output around over a reasonable chunk of the channel
range.  Some of the internal unit tests also write, so it's safest to
just disconnect all digital lines and analog outputs before running
the tests.

Run both integration tests and internal unit tests with::

    $ ./test.sh


Licence
=======

This project is distributed under the `GNU General Public License
Version 2`_ or greater.


Author
======

W. Trevor King
wking@tremily.us


.. _Comedi: http://www.comedi.org/
.. _layman: http://layman.sourceforge.net/
.. _wtk overlay: http://blog.tremily.us/posts/Gentoo_overlay/
.. _science overlay: http://overlays.gentoo.org/proj/science/wiki/en
.. _Debian: http://www.debian.org/
.. _Gentoo: http://www.gentoo.org/
.. _NumPy: http://numpy.scipy.org/
.. _SciPy: http://www.scipy.org/
.. _nose: http://somethingaboutorange.com/mrl/projects/nose/
.. _Cython: http://www.cython.org/
.. _python-kmod: https://github.com/agrover/python-kmod/
.. _Git: http://git-scm.com/
.. _homepage: http://blog.tremily.us/posts/pycomedi/
.. _GNU General Public License Version 2:
     http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
You can’t perform that action at this time.